把 OpenClaw 閘道放在租用遠端 Mac上,本質是「永遠在線的 Agent 控制面」:筆電可睡、家網可斷,但工作階段、頻道與工具路由仍由專用主機持有。官方 Gateway Runbook 將遠端首選定為 Tailscale/VPN,並以 SSH 轉發為後備;Tailscale 專頁則說明如何在閘道維持 loopback 的前提下,由 Serve(僅 tailnet)或 Funnel(公網)承接 HTTPS 與 WebSocket。以下步驟可直接貼進 Runbook,部署基底可參考站內Docker 安裝與加固與SSH/VNC 首次連線清單。
為何用租賃 Mac 常駐閘道
自購 Mac 適合長期資產化;日租/月租則適合驗證 pipeline、短期專案或不想維護實體機的團隊。閘道與模型推理、CI 不同,更看重7×24 listener、穩定對外連線與可審計設定——節點選擇上同樣建議先定義 RTT/頻寬需求,再決定落點與租期(本站筆記列表另有跨區延遲與買租對照文可供延伸閱讀)。
與官方文件對照:綁定與最小權限
下列對照表濃縮 Gateway、Remote access、Tailscale 的安全預設,方便與內部合規對齊。
| 主題 | 官方建議/限制 | 租用 Mac 實務 |
|---|---|---|
| gateway.bind | 預設 loopback;非 loopback 須 token/password | 優先維持 loopback,用 Serve 或 SSH -L 暴露,避免把 18789 直接打在機房 LAN |
| Tailscale Serve | tailnet 內 HTTPS;可選 allowTailscale 身分標頭驗證 UI/WS | API 路徑仍要憑證;若主機上還跑不可信程式,關閉 allowTailscale、改強制 token |
| Funnel | 強制 password;需 HTTPS、MagicDNS、funnel 節點屬性等 | 僅在必須公網操作面時啟用;密碼放環境變數,寫入設定檔需額外控管權限 |
| 遠端 CLI | --url 時須顯式 --token/--password | 自動化腳本在輪換後同步更新,避免「隧道通了但認證仍舊」的假陰性 |
子網路由與 Serve/Funnel 決策
子網路由(Subnet Router)讓 tailnet 內裝置經由充當閘道的 Mac存取 RFC1918 內網服務——例如僅內網可達的 registry、License 或舊版 HTTP 工具。於租賃機上廣告路由前,務必在 Tailscale 管理後台核准最小前綴,並在該 Mac 開啟 IP 轉發/檢查本機防火牆,避免成為意外中繼。
Serve適合營運與節點僅在 tailnet:閘道仍在 127.0.0.1,對外由 Tailscale 注入轉發標頭。Funnel則把同一入口暴露到公網——官方明確要求密碼模式,且平台對埠與用戶端變體有限制;若只是「團隊遠端連線」,多數情境 Serve+ACL 即足夠轉化為可審計的最小暴露面。
CLI 快速實驗(正式環境請改設定檔或編排):
# 僅 tailnet:Serve(閘道維持 loopback)
openclaw gateway --tailscale serve
# 公網(慎):Funnel + 密碼——須先滿足 tailnet 政策與版本
openclaw gateway --tailscale funnel --auth password
ACL 收斂與令牌輪換
在 Tailscale ACL 中把連線圖畫清楚:誰能連閘道主機的 Serve/轉發埠、閘道行程能連哪些上游(模型 API、Git、Webhook)。預設拒絕、逐條放行,與 OpenClaw 側工具出站白名單互補——後者可參技能沙箱與出站白名單。
令牌輪換建議與供應商維護窗對齊:產生新 OPENCLAW_GATEWAY_TOKEN(或密碼),更新遠端環境與 openclaw gateway restart,確認 openclaw gateway status 與 openclaw channels status --probe 正常後,再批次更新筆電/CI 的 gateway.remote.token 或環境變數,最後作廢舊值並留存變更紀錄。如此可把「租賃機曾暴露於共享映像或備份」的風險壓在可旋轉的密鑰上。
連通性 FAQ
能 tailscale ping 但 WebSocket 失敗: 多為未 Serve/未 SSH 轉發 18789,或客戶端連到錯誤埠;用 openclaw gateway status 在伺服端確認 listener。
反覆 unauthorized: 優先檢查是否用 --url 卻忘記帶 --token;其次核對輪換後雙端是否同一密鑰。
Funnel 啟動被拒: 檢查是否已設 password、節點是否具 funnel 屬性、MagicDNS/HTTPS 是否就緒。
子網路由不通: 後台核准狀態、Mac 轉發與 ACL 標籤是否允許你的裝置使用該 route;先用目標 IP 直連排除 DNS。