安装与迁移 · Clash 技术博客

OpenClash 怎么升级不丢配置?插件、内核、订阅与备份恢复教程

OpenClash 的插件、内核、配置和覆写并不是同一个更新项。分开备份、分步升级,哪一步出错就停在哪一步,才不会一次更新后全屋断网。

  • OpenClash
  • OpenWrt
  • 升级
  • 备份恢复
本文目录

想升级不丢配置,先把插件、内核、订阅和备份拆开

OpenClash 升级最容易出问题的地方,是一次同时换 LuCI 插件、Mihomo 内核、订阅配置和覆写。先备份,再只动一层;每一层通过后再继续。这样页面打不开、内核起不来或订阅更新失败时,都有对应的回退文件。

截至 2026-07-16,OpenClash 官方 Latest 为 v0.47.116,同时提供 luci-app-openclash_0.47.116_all.ipk 与 luci-app-openclash-0.47.116.apk。

传统 opkg 系统使用 IPK,采用 apk 包管理的新 OpenWrt 分支使用 APK,不能因为扩展名相近就混装。

通过有线或局域网确认即使 OpenClash 停止也能打开路由器管理页,再检查 /overlay 与 /tmp。远程异地维护没有备用入口时,不应直接升级全屋网络的插件或内核。

空间与当前版本,兼容 opkg 与 apk 系统
df -h /overlay /tmp
if command -v opkg >/dev/null 2>&1; then
  opkg list-installed | grep -i openclash
else
  apk list --installed | grep -i openclash
fi
uci show openclash.config.config_path

同时保留应用内备份和一份手工归档

官方 Release 说明写明:插件设置可备份,并能在“配置文件管理”上传压缩包还原。先用界面生成一份备份并下载到电脑,再做手工归档,后者便于确认哪些文件真的被保存。

常用关键位置包括 /etc/config/openclash、/etc/openclash/config、custom、overwrite 与 core。配置和订阅含真实凭据,归档不要放在公开网盘。

通过 SSH 创建手工备份,只收集本机实际存在的目录
BACKUP=/tmp/openclash-backup-$(date +%F-%H%M).tgz
set --
for ITEM in etc/config/openclash etc/openclash/config etc/openclash/custom etc/openclash/overwrite etc/openclash/core; do
  [ -e "/$ITEM" ] && set -- "$@" "$ITEM"
done
[ "$#" -gt 0 ] || { echo 'No OpenClash files found'; exit 1; }
tar -C / -czf "$BACKUP" "$@"
ls -lh "$BACKUP"
tar -tzf "$BACKUP" | sed -n '1,40p'

先只升级 LuCI 插件,内核和订阅保持不变

备份确认能列出文件后,先只更新网页插件。此时继续使用原来的内核和配置,页面若出错就能把原因锁定在 LuCI 包与依赖上。

把包名换成实际下载文件
# opkg 系统
opkg install /tmp/luci-app-openclash_0.47.116_all.ipk

# apk 系统只使用对应 APK,不执行上面的 opkg 命令
apk add --force-overwrite --clean-protected --allow-untrusted /tmp/luci-app-openclash-0.47.116.apk

安装结束后刷新 LuCI,查看 OpenClash 页面、配置文件列表和版本更新页。页面空白、依赖报错或菜单消失,问题就在插件与系统包;此时不要继续换 Mihomo 内核或更新订阅。

页面正常后再更新 clash_meta 内核

OpenClash 官方说明要求先在版本更新页确认内核编译版本。手工安装时,内核解压到 /etc/openclash/core/ 并命名为 clash_meta,还要与路由器 CPU 架构匹配且具有执行权限。

保留旧内核副本,更新后先加载原来的同一份配置。日志若出现 Exec format error,通常是架构错误;Permission denied 则看执行权限;YAML 解析失败才回到配置字段。

手工替换前保留旧文件
cp -a /etc/openclash/core/clash_meta /etc/openclash/core/clash_meta.before-upgrade
chmod 0755 /etc/openclash/core/clash_meta
/etc/openclash/core/clash_meta -v

插件和内核都稳定后,再手动更新一次订阅

升级验证阶段先继续使用原来的配置和节点,确认故障没有来自插件或内核。页面、内核版本、DNS 和规则都正常后,再在“配置文件订阅”中只更新一份常用订阅,并记录更新时间、节点数量和第一条错误。不要在升级当天同时更换订阅地址、转换模板和覆写。

订阅 URL 或 token 一般保存在 OpenClash 配置与 UCI 设置中,备份文件属于敏感资料。恢复后如果列表有名称却不能更新,应先检查 URL 是否完整、系统时间与 401/403 状态,不要再次覆盖插件包。

更新返回 401 / 403

订阅凭据或服务权限有问题;保留旧配置运行,重新取得合法 URL。

下载成功但 YAML 解析失败

比较更新前后的配置和当前 Mihomo 支持字段,不回退 LuCI 插件。

节点更新了,自定义规则消失

恢复 custom/overwrite,并确认覆写加载顺序;不要把缓存当备份。

恢复时只选一种方法:界面导入或完整归档

普通情况下优先使用 OpenClash 自己导出的备份。只有页面已经无法使用、而且你确认手工归档内容正确时,才从 SSH 恢复原路径。两种方式不要在同一次恢复里交叉执行。

恢复顺序

  1. 停止 OpenClash

    避免进程在解压时继续写配置和缓存。

  2. 优先用配置文件管理导入官方备份

    这是普通用户最稳妥的入口,导入后先检查配置路径。

  3. 只有手工归档时再用 SSH

    先另存当前目录,再把归档按原路径解压。

  4. 恢复权限并启动

    确认 clash_meta 可执行,提交 UCI 后启动 OpenClash。

  5. 先接入一台设备

    直连、代理、DNS 和路由器管理都正常后再恢复全屋。

手工归档恢复示例,BACKUP 路径先替换为真实文件
BACKUP='/tmp/openclash-backup-YYYY-MM-DD-HHMM.tgz'
tar -tzf "$BACKUP" | sed -n '1,80p'
/etc/init.d/openclash stop
cp -a /etc/openclash /etc/openclash.failed-$(date +%F-%H%M)
tar -C / -xzf "$BACKUP"
chmod 0755 /etc/openclash/core/clash_meta
uci commit openclash
/etc/init.d/openclash restart

哪一层先失败,就停在哪一层

升级结束不是以版本号变新为准,而是路由器页面、内核、配置和终端都恢复正常。只要其中一层先报错,就回到刚才那一步,不再继续更新下一层。

LuCI 页面空白或 404

回退插件包、修依赖或清浏览器缓存;不动内核和订阅。

clash_meta 无法执行

恢复 before-upgrade 文件,检查 CPU 架构与权限。

内核启动但所有终端 DNS 失败

切回旧内核或旧配置,检查 DNS 劫持与防火墙变更。

自定义规则或覆写消失

从 custom/overwrite 或官方备份恢复,不覆盖整个 OpenWrt。

只有电视或游戏机异常

先重连该设备并清旧 DNS 租约,不继续升级其他组件。

恢复全屋前

  • LuCI 页面能打开,插件版本与安装包一致
  • clash_meta -v 能运行,启动日志没有架构、权限或解析错误
  • 常用订阅能更新,自定义规则和覆写仍在
  • 先用一台电脑分别测试直连、代理、DNS 和路由器管理页
  • 最后再让手机、电视和游戏机重新获取 DHCP 与 DNS

参考资料