升级、备份与兼容
版本
Hub 和客户端各有自己的版本号。每个版本的发布说明会写明它需要的 Hub 版本。
- 已发布的版本不会修改,修复以新版本的形式发布。
- 管理端显示 Hub 的版本号和对应的提交。提交不是版本号。
升级顺序
- 查看发布说明里 API、数据库和更新协议的变化。
- 如果新客户端依赖新 Hub,先升级并检查 Hub,再升级客户端。
- 如果两者兼容且 Hub 运行正常,可以分别升级。
升级客户端会保留它的服务地址,以及每个 Hub 对应的设备身份、登录状态和本机数据。
升级 Hub 之前
- 停止派发新工作,等正在运行的任务结束。
- 在同一时间点备份数据库和全部文件存储。数据库和资料库必须一起恢复。
- 备份私有配置,并记下当前的源码版本。
仓库里提供了 hub-backend/full_backup.py(完整加密备份)和 hub-backend/db_admin.py(数据库检查与恢复)。在生产环境依赖某个备份之前,先实际演练一次恢复。
升级
| 安装方式 | 步骤 |
|---|---|
| 源码启动器 | 停止,更新源码,运行与之前相同的 python start.py 命令 |
| Docker | python ops/self-host/deploy.py stop,切换到新版本的源码,python ops/self-host/deploy.py up |
| 自行部署 | 停止 Hub,部署新版本,以 DB_MIGRATION_MODE=auto 启动 |
启动时会执行版本化迁移。迁移失败时,Hub 不会显示为健康。不要对同一个数据库同时运行两个迁移。
回退
同时恢复匹配版本的源码、数据库、文件存储和密钥。旧版本的 Hub 不能使用已被新版本迁移过的数据库。
客户端更新
客户端从它连接的 Hub 检查新版本。用于更新的安装包使用 Ed25519 密钥签名;Hub 的 CLIENT_UPDATE_PUBLIC_KEYS 配置项列出客户端信任的公钥。签名私钥不要放在 Hub 上,也不要放进仓库。