2026Docker ComposeOpenClawWebSockettoken

2026 OpenClaw Docker Compose:トークン整合、WebSocket 1006/1008、ペアリング恒久化

単一の真実:OPENCLAW_GATEWAY_TOKENgateway.auth.token1006/1008 はレイヤ別。ペアリングは命名ボリュームへ。関連:remotesplit-braindaemon installDocker doctor

Docker ComposeOPENCLAW_GATEWAY_TOKENgateway.auth.tokenWebSocketpairing
OpenClaw Docker Compose token WebSocket pairing

見えない二重書き込みの摩擦

Docker Compose は宣言的ですが、秘密は単一の真実でなければなりません。環境変数 OPENCLAW_GATEWAY_TOKEN とマウントした openclaw.json の gateway.auth.token が食い違うと、RPC は通っても WebSocket だけが落ちます。

クローズコード 1006 は多くの場合トランスポート欠陥(プロキシ切断、TLS 中断、RST)、1008 はポリシー違反(トークン不一致、Origin 不一致)です。HTTP 200 のヘルスだけでは観測できません。

ペアリングはローカル中間ファイルに依存します。匿名ボリュームは force-recreate で消えるため、UI がペアリング待ちのまま止まります。

TLS 終端のリバースプロキシではアイドルがクライアント ping より短いと本番だけ問題が出ます。

新しいイメージでも JSON が古いままだと split-brain 記事と混線します。バイナリ漂流とトークン漂流は証拠で切り分けます。

ログ sidecar が chmod を変えてもチケットに無ければ、認証失敗に見えるだけです。

ホストで Kubernetes と compose がポート共有すると WebSocket が認証エラーに見えます。

compose プロジェクト名無しのバックアップは別名前空間に古い pairing シャードを混入させます。

公式ドキュメントと同じ層別切り分け

公式トラブルシュート順はプロセス→トランスポート→認可→ペアリングです。Compose は証跡取得が docker logs 側になります。

プロセスは listen と再起動サンダルを確認します。systemd の話だけで ENTRYPOINT を無視しないこと。

トランスポートは publish と NAT と IPv6 を確認します。

認可は単一のソースオブトゥルースへ寄せ、Vault のファイル出力順も compose の順と同期させます。

ペアリングは命名ボリュームと UID/GID を明示します。

ガバナンスは compose のマージで secrets と env_file を必ずレビューします。

閾値と SL A の目安

レジストリが遅いときは start_period を45〜90秒にするまで評価します。

外向き WS は一分ごと、内向き curl は15秒など非対称にします。

SSD ではペアリングは10秒以内が目安、40秒超はディスク確認へ。

エンドツーエンドのローテーションは五分以内を狙い Vault と compose を同一パイプラインへ。

クローズコード保管は最低十四日、厳しければ三十日と疑似匿名化。

cgroup の CPU throttle は握手だけ伸ばすのでダッシュボードへ載せます。

トポロジ × トークン × WS × ペアリング

トポロジトークンWebSocketペアリング
ブリッジ publish単一起源公開ポートと URL を一致命名ボリューム
network_mode:hostJSON が読みやすいNAT 無し・衝突注意パスは実機に近い
リバースプロキシ TLSサーバのみが秘密を保持idle は ping より長く Upgrade を維持必要なら sticky
Sidecar secrets競り合い回避ログを混同しない共有 pairing を GC しない

行列は bridge / host / プロキシ / sidecar の選択肢と関連記事へ繋がります。

経済的には QA が漂流すると単一ベースノードより負けやすいです。

→ install path guide

compose スニペット(値は置換)

version: "3.9"
services:
  openclaw-gateway:
    image: ghcr.io/example/openclaw-gateway:latest
    env_file:
      - .env.gateway
    environment:
      OPENCLAW_GATEWAY_TOKEN: "${OPENCLAW_GATEWAY_TOKEN}"
    volumes:
      - ./openclaw.json:/etc/openclaw/openclaw.json:ro
      - gateway_pairing:/var/lib/openclaw/pairing
    ports:
      - "18789:18789"
    healthcheck:
      test: ["CMD", "curl", "-fsS", "http://127.0.0.1:18789/health"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 45s
volumes:
  gateway_pairing:

1: compose config とログを保存。

2: 権威を決める。

3: ペアリングを命名ボリュームへ。

4: start_period を調整。

5: プロキシ idle と Upgrade。

6: openclaw doctor。

7: ローテーション記録。

8: URL 問題なら remote matrix

関連リンクとナビ

リモートゲートウェイで gateway.remote.url を確認してください。

split-brain 記事でバイナリと設定を切り分けます。

daemon インストール runbook がヘルスチェック換算に有用です。

ホーム / 料金 / ヘルプ

FAQ と結び

FAQ は日常運用向けであり個人情報の評価は別チケットです。

bare metal とオーケストレータが同居するとき identity の所有者を決めます。

env と JSON はなぜ衝突する?

Compose は .env を早期に展開し、bind-mount は後からです。優先順位を文章化してください。

1008 は常に鍵ミス?

ポリシーや Origin のことが多いです。サーバ側メッセージを読んでください。

recreate 後にペアリングが固まる?

匿名ボリュームがファイルを失うので命名ボリュームへ切り替えます。

インシデントには compose project を記載。

まとめ:トークンの単一起源・ペアリングの恒久化・層別ヘルスがそろって Compose が運用可能になります。

限界:不正プロキシや Vault の乱れた順序は Compose が救えません。

対比:SFTPMAC のレンタル Mac は SLA と検証可能な転送で 24/7 ゲートウェイを補強します。

doctor 実行ログを残す。