安装
在一分钟内在干净的服务器上运行 sh0。一条命令下载二进制文件——sh0 自动处理所有依赖。
系统需求
| 要求 | 最低 | 推荐 |
|---|---|---|
| 操作系统 | Linux(任意发行版) | Ubuntu 22.04+ / Debian 12+ |
| 内存 | 1 GB | 2 GB+ |
| 磁盘 | 10 GB | 20 GB+ (SSD) |
| CPU | 1 vCPU | 2 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 服务:
curl -fsSL https://get.sh0.dev | bash Terminal output showing the sh0 install script downloading the binary, setting permissions, and starting the service
脚本执行以下步骤:
- 检测 CPU 架构(x86_64 或 aarch64)
- 将最新的 sh0 二进制文件下载到
/usr/local/bin/sh0 - 设置可执行权限
- 创建 systemd 服务单元
- 启用并启动服务
手动下载
如果您希望手动安装,请从 GitHub 下载发布压缩包,并在解压前用发布的校验和进行核对:
# 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 --versionsh0-linux-x64.tar.gz: OK
sh0 1.10.2手动安装不会创建 systemd 服务:请按下文说明进行配置,然后启动它。
验证安装
检查 sh0 是否已安装并运行:
# 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
健康端点应返回确认服务器正在运行的 JSON 响应:
{"data":{"license":{"plan":"business","status":"active"},"mode":"selfhosted","needs_setup":false,"status":"ok","version":"1.10.3-rc9"}}Systemd 服务设置
如果您使用了快速安装脚本,systemd 服务已经配置好。手动安装时,请创建与安装程序写入的相同的服务文件:
[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 服务时也会停止它启动的进程,您的应用会在重启期间下线。然后启用并启动服务:
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 需要以下端口可访问:
| 端口 | 协议 | 用途 |
|---|---|---|
| 80 | TCP | HTTP 流量(重定向到 HTTPS) |
| 443 | TCP | 已部署应用的 HTTPS 流量 |
| 9000 | TCP | sh0 控制台和 API |
如果你使用 ufw(Ubuntu/Debian):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 9000/tcp 控制台安全
9000 端口提供对 sh0 控制台的完全访问。在生产环境中,建议限制为受信任的 IP 访问或将其放在 VPN 后面。你也可以配置 sh0 通过 Caddy 在自定义域名上使用 SSL 提供控制台。
更新 sh0
您的配置、已部署的应用和数据都位于数据目录中,而不在二进制文件里,因此更新只替换二进制文件。内置命令会下载最新的正式版本、进行校验,并保留上一个版本以便回滚:
sudo sh0 update更新渠道、回滚以及 sh0 doctor 的主机检查,请参见更新与诊断。
Note
sh0 在启动时自动处理数据库迁移。更新后,任何架构更改都会无缝应用。