文档 / 入门 / 安装

安装

在一分钟内在干净的服务器上运行 sh0。一条命令下载二进制文件——sh0 自动处理所有依赖。

系统需求

要求最低推荐
操作系统Linux(任意发行版)Ubuntu 22.04+ / Debian 12+
内存1 GB2 GB+
磁盘10 GB20 GB+ (SSD)
CPU1 vCPU2 vCPUs+
Docker如果缺失,sh0 自动安装
Note
空闲时,sh0 及其 Caddy 合计占用约 140 MB 内存。RAM 需求主要来自 Docker 和你部署的应用。1 GB 的服务器可以舒适地运行 sh0 加 2-3 个小型应用。

支持的平台

sh0 为以下架构提供预构建的二进制文件:

  • x86_64 (AMD64) -- 大多数云服务器和 VPS 提供商
  • aarch64 (ARM64) -- AWS Graviton、Oracle Ampere、Raspberry Pi 4+
零依赖
sh0 应安装在干净的服务器上。以 root 身份运行 sh0 serve 时,它会自动检测并安装 Docker 和 Caddy(如果缺失)。无需手动设置。

安装 sh0

快速安装(推荐)

安装脚本自动检测你的架构、下载最新二进制文件并设置 systemd 服务:

Terminal
curl -fsSL https://get.sh0.dev | bash
Terminal output showing the sh0 install script downloading the binary, setting permissions, and starting the service
安装脚本在几秒内完成

脚本执行以下步骤:

  1. 检测 CPU 架构(x86_64 或 aarch64)
  2. 将最新的 sh0 二进制文件下载到 /usr/local/bin/sh0
  3. 设置可执行权限
  4. 创建 systemd 服务单元
  5. 启用并启动服务

手动下载

如果您希望手动安装,请从 GitHub 下载发布压缩包,并在解压前用发布的校验和进行核对:

Terminal
# Download the archive and the checksums (use sh0-linux-arm64.tar.gz on ARM64)
curl -fsSLO https://github.com/zerosuite-inc/sh0/releases/latest/download/sh0-linux-x64.tar.gz
curl -fsSLO https://github.com/zerosuite-inc/sh0/releases/latest/download/checksums.txt

# Check the archive, then extract it
sha256sum --ignore-missing -c checksums.txt
tar -xzf sh0-linux-x64.tar.gz

# Install the binary
sudo install -m 0755 sh0 /usr/local/bin/sh0
sh0 --version
Output
sh0-linux-x64.tar.gz: OK
sh0 1.10.2

手动安装不会创建 systemd 服务:请按下文说明进行配置,然后启动它。

验证安装

检查 sh0 是否已安装并运行:

Terminal
# Check the version
sh0 --version

# Check the service status
systemctl status sh0

# Verify the API answers
curl -s http://localhost:9000/api/v1/health
Terminal showing sh0 version output and systemctl status showing the service as active and running
健康运行的 sh0 安装

健康端点应返回确认服务器正在运行的 JSON 响应:

Health Response
{"data":{"license":{"plan":"business","status":"active"},"mode":"selfhosted","needs_setup":false,"status":"ok","version":"1.10.3-rc9"}}

Systemd 服务设置

如果您使用了快速安装脚本,systemd 服务已经配置好。手动安装时,请创建与安装程序写入的相同的服务文件:

/etc/systemd/system/sh0.service
[Unit]
Description=sh0 -- Self-Hosted PaaS
Documentation=https://sh0.dev/docs
After=network-online.target docker.service
Wants=network-online.target
Requires=docker.service

[Service]
Type=simple
ExecStart=/usr/local/bin/sh0 serve
Restart=always
RestartSec=5
Environment=RUST_LOG=info
WorkingDirectory=/var/lib/sh0
KillMode=process
NoNewPrivileges=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictSUIDSGID=true
RestrictRealtime=true
LockPersonality=true
LimitNOFILE=65535:524288
StandardOutput=journal
StandardError=journal
SyslogIdentifier=sh0

[Install]
WantedBy=multi-user.target
Note
请保留 KillMode=process。没有它,重启 sh0 服务时也会停止它启动的进程,您的应用会在重启期间下线。

然后启用并启动服务:

Terminal
sudo systemctl daemon-reload
sudo systemctl enable sh0
sudo systemctl start sh0
Tip
systemd 服务确保 sh0 在服务器重启后自动启动,并在崩溃时重启。日志可通过 journalctl -u sh0 -f 查看。
Note
系统对象存储(MinIO)使用社区镜像 pgsty/minio(Pigsty),按摘要固定。它不是 MinIO 的官方来源。如需使用其他兼容 MinIO 的镜像,请在服务环境中添加 Environment=SH0_MINIO_IMAGE=<image>,执行 systemctl daemon-reload,删除 sh0-system-minio 容器并重启 sh0:镜像仅在创建容器时生效,数据卷会保留。

防火墙配置

sh0 需要以下端口可访问:

端口协议用途
80TCPHTTP 流量(重定向到 HTTPS)
443TCP已部署应用的 HTTPS 流量
9000TCPsh0 控制台和 API

如果你使用 ufw(Ubuntu/Debian):

Terminal
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 9000/tcp
控制台安全
9000 端口提供对 sh0 控制台的完全访问。在生产环境中,建议限制为受信任的 IP 访问或将其放在 VPN 后面。你也可以配置 sh0 通过 Caddy 在自定义域名上使用 SSL 提供控制台。

更新 sh0

您的配置、已部署的应用和数据都位于数据目录中,而不在二进制文件里,因此更新只替换二进制文件。内置命令会下载最新的正式版本、进行校验,并保留上一个版本以便回滚:

Terminal
sudo sh0 update

更新渠道、回滚以及 sh0 doctor 的主机检查,请参见更新与诊断。

Note
sh0 在启动时自动处理数据库迁移。更新后,任何架构更改都会无缝应用。