TLS 終端 · WebSocket · allowedOrigins · Docker リリース検証
Docker VPS で OpenClaw を動かし本番ホスト名と HTTPS を載せたいエンジニアは、Gateway の待受場所、TLS 終端の担い手、ブラウザで Control UI がクロスオリジンや不安定なフォールバックを報告する理由で立ち往生しがちです。本文は意思決定表でループバック+エッジプロキシとコンテナポートの公網バインドを対比し、最小の Caddy / Nginx リバプロ断片、WebSocket と X-Forwarded ヘッダー、ユーザー入力と揃える allowedOrigins の検収順を示します。OOM と初回 WASM はDocker VPS 長文トラブルシュートへ。インストール概要はv2026.4 インストール、本番露出はマルチチャネル強化、イメージ戻しは固定とロールバック。
Docker で本番化するときはホスト防火壁、127.0.0.1 の publish だけ、チェーン全体の証明書、HTTPS 切替に追随したチャネルコールバック URLもセットです。以下はオンコール用の一次分類で、細かいフラグは利用中バージョンの公式ドキュメント参照です。
0.0.0.0 筋肉記憶:WAF・レート制限・監査なしで Gateway を公網インターフェースに出すと爆風半径が一気に広がります。
WebSocket 半端:プロキシが Upgrade / Connection を通さずパネルが一瞬 502 やハンドシェイク失敗に見える。
Host と origin のズレ:ブラウザはホスト名 A、設定は IP や内部エイリアスのままで Control UI と API のクロスオリジンガードに引っかかる。
証明書と DNS の順序:DNS 反映前に発行したり自己署名と公開チェーンを混ぜるとモバイルと自動化クライアントで挙動がばらつく。
ディスクとログ:プロキシとコンテナ双方のアクセスログをローテしないと小型 VPS の inode が忙しい週に満杯になりフリーズに見える。
アップグレード窓:イメージ固定なしでプロキシ背後をローリングするとステージングとロールバック順を飛ばした新旧 Gateway の挙動分岐が起きる。
注:ブロッカーが OOM、Exit 137、初回 WASM 待ち、Control UI の allowedOrigins デバイスペアリングなら先に対照表記事へ。本稿はメモリプロファイルを繰り返しません。
この表は実験室から初めて本番ホスト名へ OpenClaw を上げるレビュー向けです。HTTPS、チャネルコールバック、観測性を一続きの検収ストーリーに載せます。
| 次元 | 127.0.0.1 Gateway + リバプロ TLS | コンテナポートを公網へ直バインド |
|---|---|---|
| 最小露出 | インターネットが触れるのは 443 のみ、アップストリームはループバック | 別途ネットワーク ACL と継続的なポート査定が必要 |
| 証明書運用 | Caddy / Nginx / ACME の一本化 | アプリや sidecar ごとに証明書を持ちドリフトしやすい |
| WebSocket | 成熟したプロキシモジュールがアップグレードとタイムアウトを処理 | ヘッダー落ちしがちで直叩きデバッグが穴を隠す |
| 観測 | エッジと上流ログを request_id で接続できる | 同等の集約とアラートを自前で組む必要がある |
本番の第一原理:「パネルが開く」と「チャネルが外部に公開した https ホスト名へ折り返せる」を同じチェックリストで同時に満たす。
18789)がローカル override と食い違うなら設定と compose を端到端検索し、プロキシだけ変えてコンテナの待受をズラさない。allowedOrigins にはブラウザ実利用の https オリジンを載せる。変更後はトラブルシュート記事の順でコールドスタートしキャッシュの誤判定を避ける。手順は compose が Gateway をループバック専用ポートで既に起動している前提です。インストール未完なら先にウィザードと compose 基線記事を閉じてください。
ホスト名を凍結:証明書発行前に A/AAAA がこの VPS を指すことを確かめ、TTL とメンテ窓を明記。
Gateway バインド確認:ホストで ss -lntp 等を使い待受が 127.0.0.1 の対象ポートのみか検証。
プロキシ選択:単一ノード最小構成なら Caddy 自動 HTTPS。既存 Nginx 資産へは stream/location テンプレで接合。
最小断片適用:下のブロック参照。上流はドキュメントポートと実ホスト名へ差し替え。
チャネルコールバック整合:IM や webhook の外部 URL は同一公網ホスト名とパス接頭辞を使う。
golden path 記録:「ブラウザで https ホストを開く」から「無害なハートビートまたは doctor 一度」までを内部 playbook に書きシフト引継ぎを楽にする。
openclaw.example.com {
encode gzip
reverse_proxy 127.0.0.1:18789
}
server {
listen 443 ssl http2;
server_name openclaw.example.com;
ssl_certificate /etc/letsencrypt/live/openclaw.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/openclaw.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 600s;
}
}
表はシフトメモとして使い、各行が具体的なログ項目やコマンド出力に結びつくようにし、「なんとなくネットが悪い」で終わらせない。
| 症状 | 疑わしい層 | 最初の一手 |
|---|---|---|
| https だけ失敗し上流への素の http は通る | 証明書チェーンか SNI | 信頼できるクライアントでチェーン検証、server_name と CN/SAN 突合 |
| 静的ページは開くがライブチャネルが即切れ | WebSocket プロキシタイムアウト | read timeout 延長、Upgrade がプロキシを通過するか確認 |
| コンソールがクロスオリジンや blocked origin | allowedOrigins に https オリジンがない | オリジン一覧を書き換え影響プロセスを全部再起動 |
| 外向き curl が 502、ローカル curl は 200 | プロキシ上流が古いポートかコンテナが 127.0.0.1 にいない | compose と publish マップをホップ毎に追う |
警告:マルチチャネル強化を読み終えるまで、デモのためにダッシュボードやデバッグ口を 0.0.0.0 にしない。
下の数値は単一 VPS でよく見る観測帯で、ディスクとタイムアウト見積り用でありベンダ SLA ではありません。
proxy_read_timeout か Caddy 相当を600 秒以上に。短いと切断に見える擬似障害になる。df と inode を実測。| 役割 | 像 | 推奨 |
|---|---|---|
| 個人サンドボックス | 低トラフィック、短いメンテで可 | 単一 Caddy+単一 compose+手動変更窓 |
| 小チーム本番 | 昼間マルチチャネル | イメージ固定+ステージング compose+プロキシと Gateway の段階的ロールバック |
| Mac / CI へ引継ぎ | 長ジョブと署名が同居 | Gateway は VPS に固定、ビルドは共有 Mac プールへ。表は先行記事参照 |
家庭回線や不安定な小規模クラウドだけを入口にすると動的 IP・ポートリスク制御・予期せぬスリープが重なる。純自前 DC だけに振ると TLS と多地域 DR に時間がかかりパートナーへ説明可能な公網入口を出しにくい。
持続可能な公開 https フロントと長寿命エージェントを iOS CI プールから分離したいなら、VpsMesh のクラウド Mac mini レンタルと常時 VPS の組み合わせが現実的な解になりがちです。計算と署名は契約ノードへ、Gateway とエッジ証明書は本 Runbook のまま自前運用でき、「一台が全部」という隠れ SPOF を避けられます。
ブラウザの完全なオリジン(ポート含む)が allowedOrigins に入っているか確認。混合コンテンツ、IP 直、ホスト名の混在も誤検知。複雑な compose はDocker VPS トラブルシュート。セルフサービスはヘルプセンター。
多くの場合アップストリームポートとヘルスチェックが不変か確認するだけ。パス接頭辞や WebSocket ルートが変わるときはリリースノートを読みイメージ固定とロールバック記事に沿って二重インスタンスで検証。