2026:レンタル Apple Silicon クラウド Mac 上で、Nginx リバースプロキシを通じて OpenClaw Webhook を公開する
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 は 443 と 60〜90 日ごとの有効な証明書を期待します。OpenClaw 自体に TLS を持たせると、証明書自動化がエージェントランタイムのアップグレードと強く結びつきます。
- ヘッダの忠実性 — 上流は
X-Forwarded-For、X-Request-Id、カスタム HMAC ヘッダを送ります。nginx がそのまま転送しないと監査トレイルが壊れます。 - WebSocket の扇出 — ゲートウェイは長寿命接続にアップグレードします。
Upgradeの配管が欠けると「LAN では動くが本番では 502」になります。 - 運用の分離 — TLS スイートの調整やベンダー向け IP 許可リスト の追加では、OpenClaw プロセスツリー全体を再起動するより 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;
新規レンタルクラウド Mac での 7 ステップ手順書
- ゲートウェイをローカルで実証 —
openclaw gateway statusとcurl -v http://127.0.0.1:18789/health(パスはビルドにより異なる場合があります)。 - nginx をインストール — macOS では Homebrew:
brew install nginx。Apple Silicon では設定は多くの場合/opt/homebrew/etc/nginx配下。 - TLS 素材を発行 — 任意の ACME クライアント。ピークの 15 分前 に renew フックが走るよう launchd に固定し、ピーク中ではない時間に再起動する。
- server ブロックを記述 — 本番とステージングで
server_nameを分ける。パスプレフィックスなしで同一上流ポートを再利用しない。 - nginx をリロード —
sudo nginx -t && sudo nginx -s reload。stderr を CI ログに残す。 - 外部からの合成チェック — tailnet 外の視点から、署名付きテストボディで
curl -v https://hooks.example.com/openclaw。 - ロールバックを文書化 — 設定のシンボリックリンクで旧版を保持。アップグレード/ロールバック メモで
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 呼び出し元の大半に物理的に近づけつつ、SSH や VNC で launchd の plist を対話的に調整することもできます。
まとめ:nginx をパブリック契約面、OpenClaw をプライベート実装として扱う。両方の設定をバージョン管理し、ステージングで reload を検証し、可観測性は本番 API ゲートウェイと同水準に保つ。別リージョンへパターンを複製する準備ができたら、料金 から始め、ヘルプ のチェックリストで接続性を検証してください。