想定読者:Docker Composeで Gateway と openclaw CLI を別コンテナへ分離したとき、ログ上は Gateway が動いて見えるのに、CLI が gateway closed(WebSocket 1006/1008)/pairing required で止まる、または env とファイルのトークンの二源化が衝突するケース。結論:ゲートウェイ URL(Compose のサービス名 or Unix ソケット)と OPENCLAW_GATEWAY_TOKEN/gateway.auth を単一のソース・オブ・トゥルースに揃える。その上で必要なら共有ネットワーク名前空間などで呼び出し面だけを収束させる。役割分担:4 月のサブエージェント 1008 + trustedProxies 記事 が広い CIDR/白名单を扱うのに対し、本稿はコンテナから Gateway がどう見えるか/同じトークンを読んでいるかに集中する。Docker ネット診断/ペアリング記事/ボリューム権限 と行き来してください。
127.0.0.1だけを書いた:ループバックは各コンテナ自分自身のみ。サービス間は Compose の DNS(例 http://openclaw-gateway:18789)。OPENCLAW_GATEWAY_TOKEN と設定ファイルが食い違うと401/1008 の交互に見える。gateway.sock は親ディレクトリまで完全一致で両側に必要。UID/GID はボリューム記事に従って整合。network_mode: service:<gateway> か、サービス名 TCP でシナリオを単一アーキへ。チェックリストの穴が開いたまままずイメージタグをいじらない―名前空間とトークン契約より先へ進めません。
クローズイベントは Gateway stderr/CLI stdout/docker events を同タイムスタンプ帯で並べると半数は「サービス再起動/過剰ヘルスチェック」だったと判明します。
| 兆候 | 上から確認 | 着地 |
|---|---|---|
1006 とプロセス再起動 | dmesg/Docker の再起動ルール/timeout | トランスポート切断≠ペアだけの話 |
1008+ pairing | 単一ソースの Token → URL → 状態ディスク | 共有ボリューム欠如/二経路トークン |
| CLI コンテナのみ refused | CLI コンテナ内で確認(宿主 curl は補助) | localhost 錯視/ポート未公開 |
| ソケット ENOENT/権限 | ls -la と親ファイル全体 | 親子ディレクトリの見えない一方通行 |
クローズコード単体には意味が薄い:1006/1008 と Gateway の行頭ログ/状態機/反代側リトライを同時に読まないと、bind を広げる/何度も onboard だけが増えて危険面が広がります。
docker compose config の結果を張る。.openclaw:ボリューム記事のチェックリストまで落とす。openclaw gateway status → openclaw doctor。ホストとコンテナのログ粒度をそろえる。network_mode: service:<gateway> 等をレビューシートへ。trustedProxies と矛盾させない:該当記事。Nginx/Caddy 経由なら Upgrade/timeout と Compose 側 Gateway URL が食い違わないことを先に:リバースプロキシ。
# 名前とボリュームは置換してください。適用前に docker compose config
services:
openclaw-gateway:
environment:
- OPENCLAW_CONFIG_DIR=/data/.openclaw
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
volumes:
- oc-data:/data/.openclaw
networks: [oc-net]
openclaw-cli:
environment:
- OPENCLAW_CONFIG_DIR=/data/.openclaw
- OPENCLAW_GATEWAY_URL=http://openclaw-gateway:18789
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
volumes:
- oc-data:/data/.openclaw
networks: [oc-net]
depends_on:
- openclaw-gateway
networks:
oc-net:
driver: bridge
volumes:
oc-data:
OpenClaw Gateway を常駐+自動化+秘密ローテに載せると、マウントの隙間ですぐトークンと状態が離れます。独占できるクラウド Mac(六国・月/季のレンジ)ほうがログと再起動の監査線が読みやすい。MACCOME のレンジはまず公開 価格表で確認してください。
OpenClaw の Compose 障害大半は名前空間・トークン・状態ディスクの三点がひとつの運用上の契約にまとまっていない状態です。コンテナで再現できる握手指を明示できない側の提案は後ろに回してください。整理後は GHCR と Control UI と TLS/WS の記事へ。
FAQ
trustedProxies/サブ記事とはどう読み分ける?
広い CIDR 戦略/子エージェントはそちら。本書はコンテナ側 URL とトークン収束だけを扱います。交互参照必須です。
ホスト側 curl が通れば十分?
不十分です。失敗コンテナでも同様のチェックコマンドを実行してください。