已在 KVMNODE 獨佔雲端 Mac 跑通 OpenClaw、需要 Gateway 不只聽 127.0.0.1 的團隊,在 2026 年會先撞上非回環綁定必須搭配明確認證:把 gateway.bind 改成 lan 卻未讓 launchd 讀到 OPENCLAW_GATEWAY_TOKEN,常見 refusing to bind without auth;SSH 能開 Control UI、同事筆電卻 unauthorized 則多半是探針 URL 與 listen 位址不一致。本文整理 loopback 與 lan 決策樹、.envopenclaw.json 單一事實源、六步驗收命令塊、gateway.reload.mode=hybrid 與硬重啟分界,以及 gateway.controlUi.allowedOrigins 與 LaunchAgent 漂移檢查;與 launchd token升級遠端認證診斷梯子官方 install-daemon 交叉閱讀。
01

loopback 與 lan:何時值得付非回環綁定的認證成本

OpenClaw Gateway 預設 loopback,因為 KVMNODE 雲端 Mac 的威脅模型不是家用 Wi-Fi:主機在供應商網段上,有自動掃描與多地 SSH 值班。loopback 加 ssh -L 或 Tailscale 可讓 18789 不意外暴露在錯誤介面,仍能在本機瀏覽器開 Control UI。單一工程師、從同一 SSH 工作階段裝通道,且從不分享儀表板時,這仍是預設最佳解,可對照 無頭 SSH 跟做

gateway.bind=lan 適用於區網內必須直連 Gateway 的場景:同辦公室第二台 Mac 以 remote 模式跑 OpenClaw 用戶端、無法為每台主機維護 SSH 隧道的內部健康彙整、或同事機器不經單一筆電轉發就要開 Control UI。近版建置在無有效 token 與 gateway.auth.mode 時會拒絕在非 loopback 位址監聽,沒有匿名 LAN 後門。應把拒絕當成安全特性,避免週五為除錯放寬 bind、週末忘記改回。

01

單人 SSH 隧道:維持 loopback;本機探針可不帶 token;變更單記錄轉發命令。

02

小團隊零信任:優先 Tailscale 與 ACL,再考慮供應商 RFC1918 上的 raw lan。

03

固定內網探針:lan + token,監控直接打 /healthz

04

多端 Control UI:lan + token + allowedOrigins;勿在無邊界 ACL 下把 18789 暴露公網。

05

生產通道:微信 ClawBot 等仍依賴 Gateway 常駐,bind 模式不能取代 全天候穩定 的 launchd 口徑。

模式bind認證典型誤判
一人 SSHloopback本機可選為測試開安全群組
遠端 macOS Applan 或 tailnetlan 必須 tokentoken 只在 shell rc、plist 沒有
維運探針私網 NIC 上 lanAuthorization Bearer探針仍打 127.0.0.1
升級後漂移設定寫 lan仍留 gateway.tokendoctor 綠、RPC unauthorized

平台負責人應在資產清冊註記 bind 意圖:生產 lan、staging 僅 loopback、或僅隧道。若尚未完成 install-daemon 驗收,請先走 官方 install-daemon 再放大 bind 範圍。

02

單一事實源:.env 託管 OPENCLAW_GATEWAY_TOKEN 與 openclaw.json

KVMNODE 雲端 Mac 上較穩定的生產做法是密鑰與結構分離:在 ~/.openclaw/.env 寫入 OPENCLAW_GATEWAY_TOKEN、限制檔案權限,openclaw.json 只宣告 gateway.bindgateway.auth.mode(通常 token)、埠與 reload 設定,不在 JSON 重複明文 token,避免備份與截圖外洩。OpenClaw 在行程啟動時解析環境變數;launchd 必須載入與互動式 CLI 相同的檔案,否則會重演 升級認證 裡的 split brain。

LaunchAgent 漂移常起於有人在 .zshrc export token、SSH 驗證通過,plist 常駐行程卻 unauthorized。應把 env 鏡射到 plist 的 EnvironmentVariables,或讓 CLI 與 daemon 共用同一 state 目錄。勿把 .env 提交 git;共用主機應在工程師離職時輪替 token。廢棄的 gateway.token 鍵必須移除,新 schema 讀 gateway.auth.token 或 env 替換,靜默忽略會讓儀表板 401 迴圈,對照 診斷梯子 L2。

位置存放避免
~/.openclaw/.envOPENCLAW_GATEWAY_TOKEN全域可讀權限
openclaw.jsongateway.auth.mode、bindJSON 內明文 token
LaunchAgent plistPATH、WorkingDirectory、env 路徑2025 複製一次的舊 token
工單/聊天僅遮罩後四碼截圖含完整 token

一份 token、一個 .env、一組 plist 設定檔——三份明文不是冗餘,是漂移。

輪替時產生新 token、更新 .env、執行 openclaw gateway restart,同一變更窗更新用戶端與探針。部分輪替會讓手機 App 仍通、 cron 探針失敗,表面像基礎設施不穩而非認證問題。可搭配 openclaw config get gateway.auth.mode 與 launchd token 文,避免小版本升級後 env 再次遺失。

03

六步跟做:停舊行程、寫 .env、設 lan、install 常駐、healthz、用戶端 token 驗收

請在擁有 LaunchAgent Gateway 的同一台雲端 Mac上操作,通常經 SSH 連 KVMNODE。勿在筆電改 bind 而 Gateway 在新加坡——會分裂設定真源。

01

停舊行程:openclaw gateway stoplsof -nP -iTCP:18789 確認清空,見 安裝排錯

02

寫 .env:新增 OPENCLAW_GATEWAY_TOKENchmod 600

03

設設定:gateway.bind=langateway.auth.mode=token

04

刷新常駐:openclaw gateway install 或 doctor 要求時 --force;PATH 對齊 which openclaw

05

健康探針:本機 curl /healthz,再以 LAN IP 帶 Bearer token 重試。

06

用戶端驗收:Control UI 或 remote App 帶 token 連線;變更單記錄 bind、輪替日與 deep status JSON。

bash
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
openclaw gateway stop
lsof -nP -iTCP:18789 -sTCP:LISTEN || true
umask 077
printf 'OPENCLAW_GATEWAY_TOKEN=%s\n' "$(openssl rand -hex 32)" >> ~/.openclaw/.env
openclaw config set gateway.bind lan
openclaw config set gateway.auth.mode token
openclaw gateway install --force
openclaw gateway restart
openclaw gateway status --deep
curl -sf "http://127.0.0.1:18789/healthz"
curl -sf -H "Authorization: Bearer $(grep OPENCLAW_GATEWAY_TOKEN ~/.openclaw/.env | cut -d= -f2)" \
  "http://$(ipconfig getifaddr en0):18789/healthz"

提示:部分雲端映像主要介面非 en0,請 ifconfig 確認一次並寫進 Runbook。

分散式團隊應明確 SSH 到租賃主機驗收,勿在本機複製設定檔。驗收週請每日從 loopback 與 LAN 雙向打 healthz,plist 改動後的 bind 迴歸會先反映在探針而非通道使用者抱怨。

04

hybrid 熱重載與硬重啟分界,以及 controlUi allowedOrigins

gateway.reload.mode=hybrid 可在營業時間套用部分設定而不全量重啟,適合微調通道路由。但bind 位址、監聽埠、auth.mode、token 來源變更必須 supervised restart,因為 socket 與認證中介在啟動期初始化。僅依賴 hybrid 切到 lan 後,常見 status 仍寫 loopback、lsof 卻是舊二進位 LAN listener 的半套用狀態。

變更hybrid需重啟
通道路由表常可探針仍舊路由時
gateway.bind/埠必重啟並 lsof 驗證
gateway.auth.mode必重啟
token 輪替重啟後更新用戶端
controlUi.allowedOrigins有時CORS 仍擋則重啟

遠端瀏覽器開 Control UI 需設定 gateway.controlUi.allowedOrigins 為團隊 HTTPS 來源,勿用公網萬用字元。origins 與 token 認證並用,避免私網 lan 上任意網站驅動 Gateway。改完 origins 若瀏覽器仍 CORS 失敗,優先 gateway restart 而非假設 hybrid 已生效。

05

排錯分叉、LaunchAgent 漂移檢查與雲端 Mac 選型

refusing to bind without auth:已離開 loopback 但 plist 未讀到 token。EADDRINUSE:手動 gateway start 與 plist 雙註冊。healthz unauthorized:探針未帶 Bearer 或 CLI 快取舊 token。Runtime running · probe failed:listen 與探針 URL 不一致,見 診斷梯子 L1。

A

LaunchAgent 漂移:SSH 的 which openclaw 對 plist ProgramArguments,見 CLI 對齊

B

Env 漂移:launchctl print 須含 token 路徑,見 launchd token

C

變更證據:工單附 deep status、healthz 狀態碼、plist Label。

宿主lan Gateway 體驗維運結論
合蓋筆電睡眠導致 LAN listener 抖動僅試驗
共用 VM鄰居干擾、非 Apple launchd 常態自建監控負擔大
KVMNODE 獨佔雲端 Mac穩定 NIC、launchd、六區生產 lan + 通道預設

注意:未完成 token 就放大 bind 會引來掃描雜訊與假模型逾時工單。

同一台主機若並跑 iOS CI,記憶體尖峰可能讓 healthz 變慢而非 bind 失效,應升 M4 Pro 或拆池而非 incident 中改回 loopback。對需可稽核、lan Gateway 與通道同機的團隊,KVMNODE Mac Mini 雲端租用通常是更優解:獨佔 Apple Silicon、六區、按天至月租。檔位見 定價頁,操作見 幫助中心,下單見 訂購入口