若你已把 OpenClaw 閘道只綁在 127.0.0.1,下一步常見難題是:多區 vpshalo 各跑一組服務時,如何用同一套可稽核的入口規則對外,又能在營運面把各區健康與延遲摘要收成「一張圖」?本文以 Cloudflare Named Tunnel(cloudflared 將公開 hostname 的 ingress 固定對回本機埠,並示範以固定時間窗合併多節點 JSON 輸出;與 SSH 反向隧道那篇 分流:那裡談跳板與 -R,這裡談託管邊緣+程式化 ingress

全球 DNS、Worker 與 SSH 延遲取捨,可先讀 Halo 式全球入口決策矩陣;若團隊以 overlay 為主軸,請對照 Tailscale MagicDNS 多區探針文。以下假設你已在各區 vpshalo 具備 root 或等價權限,可安裝 cloudflared 並管理 systemd 單元。

架構與安全邊界

預設仍拒絕直開公網:OpenClaw 控制面不應以無鑑別方式監聽 0.0.0.0/0cloudflared 在本機只與 127.0.0.1 上的上游 HTTP 對話,對外 TLS 終止發生在 Cloudflare 邊緣;邊界變成「誰能改 DNS/Tunnel 設定」與「誰持有 TUNNEL_TOKEN」兩條治理線。

  • ingress 即程式碼:hostname → http://127.0.0.1:PORT 寫入版本庫可審 PR,避免口頭改埠造成漂移;每區可用同一 hostname 搭配 Geo 路由,或每區獨立子網域再於合併層對齊標籤。
  • 令牌與憑證分離:TUNNEL_TOKEN 用於節點向控制平面註冊;邊緣訪客憑證由 Cloudflare 自動續期。節點本地憑證快取目錄應納入備份演練,但與應用層 API 金鑰混在同一檔案權限模型。
  • 觀測合併:各區 exporter 或自寫探針輸出一行 JSON,帶上 regionlane;聚合器以五分鐘窗計算錯誤類別占比與 RTT 分位數,對外只發一組閾值,避免同一事故在多區重複告警。

可複現步驟

下列步驟在每一台 vpshalo 節點各執行一次;Cloudflare 側可共用同一隧道或依區拆隧道,視變更權限與爆炸半徑而定。

  1. 綁定 loopback:確認 OpenClaw 只聽 127.0.0.1:PORT;以 curl -fsS http://127.0.0.1:PORT/healthz(或文件中的健康路徑)在本機得到 200。
  2. 建立 Named Tunnel:於具備 Zone 權限的環境執行 cloudflared tunnel create <NAME>,再以 tunnel route dns 將公開 hostname 指到該隧道 UUID。
  3. 固定 ingress:config.yml(或等效設定)依序列出 ingress 規則,例如 hostname: claw.example.com → service: http://127.0.0.1:PORT,最末以 service: http_status:404 收斂未知主機名,避免誤配對外洩內部路徑。
  4. 下發 TUNNEL_TOKENcloudflared tunnel token <UUID> 取得令牌,寫入僅 cloudflared 服務帳號可讀的 EnvironmentFile;Git 與 CI 日誌中不得出現平文令牌。
  5. 常駐與退避:systemd 執行 cloudflared tunnel run,設定 Restart=on-failure 與合理 StartLimitInterval;升級 cloudflared 前先在 staging 節點演練憑證目錄還原。
# 範例:確認僅 loopback 監聽(PORT 請替換)
ss -lntp | grep 127.0.0.1

# 範例:以令牌前景除錯(正式環境請改 systemd)
export TUNNEL_TOKEN="<從 dashboard 或 CLI 取得>"
cloudflared tunnel --config /etc/cloudflared/config.yml run

合併多區「合成」輸出

多區同時跑 OpenClaw 時,營運面真正痛點往往是指標與錯誤類別被節點數放大。建議每區以同一 schema 吐出一行 JSON(含 regionrtt_mserror_class),由輕量聚合程序(例如五分鐘滑動窗)計算各區 p95 與錯誤占比,再折疊成單一時間序列寫入儀表板或告警規則。如此「合成」觀測仍保留下鑽到區域的能力,但 on-call 不必在同一根因上收到 N 封通知。

節點規格與計費界線以 公開價格方案 為準;隧道本身幾乎不吃 CPU,瓶頸多半在 upstream 推理或頻寬,選型時請預留 headroom。

FAQ(憑證、埠、令牌)

隧道憑證存在哪?要手動 renew 嗎? Named Tunnel 會在本機快取與控制平面協商的憑證材料(常見於使用者家目錄或 /etc/cloudflared 下由發行版決定的路徑)。一般不需手動 renew;若節點還原後遺失快取,請確認 TUNNEL_TOKEN 仍有效並讓程序重建,再觀察邊緣握手是否恢復。

本機埠怎麼選才不踩雷? 避免與系統保留埠衝突;同一主機上多個上游可用不同 PORT,並在 ingress 以不同 hostname 或 path 區隔。切記上游仍只綁 127.0.0.1,不要為了「方便除錯」暫時改成 0.0.0.0

TUNNEL_TOKEN 外洩怎麼辦? 視為長效機密:立即在 Cloudflare Zero Trust/Tunnel 介面旋轉或作廢該令牌,並在所有 vpshalo 節點替換 EnvironmentFile 後重載 cloudflared;同時檢查審計日誌是否有異常連線註冊。

和 SSH 隧道方案如何並存? 可並存於不同 hostname 或不同環境:內部維運走 SSH 反向隧道,對合作方或 Webhook 走 Tunnel。關鍵是讓 Runbook 寫清楚「哪個 hostname 對應哪條鏈路」,避免 DNS 與 ingress 雙頭馬車。

準備在 vpshalo 上落地多區 OpenClaw 與 Tunnel 時,建議先依區域與頻寬需求對照 公開價格方案,再於 購買/開通頁 選定節點;開通後即可依本文步驟安裝 cloudflared 並下發令牌,無須額外審批流程。

免責:OpenClaw 設定鍵、健康路徑與預設埠以你所用發行版為準;cloudflared 子命令與設定檔欄位以 Cloudflare 官方文件為準。vpshalo 產品邊界以官網公開頁為準。
公開頁 · 立即對照方案

以多區 vpshalo 承載 OpenClaw 與 Cloudflare Tunnel

ingress 與令牌治理寫清楚後,剩下是選對區域與規格;以下皆為官網公開入口,無需登入即可瀏覽。若要開通節點或對照計費,請直接前往購買/價格頁。

價格方案 購買/開通 技術部落格
返回首頁選節點