Docs/ 运维/ 更新与诊断

更新与诊断

保持 sh0 为最新版本,版本出问题时回退,并在怀疑应用之前先检查主机。

更新 sh0

在服务器上运行更新。它会在 GitHub 上查找最新正式版本,下载适合您架构的压缩包,用发布的校验和进行核对,然后替换二进制文件。被替换的版本会保留以便回滚。

Terminal
sudo sh0 update
Output (already up to date)
* 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。它无需登录,也不会做任何更改。

Terminal
sudo sh0 doctor
Output
sh0 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 列出当前挂载规则会拒绝的主机挂载。