名前空間の比較 · network_mode の決定 · 逆 WebSocket · allowedOrigins · 6 ステップの Runbook
Compose を使用して OpenClaw の自己構築メンテナーを VPS 上で実行する私はよく次のような錯覚に遭遇します。docker compose psすべてのグリーン ログとゲートウェイ ログもブラシ化されていますが、ローカルまたはバイパス コンテナの openclaw CLI は、ハンドシェイク タイムアウトまたは 502 です。。根本的な原因はほとんどの場合次のようなものにあります。ネットワーク名前空間とリスニングアドレスの組み合わせモデル キー自体ではなく、モデル キー自体に問題があります。この記事で得られるのは、誰がどんな問題を抱えているのか?一文で位置づけると、3 レベルの症状ツリーを使用して、「実行中のプロセス」と「実際に到達可能なプロセス」を分離します。;真ん中で使われているルックアップ テーブル コンバージェンス ブリッジ、ホスト、および network_mode: サービス;再利用6 ステップの再現可能なランブックポート公開、ループバックバインディング、リバース生成WebSocketを組み合わせるallowedOrigins閉じたループにつながれます。最後に追加された引用可能なパラメータの事実と意思決定マトリックス。 Compose ベースラインとリソース上限をよく読んでください。Docker Compose 実稼働ベースライン、「複数インスタンスの分離」を参照してください。クロストークを防ぐために同じマシン上の複数のインスタンス、ゲートウェイ強化リストを参照してください。生産強化一覧; 移動するにはノードと出口の安定性が必要です注文ページ。
作曲するhealthcheck多くの場合、コンテナ内のループバックまたはプロセスの生存のみをプローブします。自動的に証明されない「CLIコンテナからゲートウェイサービス名まで」のパスは、DNS、iptables、ユーザーモードプロキシの3層で確立されます。次の 5 つの項目は、作業指示書に常に一緒に表示されます。それらを分解すると、トラブルシューティングのログはすぐに薄くなります。
127.0.0.1 でリッスン:ゲートウェイがループバックのみをバインドしている場合、サービス名を使用している同じブリッジ上の他のサービスは接続を拒否されます。症状はランダムなタイムアウトに似ていますが、実際にはネットワーク名前空間から出ることはありません。
CLI はホスト上で実行されましたが、アドレスはコンテナーにコピーされました。バンドルopenclaw-gateway:18789ホスト シェル構成を書き込んだ後、解析とルーティングがすぐにずれてしまいます。
逆生成では HTTP のみが転送され、アップグレードは転送されません。ブラウザまたは CLI が WSS を使用すると、エッジで 400 が返されるか、サイレントに切断されますが、アプリケーション ログにはゲートウェイの準備ができていることが示されます。
allowedOrigins は実際のオリジンと一致しません。運用ドメイン名、イントラネット エイリアス、および Tailscale MagicDNS 名が混在しており、ハンドシェイクはアプリケーション層で拒否されますが、ネットワーク パケット キャプチャは「すべて問題ないようです」。
network_mode: サービス アップグレード レース:共有スタックのサービス再起動順序が変更された後も、ダウンストリーム接続は依然として古い IP または古いポート マッピングに接続されており、断続的に成功が示されます。
次のセクションのマトリックスをレビュー ページとして印刷します。アーキテクチャ変更ごとに変更できるセルは 1 つだけです。また、「同じ名前空間内のカールと外部制御カール」の 2 つの出力を変更命令に添付します。これにより、回帰のコストを大幅に削減できます。
「時間ディメンション」のレイヤーを追加: Compose のローリング アップデート中に、新しいコンテナと古いコンテナが一時的に共存します。 DNS キャッシュとアプリケーション接続プールが調整されていない場合、次のように動作します。最初は成功しましたが、数分後に失敗しました。現時点では、急いでタイムアウトを長くしないでください。まず、イニシエータで解析リフレッシュと接続再利用の比較を実行して、取得したアップストリーム アドレスがタイムアウトと一致していることを確認する必要があります。docker inspect現在のエンドポイントは一貫しています。ユーザー モード プロキシまたは企業透過プロキシもスタックしている場合は、次のことを忘れないでください。CONNECTトンネルターゲットそしてターゲットへの直接接続プロキシ層で 407 がアプリケーション認証の失敗として扱われないように、これらを個別に記録します。
最後の点は見落とされがちです。MTU と断片化クロスクラウドまたはクロスオペレーターリンクでは、「時折のタイムアウト」に増幅されます。大きなパケットのみが失敗し、小さなパケットのヘルス チェックが常に緑色の場合は、最初にビジネス コード パスを変更するのではなく、パケット キャプチャ ウィンドウを単一の WS フレーム サイズと TLS レコード層の境界に狭める必要があります。
上記のシグナルをすべて変更管理に記録した後、再度開きますopenclaw logs通常、エッジ アクセス ログとの時間調整により、問題を「形而上学的なネットワーク」から単一の構成フィールド;これは、外部の助けを求めるときに最小の繰り返しパッケージに含める必要があるコンテキストの厚さでもあります。
ネットワークモデルを選択する場合は、次のことも記入してください。誰が接続を開始するか、どのアドレスに解決されるか、どの NAT 層を通過するか。このテーブルがないと、チームは「ポートの変更」、「extra_hosts の変更」、「アップストリームの変更」の間を行ったり来たりすることになります。
| モデル | 代表的なモニタリング書き込み方法 | 他のサービスから同じファイルにアクセスする | ホストプロセスへのアクセス |
|---|---|---|---|
| デフォルトのブリッジ + ポート マッピング | コンテナ内0.0.0.0または特定のポートを公開する | Compose サービス名と内部ポートを使用する | 使用127.0.0.1:映射端口またはホストネットワークカードのIP |
| ホストネットワーク | スタックをホストと共有することは、多くの場合、ホストの可視アドレスをバインドすることと同じです。 | 同じプロジェクト内の他のコンテナがブリッジをロールバックしない場合、できないサービス名を再利用して古いパスにアクセスします | コンテナと並行して実行する場合、ポートの競合とファイアウォールの INPUT チェーンを優先します。 |
| network_mode: service:gateway | netns をゲートウェイと共有し、同じループバックの観点を持ちます。 | 補助容器は直接開けることができます127.0.0.1:网关端口 | ホストは引き続きリリース ポートまたは逆生成を使用する必要があり、自動的には継承されません。 |
真の到達可能性の定義は次のとおりです。イニシエーターと同じネットワーク名前空間ここで、同じホスト名、ポート、TLS パラメータのセットを繰り返し使用すると、一貫した応答が得られます。 「ラップトップで一度カールさせました」の代わりに。
次のシーケンスでは、意図的に「最も安価な観察」を最初に配置します。いずれかのステップが失敗した場合は、下方推測を停止し、出力を保存する必要があります。言語がゲートウェイのインストール言語と一致しない場合は、に戻ります。ドクターマニフェストによるインストールフィールド名を比較します。
イニシエータの場所を確認します。コマンドがホスト、ゲートウェイ サイドカー コンテナ、または完全に独立した CLI コンテナで実行されるかどうかをマークします。出力hostnameそしてip routeまとめ。
HTTP 層の探索:イニシエーター netns のターゲット ホスト名とポートに対して TLS またはプレーンテキスト GET を実行し、ステータス コードと応答本文のプレフィックスを確認し、純粋な DNS の問題を排除します。
WebSocket プローブ:既知のアップグレード可能なパス、レコード エッジ、およびアプリケーション リターン ヘッダーを使用してハンドシェイクを開始します。アプリケーションログのタイムスタンプと一致します。
リスニング マトリックスを確認します。ゲートウェイコンテナでリスニングアドレスが127.0.0.1;サービス間アクセスが必要な場合は、次のように変更します。0.0.0.0または、共有ネットを導入してドキュメントを同期します。
アンチジェネレーションクワドルプル:アップストリームがコンテナ IP または公開ポートを指しているかどうか、およびそれが透過的に送信されているかどうかを確認します。ConnectionそしてUpgrade、タイムアウトが短すぎるため、長時間の接続が切断されるかどうか。
原点の収束を適用します。ブラウザ、CLI、CI の 3 種類の真実を挙げてください。Originまたは、同等のソース文字列を使用して、構成項目を 1 つずつ確認してください。 1 つの項目が欠けている場合、リリースは不完全とみなされます。
docker compose ps
docker compose exec cli sh -lc 'getent hosts openclaw-gateway; curl -fsS -o /dev/null -w "%{http_code}\n" http://openclaw-gateway:18789/health || true'
curl -fsS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:18789/health || true
docker compose logs --no-color --tail=200 openclaw-gateway
ヒント:サービス名とポートをウェアハウス内の実際の値に置き換えます。ヘルス パスが異なる場合は、「netns の両方の層で同じ URL を 1 回実行する」方法を変更しないでください。
このセクションには次の内容のみが含まれますコードと構成で名前を付けることができます事実を明らかにし、「CDN に何か問題があると感じます」などの監査対象外の発言は避けます。 mem_limit とログ回転口径が必要な場合に返されます。実稼働ベースラインを構成する。
ports:マッピングによりホスト上に DNAT ルールが作成されます。ホストのローカルファイアウォールポリシーとDockerチェーンの対話シーケンスを誤解すると、「コンテナは通信できるがホストは通信できない」、またはその逆の現象が発生します。知らせ:ベースラインを記録せずに、アップストリーム、ゲートウェイ リスニング、および CLI 設定を同時に変更しないでください。変更を三角測量すると、ロールバックが分割できなくなります。
「CLI とゲートウェイがループバック パースペクティブを共有する必要があるかどうか」をブール値フィールドとして書き込み、共有するかどうかを決定します。network_mode: service:またはホスト。マトリックスはスローガンではなくレビュー用です。
| 制約 | より安全なデフォルト | 批判的な受け入れ | 主なリスク |
|---|---|---|---|
| CLI とゲートウェイには同じ構成ファイルがあります | ブリッジ + 明示的にリッスンする0.0.0.0 | サービス名の解決は内部ポートのcurlと一致します。 | ファイアウォールを公開ポートのドキュメントと同期するのを忘れた |
| localhost セマンティクスを共有する必要がある | サイドカーの使用network_mode: service:gateway | サイドカーの再起動によって古い接続プールが導入されない | ボリュームのマウント権限と組み合わせたアップグレード順序 |
| 宿主が成熟し、再生した | 公開されたループバック + アンチジェネレーション TLS 終端のみ | WS アップグレードのエッジからアップストリームへのパケット キャプチャは一貫しています | allowedOrigins は、CLI で使用される URL パターンをオーバーライドしません。 |
「複数のトンネル スクリプト」または「手動ホスト変更」に長期間依存すると、MTTR が個人的な記憶に結びついてしまいます。上流の証明書またはイントラネット DNS が変更されると、トラブルシューティングは全スタッフ会議にまで発展します。比較すると、バージョンの反復可能なコマンド、リスナー行列、および元のリスト実稼働システムに似ています。
よくある誤解:502 が表示されたらモデル キーを回転します。ほとんどの場合、キーを変更する前に、まずセクション 3 の 2 層の HTTP および WS の探索を完了する必要があります。
純粋なスクリプトは、リストを書き込まずに一時的にポートを開きます。監査やコンプライアンスのシナリオで「デフォルトの拒否と明示的なリリース」を証明することは困難です。 OpenClaw を固定出口、ホスト名、mTLS ポリシーとともにアーカイブする必要がある場合、自作 VPS のアドホック ネットワーク層には、多くの場合、重要な変更指示がありません。 iOS ビルド、デスクトップ リレー、エージェント常駐の場合独占的な地域枠およびネットワーク枠が期待できます「ホストとコンテナ ネット間の推測のやり取り」を減らしたいチーム、VpsMesh の Mac Mini クラウド レンタルは、多くの場合、より良いソリューションです: 排他的ノードは監視と ACL 記述の固定化を促進し、チームのプライベート ネットワーク ランブック境界を説明するには同じ言語を使用します。価格と仕様を見る価格ページ、接続とヘルプを参照してくださいヘルプセンター。
初めCLI ネットと同じHTTP 検出を実行し、次に WebSocket アップグレードをテストし、最後に CLI 構成内のホスト名がホスト ループバックまたは期限切れのサービス エイリアスを誤って使用していないかどうかを確認します。リストを強化する必要があるときにまた会いましょう生産強化一覧。
補助プロセスがゲートウェイと同じネットワーク スタックおよびループバック パースペクティブを共有する必要がある場合に使用されます。アップグレードする場合、共有サービスの再起動シーケンスを Runbook に書き込み、それと一致させる必要があります。ヘルプセンター公式の接続手順を確認してください。
アップストリームのタイムアウト、アップグレード関連のヘッダー転送、またはアプリケーションの欠落allowedOrigins真実の情報源は隠されていません。キーやモデルのルーティングに触れる前に、エッジをアプリケーション ログに合わせてください。注文と輸出の要件については、を参照してください。価格ページ。