更新与诊断
保持 sh0 为最新版本,版本出问题时回退,并在怀疑应用之前先检查主机。
更新 sh0
在服务器上运行更新。它会在 GitHub 上查找最新正式版本,下载适合您架构的压缩包,用发布的校验和进行核对,然后替换二进制文件。被替换的版本会保留以便回滚。
sudo sh0 update* sh0 self-update
Current version: v1.10.3-rc9
Checking for updates...
[+] Already running the latest version (v1.10.3-rc9).在交互式终端中,sh0 会在重启服务前询问。使用 --yes 时会直接重启。若从 cron、管道或脚本中运行且未加 --yes,则绝不会重启,并会事先说明。
更新渠道
默认情况下,更新跟随 stable 渠道:只安装正式版本。--channel beta 会改为安装最新的预发布版本。--force 即使渠道版本不比当前新也会安装,这就是回到旧版本的方法。
回滚
--rollback 会恢复上一次更新所替换的版本。当更新后版本立刻出现问题时使用。
哪些服务保持运行
您的应用是 Docker 容器:重启 sh0 不会停止它们。只要服务单元保留安装程序设置的 KillMode=process,位于它们前面的反向代理也会保持运行(参见安装)。
Note
sh0 自身的数据库迁移会在新版本启动时自动执行。
用 sh0 doctor 检查主机
当出现异常、更新之前或刚安装完成后,请在服务器上运行 sh0 doctor。它无需登录,也不会做任何更改。
sudo sh0 doctorsh0 doctor préflight d'hôte
données : /var/lib/sh0
OK docker démon joignable -- version 29.8.1, API 1.56, linux/amd64, 2 conteneurs (2 en marche)
OK port 80 tenu par `caddy` -- c'est notre propre pile
OK port 443 tenu par `caddy` -- c'est notre propre pile
OK port 9000 tenu par `sh0` -- c'est notre propre pile
OK disque /var/lib/docker : 20.5 % occupés, 119.2 Gio libres sur 149.9 Gio
OK certificats 1 actif(s) (1 par Caddy, 0 téléversé(s), 35 interne(s) hors seuil), le plus proche expire dans 88 j (demo.sh0.dev)
OK panneau (domaine) demo.sh0.dev servi en HTTPS, certificat valable jusqu'au 2026-12-29
WARN panneau (exposition) HTTPS en service, mais le port 9000 répond encore en clair sur 5.78.182.107
OK horloge synchronisée, décalage mesuré 0 s
OK Applications sans projet toutes les applications sont rattachées à un projet
des avertissements, rien de bloquant (code de sortie 0) Note
在当前版本中,报告以法语输出。
每一行是一项检查:Docker、sh0 所需端口(80、443 和面板端口)、可用磁盘空间、即将过期的证书、面板域名以及面板是否仍以明文 HTTP 响应、时钟,以及未归属任何项目的应用。WARN 行表示需要修正的问题,但不会阻塞。
退出码
0:没有阻塞问题(可能仍有警告)。1:至少有一个阻塞问题。2:有检查无法执行。未执行的检查绝不会被报告为通过。
添加 --json 可获得机器可读的输出,例如用于监控脚本。
数据库检查
两个只读子命令会检查 sh0 数据库中旧版本的遗留问题:
sh0 doctor backup-rows统计早期迁移未能处理到的恢复记录。sh0 doctor bind-mounts列出当前挂载规则会拒绝的主机挂载。