升级与备份
面板内升级
「系统 → 系统升级」页面可检查新版本并查看更新说明。
更新检测支持双通道:
| 通道 | 说明 |
|---|---|
| 稳定版 | 只检测正式发布版本 |
| 开发版 | 包含预发布版本(prerelease),可提前体验 |
- 通道选择持久化保存,未设置时回退环境变量
GOPANEL_UPGRADE_CHANNEL - 稳定通道比较规则为语义化版本:
1.3.0-beta.1 < 1.3.0-beta.2 < 1.3.0 - 当前版本高于所选通道最新版时(如开发版切回稳定通道)会明确提示不自动降级
开发通道为何按「发布时间」判断
开发通道的发布形态是固定标签 dev + 每次 push 覆盖同名附件 (见 scripts/cnb/dev-binary-publish.sh):版本号永远是 dev,只换包。 按版本号比较恒等,同一份 dev 今天下午被覆盖过一次完全检测不到。
因此开发通道改用时间作为判据:
- 取 Release
dev下本机架构升级包附件的最后上传时间 (不是 Release 自身的更新时间——dev 线只覆盖附件、Release 不重建); - 与当前运行版本的构建日期比较,发布方更新则提示有新构建。
发布方构建时间优先取随附件发布的
BUILD_DATE附件(构建脚本写入、 上传后有回读自检);面板的「更新内容」展示的是 Release 描述, dev 线那里是本次 push 的最后一条提交信息。
当前版本的构建日期来自构建期注入,三级回退保证老构建也能判断:
- 环境变量
GOPANEL_BUILD_DATE; - ldflags 注入的
BuildDate(build-binaries.sh已补上); - 老构建未注入时,从已有的构建时间里取日期部分。
该时间戳只在 Release 详情里可得:公开仓库走站点侧 Releases 接口匿名读取, 无需任何配置;私有仓库才需要
GOPANEL_UPGRADE_TOKEN。 都取不到时会明确提示「无法判断」,不会假装已是最新。 前端在开发通道下会额外展示一行「构建时间:当前 x,最新 y」。
相关环境变量(GOPANEL_UPGRADE_*)见 环境变量。
面板内自动升级(二进制部署)
「检查更新」发现新版本后,点「下载」即可在线升级:
- 下载 Release 附件
GoPanel-linux-<arch>.tar.gz(压缩包口径,见 二进制部署); - 比对同目录的
SHA256SUMS(发布方提供时),确认附件未被篡改或损坏; - 解压出包内同名裸二进制并做 ELF 校验,落盘为程序同目录的
GoPanel.update; - 重启面板后自动替换(旧程序备份为
GoPanel.bak,可回滚)。
⚠️ 只接受
.tar.gz压缩包。压缩之前发布的旧 tag 附件是裸二进制, 面板内在线升级不支持(仍可用scripts/install.sh -v <旧版本>安装)。
命令行升级(-upgrade)
没有后台权限 / 在脚本与容器里,用主程序自带的 -upgrade 完成与网页端同一套检查与下载:
gopanel -upgrade # 检查更新并下载升级包(已最新则什么都不做)
gopanel -upgrade=check # 只检查、不下载
gopanel -upgrade=cancel # 取消待生效的升级包
gopanel -service restart # 升级包就绪后重启,替换即生效输出为固定顺序的 键=值 明细(当前版本 / 最新版本 / 有新版本 / 下载地址 / 提示), 退出码:0 已最新 · 10 升级包已就绪 · 20 有新版本未下载 · 1 检查或下载失败。 详细取值与输出见 命令行参数。
二进制升级
# 重新执行安装脚本(会替换二进制并重启服务)
curl -fsSL https://cnb.cool/liumou_site/GoPanel/-/git/raw/master/scripts/install.sh | bash -s -- -install或手动:停服务 → 替换二进制 → 启服务。配置文件与 config/ 数据目录保持不变。
备份什么
| 内容 | 位置 |
|---|---|
| 数据库 | MySQL / MariaDB / PostgreSQL 用数据库自身工具;SQLite 直接备份 config/*.db |
| 配置文件 | config/config.toml |
| 主密钥 | data/master.key(或 GOPANEL_BASTION_KEY 的值)——必须备份,丢了旧密文与安全码要重置 |
| 证书私钥 | data/ssl/keys/ |
| 日志 | data/logs/(可选) |
⚠️ 主密钥与数据库要配套备份:只恢复数据库而密钥不同,堡垒机凭据与安全码会全部失效。
自动化备份
- 用 计划任务 定时执行备份命令(任务由系统 crond 调度,面板负责落 crontab)
- 用面板的全量备份导出做升级 / 迁移前的快照(
data/+config/config.toml打包 ZIP,见 备份与迁移)
