AI / Automation 2026年4月13日

2026:レンタル Apple Silicon クラウド Mac 上で、Nginx リバースプロキシを通じて OpenClaw Webhook を公開する

MacXCode エンジニアリングチーム 2026年4月13日 約 12 分

OpenClaw のワークフローを起動する SaaS(CRM の Webhook、課題トラッカー、社内ジョブランナーなど)は、安定した HTTPS エンドポイントを必要とします。ゲートウェイを 127.0.0.1:18789 にバインドするのは インストールとデプロイ で推奨される安全な既定ですが、ループバックは外部からは使えません。本 2026 プレイブックでは、香港・日本・韓国・シンガポール・米国に置いたレンタルの Mac mini M4 上で Nginx を動かし、:443 で TLS を終端し、正しい WebSocket アップグレード ヘッダでゲートウェイへリバースプロキシする方法を示します。入口パターンの比較表ディレクティブチェックリスト7 ステップの手順書、JSON-LD と整合した FAQ を含みます。複数レイヤにまたがる障害では Tailscale メッシュアクセスlaunchd での API キーゲートウェイのトラブルシューティング と併読してください。

Webhook がほぼ常にリバースプロキシを要する理由

クラウド Mac では次の三つの現実が同時に立ち上がります。

  • TLS のライフサイクル — パブリック Webhook は 44360〜90 日ごとの有効な証明書を期待します。OpenClaw 自体に TLS を持たせると、証明書自動化がエージェントランタイムのアップグレードと強く結びつきます。
  • ヘッダの忠実性 — 上流は X-Forwarded-ForX-Request-Id、カスタム HMAC ヘッダを送ります。nginx がそのまま転送しないと監査トレイルが壊れます。
  • WebSocket の扇出 — ゲートウェイは長寿命接続にアップグレードします。Upgrade の配管が欠けると「LAN では動くが本番では 502」になります。
  • 運用の分離 — TLS スイートの調整やベンダー向け IP 許可リスト の追加では、OpenClaw プロセスツリー全体を再起動するより nginx のリロードの方が安価です。
譲れないこと:ゲートウェイはループバックに留める。エッジのリスナーは nginx(またはサービスメッシュのサイドカー)のものであり、0.0.0.0:18789 ではありません。

入口トポロジ:脅威モデルに合う行を選ぶ

パターン 接続主体 利点 欠点
パブリック nginx → 127.0.0.1:18789 インターネットの Webhook シンプルな DNS + ACME。ベンダーは VPN なしで到達できる WAF/IP ルールの規律が必要。スキャナが :443 を絶えず叩く。
Tailscale のみ tailnet 上の従業員 パブリック攻撃面なし。ACL は Tailscale 側 サードパーティ SaaS はサイドチャネルなしでは mesh に参加できない。
ハイブリッド パブリックのベンダー + 管理用 mesh コントロールプレーンとデータプレーンの責務分離 TLS スタックが二つ監視対象。どのホスト名がどのパスか文書化が必要。
踏み台からの SSH トンネル レガシー統合 Mac にインバウンドポートを開けない バースト Webhook にはスケールしない。再接続嵐で壊れやすい。

Nginx ディレクティブチェックリスト(HTTP/1.1 上流)

200 行の gist を貼る前に、server {} に次のディレクティブがあるか確認してください。

ディレクティブ / 設定 目的 典型的な落とし穴
proxy_pass http://127.0.0.1:18789; 復号済みトラフィックを OpenClaw へ送る localhost が IPv6 優先で解決される誤り—IPv4 ループバックを明示してください。
proxy_set_header Host $host; SNI 由来のホスト名を保持 Host を固定するとステージング用ホストを増やしたときマルチテナントルーティングが壊れる。
client_max_body_size 1 MB を超えるベンダー本体を許可 既定の 1m は OpenClaw の不具合に見える不透明な 413 を生む。
proxy_read_timeout 長いモデル往復を許容 短すぎるとゲートウェイがまだトークンをストリームしているのに 504 になる。
limit_req_zone 悪意のスキャナを抑制 ヘルスチェックを除外し忘れると自前の監視がフラップする。

map $http_upgrade $connection_upgrade { default upgrade; '' close; }

WebSocket アップグレード map と順序が重要な理由

OpenClaw のゲートウェイはストリーミング用チャネルで WebSocket を交渉します。nginx は上流に HTTP/1.1 を宣伝し、クライアントの Upgrade トークンを転送する必要があります。最小パターンは次のとおりです。

proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade;

遅延予算:nginx とゲートウェイが同一 Mac のベアメタル NVMe を共有する場合、ホップあたり RTT は通常 3〜8 ms 増えるにすぎません—別リージョンのオフボックス LB へヘアピンするよりはるかに安いです。

新規レンタルクラウド Mac での 7 ステップ手順書

  1. ゲートウェイをローカルで実証openclaw gateway statuscurl -v http://127.0.0.1:18789/health(パスはビルドにより異なる場合があります)。
  2. nginx をインストール — macOS では Homebrew:brew install nginx。Apple Silicon では設定は多くの場合 /opt/homebrew/etc/nginx 配下。
  3. TLS 素材を発行 — 任意の ACME クライアント。ピークの 15 分前 に renew フックが走るよう launchd に固定し、ピーク中ではない時間に再起動する。
  4. server ブロックを記述 — 本番とステージングで server_name を分ける。パスプレフィックスなしで同一上流ポートを再利用しない。
  5. nginx をリロードsudo nginx -t && sudo nginx -s reload。stderr を CI ログに残す。
  6. 外部からの合成チェック — tailnet 外の視点から、署名付きテストボディで curl -v https://hooks.example.com/openclaw
  7. ロールバックを文書化 — 設定のシンボリックリンクで旧版を保持。アップグレード/ロールバック メモで openclaw gateway の版を固定する。

ハードニング:IP 許可リスト、Request ID、launchd の順序

MacXCode のノードは有名なコロケーション接頭辞にあります—騒がしい隣人のせいで ASN 丸ごとブロックされることもあります。ベンダーが静的エグレス IP を提供する場合は nginx の allow/deny ペアに付け、違反を /var/log/nginx/openclaw-denied.log に記録し、構造化された OpenClaw ログ と相関させます。

launchd では、OpenClaw を所有するユーザセッションのブートストラップが完了したに nginx を起動するか、TCP 18789 が接続を受け付けるまで待つ小さなラッパーを使います。順序の不具合はコールドブート時に上流をダウン扱いにします。

FAQ:macOS クラウドインスタンス上の Nginx + OpenClaw

質問 回答
SSH 管理トラフィックに同じホスト名を使い回してよいか hooks.ssh. のように分割することを推奨—ファイアウォールの話が単純になります。SSH の基線は ヘルプ を参照。
Tailscale はまだ必要か 任意だがブレークグラス管理には推奨。上記メッシュ手順書と併用できます。
Webhook 利用者の近くで Mac mini M4 を借りるには 料金 でリージョンを比較。APAC の SaaS コールバックなら SG、ベンダーが米東に集中していれば US を選ぶことが多いです。

エッジ隣接エージェントに裸金属 Mac mini M4 が勝ち続ける理由

OpenClaw の負荷は、バースト CPU(トークンストリーム)、一定の NIC(Webhook + モデル呼び出し)、~/.openclaw 配下の機微なファイル I/O が混在します。Apple Silicon のユニファイドメモリにより、nginx のワーカーバッファと Node/Swift のゲートウェイプロセスが同一ダイに配置され、小型クラウド VM で見られる DRAM 超過割り当てによる騒がしい隣人がありません。MacXCode の 香港・日本・韓国・シンガポール・米国 にまたがる裸金属フリートにより、TLS 終端を Webhook 呼び出し元の大半に物理的に近づけつつ、SSHVNClaunchd の plist を対話的に調整することもできます。

まとめ:nginx をパブリック契約面、OpenClaw をプライベート実装として扱う。両方の設定をバージョン管理し、ステージングで reload を検証し、可観測性は本番 API ゲートウェイと同水準に保つ。別リージョンへパターンを複製する準備ができたら、料金 から始め、ヘルプ のチェックリストで接続性を検証してください。

本番 Webhook の隣で OpenClaw を動かす

HK · JP · KR · SG · US の M4 ノードを SSH/VNC と予測可能な NIC で。