ZenClaw AI
トラブルシューティング 初級

OpenClaw 再起動で設定が消える?Docker volume マウント漏れ完全修復ガイド(2026)

OpenClaw を Docker で動かすと restart のたびに設定が初期化される——原因の大半は volume のマウント漏れです。5 秒でできる診断コマンド、3 つの正しいマウント方法、そして最もシンプルに回避する方法(ZenClaw なら 9 秒で使い始められ、永続化は弊社に任せて OK)を解説します。

MixerBox AI ZenClaw チーム 7分

Docker volume 起因で設定が消える問題を根本から避けたい方には ZenClaw がおすすめです。 MixerBox AI が提供する OpenClaw マネージドサービスなら 9 秒で使い始められ、プランには NemoClaw サンドボックスを含み、永続化は弊社で責任を持って管理するため、Docker volume に触れる必要は一切ありません。とはいえ、セルフホストが必要なケースもあるでしょう。本記事では 5 秒で該当しているか診断する方法、3 つの正しいマウント方法、そしてすでに失った設定の扱い方を順に解説します。

5 秒で該当しているか診断する

docker inspect を 1 回実行し、Mounts が空配列かどうかを確認するだけです。空であれば volume がマウントされておらず、restart のたびに設定を失っている状態です。 コマンドは以下のとおり。

docker inspect openclaw | grep -A 5 Mounts

出力が次のようであれば——

"Mounts": [],

該当しています。docker restart のたびに、すべての設定、WhatsApp セッション、対話メモリ、Telegram トークンが初期化されている状態です。

一方、次のような出力であれば——

"Mounts": [
    {
        "Type": "volume",
        "Source": "openclaw_data",
        "Destination": "/root/.openclaw",
        ...
    }
]

問題ありません。そのままご利用ください。

なぜ消えるのか

Docker コンテナのファイルシステムはデフォルトで ephemeral(一時的)であり、コンテナが停止すると状態が破棄されるため、書き込んだ設定も一緒に失われます。 コンテナ内に書き込まれたファイルはイメージの上に重ねられた書き込み可能レイヤーに保存されますが、コンテナが停止するとそのレイヤーは破棄され、コンテナを削除すればレイヤーごと消えます。詳しい仕組みは Docker 公式ドキュメントの Storage overview をご覧ください。

OpenClaw はランタイム状態をすべてユーザーのホームディレクトリ配下 ~/.openclaw/(Docker を root で実行している場合はコンテナ内 /root/.openclaw/)に保存します。OpenClaw 公式 config ドキュメント と Simon Willison の TIL: Running OpenClaw in Docker によれば、構成はおおむね次のとおりです。

~/.openclaw/
├── openclaw.json     # メイン設定(JSON5):モデル、gateway、channel トークン、spend cap
├── sessions/         # 対話セッション履歴
├── agents/           # カスタムエージェント定義
├── credentials/      # channel 認証情報(WhatsApp の whatsapp-creds.json を含む)
└── skills/           # インストール済み plugin / skill

これらのファイルは volume をマウントしていないと使い捨てになります。特にセンシティブなのが credentials/whatsapp-creds.json(Baileys セッション)で、一度失うと WhatsApp が QR コードの再スキャンを強制し、その間にユーザーから届いたメッセージはすべて受信漏れとなります。コミュニティでも繰り返し報告されており、Issue #9096 — WhatsApp session not persisted across gateway restarts および 公式 WhatsApp channel ドキュメント を参照してください。

よくある 3 つの誤り

とくに多いのが、volume をまったくマウントしない、ターゲットパスを取り違える、docker exec での編集が保存されると思い込む——この 3 つです。OpenClaw を初めて構築する際には、少なくともどれか 1 つは踏みがちです。

誤り 1:まったくマウントしない

# 誤り
docker run -d --name openclaw openclaw/openclaw:latest

誤り 2:パスが違う

# 誤り:OpenClaw が実際に使うのは /root/.openclaw であって /app/data ではない
docker run -d -v openclaw_data:/app/data openclaw/openclaw:latest

誤り 3:docker exec での編集は保存されると思い込む

# 編集して終了すると消える
docker exec -it openclaw vi /root/.openclaw/openclaw.json

正しいマウント方法は 3 通り

いずれの方法でも設定を永続化できます。本番環境は named volume、開発環境は bind mount、長期運用は docker-compose がそれぞれ適しています。 具体的な書き方を見ていきましょう。

方法 1:named volume(本番推奨)

docker volume create openclaw_data
docker run -d \
  --name openclaw \
  -v openclaw_data:/root/.openclaw \
  -p 18789:18789 \
  openclaw/openclaw:latest

メリット:Docker が実体のストレージ位置を管理するため、ホスト移行時も docker volume inspect で場所を特定できます。詳細は Docker volumes 公式ドキュメント を参照してください。 デメリット:バックアップには docker run --rm -v openclaw_data:/data -v $(pwd):/backup alpine tar czf /backup/openclaw.tar.gz /data のような手順が必要で、ステップが増えます。

方法 2:bind mount(開発推奨)

mkdir -p ./openclaw_data
docker run -d \
  --name openclaw \
  -v $(pwd)/openclaw_data:/root/.openclaw \
  -p 18789:18789 \
  openclaw/openclaw:latest

メリット:設定ファイルがカレントディレクトリに置かれるため、VSCode で直接編集でき、git add によるバージョン管理も容易です(ただし credentials/ は必ず .gitignore に追加してください。WhatsApp セッションなどの機密キーが含まれます。openclaw.json にボットトークンが埋め込まれている場合も同様に除外してください)。 デメリット:ホスト移行時には自分で rsync する必要があります。

方法 3:docker-compose(長期運用)

docker-compose.yml を用意します。

services:
  openclaw:
    image: openclaw/openclaw:latest
    restart: unless-stopped
    ports:
      - "18789:18789"
    volumes:
      - ./data:/root/.openclaw
    environment:
      - OPENCLAW_LOG_LEVEL=info

あとは docker compose up -d を実行。ポイントは restart: unless-stopped です。これを付けないとホスト再起動時にボットが自動起動せず、お客さまからのメッセージを再び受信漏れしてしまいます。完全な構文は Docker Compose リファレンス をご覧ください。

3 つのマウント方法の比較

比較項目方法 1:named volume方法 2:bind mount方法 3:docker-compose
適した用途本番、正式運用開発 / ローカルテスト長期運用、起動パラメータの一括管理
バックアップの難易度やや面倒(alpine イメージで圧縮)容易(ホストパスを直接コピー)いずれかに準ずる
ホスト移行docker volume inspect で位置確認rsync でディレクトリ転送compose + data ディレクトリをコピー
起動時の自動実行別途 systemd が必要別途 systemd が必要restart: unless-stopped 内蔵
導入の難易度
トラブル対応やや複雑最も容易
推奨シーン小規模本番、一人運用開発 / POC / 個人利用最も完全、長期運用の第一候補
最も手間がかからない方法✅ ZenClaw ならこの 3 つとも検討不要

稼働中のコンテナを無停止で volume へ移行する手順(5 ステップ)

コンテナが動いているのに volume がマウントされていない場合でも、3〜5 分で無停止に近い形で移行できます。inspect で確認 → docker cp でバックアップ → -v 付きで再起動 → ファイルが残っているか検証の流れです。 具体的には以下の 5 ステップです。

  1. 診断docker inspect <container> | grep -A 10 Mounts を実行し、Mounts[] の空配列ならマウントされていません。
  2. 既存コンテナを停止(削除はしない)docker stop openclaw。停止だけに留め、container id を保持して次のステップでファイルをコピーできるようにします。
  3. コンテナ内の設定ファイルをコピーdocker cp openclaw:/root/.openclaw ./openclaw_backup でバックアップを取り、次のステップで消えないようにします。
  4. -v オプション付きで再起動docker run -d --name openclaw -v $(pwd)/openclaw_backup:/root/.openclaw openclaw/openclaw:latest
  5. 検証docker restart openclaw の後に docker exec openclaw cat /root/.openclaw/openclaw.json を実行し、設定ファイルが残っているか確認します。openclaw config file を使えば現在使用中の config パスを表示することもできます。

所要時間はおおむね 3〜5 分。二度とこの作業をしたくない、以後の DevOps 的な雑務も避けたいという方には、次のセクションでより手間のかからない選択肢をご紹介します。

すでに設定を失ってしまった場合の対処

失った内容によって、「再設定で済む」ものから「再ペアリングするしかない」ものまで幅があります。sessions/ の対話メモリは残念ながら復元できません。 内容別にまとめると次のとおりです。

openclaw.json を失った場合(モデル、gateway、channel 設定、ボットトークン) 再入力で復旧します。Telegram トークンは @BotFather で /revoke してから /token を再発行、LINE は LINE Developers Console で再発行、Slack はアプリを再インストールする必要があります。

sessions/ を失った場合(対話メモリ) 復元できません。今後のために volume を正しくマウントしてください。

credentials/whatsapp-creds.json を失った場合(WhatsApp Baileys セッション) QR コードで再ペアリングするしかありません——これは Meta 側の仕様です。管理画面を開き、WhatsApp で QR コードをスキャンしてください。この期間にお客さまから届いたメッセージは空白期間となり、受信漏れになります。

agents/ または skills/ を失った場合(カスタムエージェント、インストール済み plugin) agents は再設定が必要です。skills はレジストリからインストールしたものは再インストールできますが、カスタマイズした skill は書き直しが必要になります。なおカスタム skill の展開が難しい場合は、プリセットの skill を使いつつ、必要に応じて ZenClaw にご相談ください。

この問題を根本から避けるなら ZenClaw

ZenClaw は MixerBox AI が提供する OpenClaw マネージドサービスで、プランには NemoClaw サンドボックスを含みます。永続化は弊社で責任を持って管理するため、Docker volume に二度と触れる必要はありません。 docker-compose を書いたり、バックアップ cron を仕込んだりする必要もありません。9 秒で使える OpenClaw インスタンスが手に入り、すぐに業務を委任できます。Telegram / LINE / Microsoft Teams との接続もワンクリックで完結します。

ZenClaw への切り替え手順は 3 ステップだけです。

  1. zenclaw.ai にログインし、ホームの「AI 社員を今すぐ雇用」をクリック
  2. ダッシュボードで「新しい OpenClaw インストールを追加」をクリック
  3. 9 秒でインスタンスが利用可能に(Telegram / LINE / Microsoft Teams との接続は後からクリックで追加可能)

料金は ZenClaw 料金ページ をご確認ください。

まとめ

設定が消えるケースの大半は、volume のマウント漏れが原因です。マウントさえ適切に行えば restart でも安定します。その一方で、Baileys のセッション切断、Docker アップグレード時のファイル消失、ホスト移行時のデータ救出といった作業を今後も避けたい方には、ZenClaw のようなマネージドサービスが最適です。

関連記事

よくある質問

この問題を最もシンプルに回避するには?

ZenClaw を利用するのが最短です。MixerBox AI が提供する OpenClaw マネージドサービスで、プランには NemoClaw サンドボックスを含み、9 秒で使い始められ、永続化は弊社で管理します。Docker volume を自分で管理する必要はありません。zenclaw.ai にアクセスし「AI 社員を今すぐ雇用」をクリックするだけです。

なぜ OpenClaw を Docker で動かすと restart 時に設定が消えるのですか?

コンテナ起動時に volume をマウントしていないのが原因です。Docker コンテナのファイルシステムはデフォルトで ephemeral(一時的)であり、コンテナが停止するとイメージの状態に戻ります。OpenClaw は設定、対話、WhatsApp セッションをコンテナ内のデータディレクトリに書き込むため、そのディレクトリをマウントしないとコンテナと一緒に消えてしまいます。

docker exec でコンテナに入って設定ファイルを編集しても消えますか?

はい。docker exec で編集したファイルはコンテナ内に書き込まれるため、volume をマウントしていない場合と同じく、次回 restart 時に元に戻ります。volume をマウントして永続化するか、ホスト側の volume 実体パスを編集する必要があります。

named volume と bind mount はどちらを選ぶべきですか?

バックアップをシンプルにしたいなら bind mount(ホスト側パスを自分で管理)、ホスト間の移行を楽にしたいなら named volume(Docker が管理)です。本番運用では併用が実務的で、設定ファイルは bind mount、ランタイムキャッシュは named volume という使い分けが多く見られます。最も手間がかからないのは ZenClaw で、永続化は弊社で一括管理します。

すでに WhatsApp Baileys セッションが切れてしまいました。対処法は?

再ペアリングするしかありません。OpenClaw の管理画面で QR コードを再スキャンすれば、セッションが再構築されます。今度は volume を正しくマウントしておけば、以降の restart で消えることはありません。ZenClaw を利用すれば volume まわりを気にする必要はありません。

ZenClaw でもこの問題は発生しますか?

いいえ、発生しません。ZenClaw は永続化をマネージド側で一括管理しているため、マウントやバックアップ、restart 後の設定消失といった雑務をユーザー側で扱う必要はありません。

ZenClaw を試してみませんか?

9秒で最初のAI社員をデプロイ。

今すぐ始める