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 升級 標頭反向代理至閘道。你將獲得入口模式對照表、指令核對清單、七步上線手冊,以及與 JSON-LD 對齊的 FAQ。若事件跨越多層,請併讀 Tailscale 網格存取、launchd 中的 API 金鑰 與 閘道疑難排解。
為何 Webhook 幾乎必然需要反向代理
在雲端 Mac 上,有三條工程現實會同時成立:
- TLS 生命週期 — 公網 Webhook 預期 443 埠與每 60–90 天 輪換的有效憑證。若讓 OpenClaw 自行處理 TLS,會把憑證自動化與 Agent 執行階段升級綁死在一起。
- 標頭保真 — 上游會傳送
X-Forwarded-For、X-Request-Id以及自訂 HMAC 標頭。若 nginx 未原樣轉送,稽核鏈會斷裂。 - WebSocket 扇出 — 閘道會升級長連線;缺少
Upgrade管線時,典型症狀是「內網正常、正式環境 502」。 - 維運隔離 — 調整 TLS 套件或為廠商網段加 IP 允許清單 時,重載 nginx 比重啟整棵 OpenClaw 行程樹便宜得多。
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 會產生模糊的 413,看起來像 OpenClaw 缺陷。 |
proxy_read_timeout |
涵蓋長模型往返 | 過低會在閘道仍串流輸出 token 時回傳 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 上的七步手冊
- 本機驗證閘道 —
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 用戶端;在 launchd 中固定續期勾點,使其在流量高峰前 15 分鐘 完成重啟,而非高峰中。
- 撰寫 server 區塊 — 正式與預發使用不同
server_name;無路徑前綴時不要複用同一上游埠。 - 重載 nginx —
sudo nginx -t && sudo nginx -s reload;在 CI 日誌中擷取 stderr。 - 公網合成探測 — 在非 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 可接受連線——順序錯誤會導致冷啟動時 nginx 將上游標為不可用。
常見問題:macOS 雲端執行個體上的 Nginx + OpenClaw
| 問題 | 回答 |
|---|---|
| 能否複用同一主機名承載 SSH 管理流量? | 建議拆分主機名——hooks. 與 ssh.——以簡化防火牆敘述;SSH 基線見 說明。 |
| 還需要 Tailscale 嗎? | 可選但強烈建議用於緊急管理通道;可與上文 mesh 手冊組合。 |
| 在離 Webhook 呼叫端更近的地方租用 Mac mini M4? | 在 定價 上比對區域;多數 APAC SaaS 回呼選 新加坡,若廠商集中在美國東部則選 美國。 |
為何裸金屬 Mac mini M4 仍是貼邊 Agent 的最優解
OpenClaw 負載混合了突發 CPU(token 流)、穩定的網路介面(Webhook + 模型呼叫)以及 ~/.openclaw 下的敏感磁碟 I/O。Apple Silicon 統一記憶體讓 nginx worker 緩衝與 Node/Swift 閘道行程共址,而不會像小型雲 VM 那樣出現 DRAM 超售的吵雜鄰居。MacXCode 在香港、日本、韓國、新加坡與美國的裸金屬機隊,讓你把 TLS 終結器實體上靠近多數 Webhook 呼叫端,同時仍可透過 SSH 或 VNC 在需要互動調整 launchd plist 時登入機器。
結論:把 nginx 視為公網契約面,把 OpenClaw 視為私有實作。兩套設定都要版本化,在預發驗證 reload,並讓可觀測性與正式環境 API 閘道同級。準備在其他區域複製該模式時,從 定價 出發,並以 說明 清單驗證連通性。