インストールと移行 · 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 プラグインだけをアップグレードし、カーネルとサブスクリプションは変更しない

バックアップ内のファイルを一覧で確認できたら、まず Web プラグインだけを更新します。この段階では以前のカーネルと設定を使い続けるため、画面に問題が出ても原因を 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 を再取得する

参考資料