-
Notifications
You must be signed in to change notification settings - Fork 113
Upgrade and Rollback
Aethersailor edited this page Aug 24, 2026
·
4 revisions
升级前需要同时保留配置、统计数据和当前运行身份。只记录镜像标签不足以完成可靠回滚,因为 latest 会移动。
需要无人值守升级时,先阅读自动升级。自动升级不会替代独立备份和升级后的真实转换检查。
- 阅读目标 Release 的说明和资产列表。
- 备份
pref.toml、pref.yml或pref.ini。 - 启用统计时,备份
statistics.data_dir对应目录。 - 记录当前
/version页面中的版本和修订。 - Docker 部署记录当前镜像 ID 和摘要。
- 保存当前启动参数、环境变量和反向代理配置。
使用 Watchtower 自动跟随 latest 的方法见自动升级。以下命令用于手动升级:
cd /opt/SubConverter-Extended
docker compose pull
docker compose up -d
docker compose ps升级后检查:
curl -f http://127.0.0.1:25500/version
docker logs --tail 100 SubConverter-Extended再执行至少一个真实 /sub 请求。/healthz 成功不能证明模板、规则和转换路径都正常。
需要可重复部署时,将 Compose 中的镜像改为实际版本:
image: aethersailor/subconverter-extended:vX.Y.Z同一正式版本的 Docker Hub 和 GHCR 镜像应来自相同发布流程。高要求环境可进一步固定 OCI digest。
- 将镜像标签或 digest 改回已记录版本。
- 保留兼容的配置和统计目录。
- 重新创建容器。
- 检查
/version、日志和真实/sub。
如果新版本已经迁移了持久化数据,先确认旧版本能否读取该数据。不要在不确定时反复用新旧版本写同一统计目录。
包含自动升级功能的便携包可以验证候选程序、继承常用用户数据、切换程序目录并保留一个可回滚版本。命令和持久化范围见自动升级。
需要完全手动管理或当前包尚未包含更新器时,推荐把不同版本解压到独立目录,通过固定的配置目录或 PREF_PATH 复用用户配置。升级流程:
- 停止旧进程。
- 备份配置和统计目录。
- 校验并解压新版本。
- 指向原配置启动新版本。
- 验证后再清理旧程序目录。
回滚时停止新版本,重新启动旧程序目录,并继续使用已确认兼容的配置备份。
LuCI 内置更新页可以检查、安装和回滚完整 APK;详细步骤见自动升级。手动升级前备份 /etc/subconverter/。安装与 /etc/apk/arch 第一行完全匹配的新包后,重启服务并检查:
/etc/init.d/subconverter-extended restart
logread -e subconverter存储空间不足、架构不匹配或包未签名都会影响安装。不要在没有备份的情况下删除旧配置。
- 保留旧配置副本。
- 对比监听地址、端口和
managed_config_prefix。 - 先使用默认
lan在受信任网络中完成兼容检查。 - 逐项检查外部配置、规则集、上传和出站代理。
- 明确目标格式的远程订阅处理方式。
- 公网实例再切换为
public或strict。
本项目兼容常见 subconverter 请求参数,但扩展语法和安全边界可能改变错误处理。不要假设“旧请求返回 HTTP 200”就表示新版本必须静默忽略所有无效输入。
-
/version显示预期版本和修订; - 配置文件被正确加载;
- 安全档位和环境变量来源符合预期;
- 外部配置和规则能够加载;
- 主要目标格式转换成功;
- 客户端能够更新远程资源;
- 进程没有持续重启或 OOM;
- Dashboard 和统计数据在启用时正常。