安裝與遷移 · 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

參考資料