在前一篇測試中, 我已將 Gateway 從預設的只監聽本機 127.0.0.1 (localhost) 存取改為綁定到所有網路介面 (網址 0.0.0.0), 這樣可讓區網內其他主機也可存取 Web UI 主控台頁面. 本篇則是要用 ngrok 來取得 HTTPS 網址並綁定 18789 埠, 讓外網也可以存取 Web UI 主控台.
在前面的第二篇測試中, 我已在 Pi 4 上安裝好 Ngrok, 用 Yahoo 信箱註冊了一個新帳號後取得認證金鑰, 然後用此金鑰將 Ngrok 綁定到此新帳號, 參考 :
首先檢查 Ngrok 版本 :
pi@pi4b:~ $ ngrok --version
ngrok version 3.39.10
然後下 ngrok http 18789 :
pi@pi4b:~ $ ngrok http 18789
這樣 Ngrok 會為 OpenClaw 的 Gateway 建立一個 https://xxxx.ngrok-free.app 網址, 並綁定到 http://127.0.0.1:18789 本機網址 :
複製此網址到外網主機 (例如我的 LG Gram 筆電) 的瀏覽器網址列貼上, 就會連線到 Pi 4 的 OpenClaw 的 Web UI 頁面 :
但是底下出現 "瀏覽器來源不允許" 訊息, 即使貼上 OpenClaw 設定檔 openclaw.json 中的 token 到 "網關令牌" 欄後按 "連接" 鈕還是一樣 :
我問 Gemini, 原來跟前一篇區網網址存取一樣, 是被 OpenClaw 設定檔預設的安全限制阻擋了, 用 nano 開啟 openclaw.json 設定檔 :
pi@pi4b:~ $ nano ~/.openclaw/openclaw.json
在 gateway 屬性中加入子屬性 controlUi, 並在其孫屬性 allowedOrigins 中填入 ngrok 網址 :
"controlUi": {
"allowedOrigins": [
"https://starxxx-yyyyy-zzzzzzz.ngrok-free.dev"
]
},
按 Ctrl + O 存檔再按 Ctrl + X 離開 nano 後重啟 OpenClaw 的 Gateway 服務 :
pi@pi4b:~ $ systemctl --user restart openclaw-gateway.service
重新整理外網瀏覽器的 Web UI 網頁還是一樣顯示 "瀏覽器來源不允許", 用 下列指令檢視設定檔, 發現剛剛用 nano 編輯設定檔所新增的屬性根本沒把網址寫進去 :
pi@pi4b:~ $ openclaw config get gateway
OpenClaw 2026.7.1-2 (0790d9f)
I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.
{
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"allowInsecureAuth": true
},
"auth": {
"mode": "token",
"token": "__OPENCLAW_REDACTED__"
},
"tailscale": {
"mode": "off",
"resetOnExit": false
},
"nodes": {
"denyCommands": [
"camera.snap",
"camera.clip",
"screen.record",
"contacts.add",
"calendar.add",
"reminders.add",
"sms.send",
"sms.search"
]
}
}
Gemini 建議用下列指令直接修改設定檔, 不要用 nano 去編輯 :
pi@pi4b:~ $ openclaw config set gateway.controlUi.allowedOrigins '["https://starxxx-yyyyy-zzzzzzz.ngrok-free.dev"]'
│
◇
OpenClaw 2026.7.1-2 (0790d9f) — Half butler, half debugger, full crustacean.
Updated gateway.controlUi.allowedOrigins. Restart the gateway to apply.
再次用 openclaw config get gateway 指令檢視設定檔 :
pi@pi4b:~ $ openclaw config get gateway
OpenClaw 2026.7.1-2 (0790d9f) — Hot reload for config, cold sweat for deploys.
{
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"allowedOrigins": [
"https://starxxx-yyyyy-zzzzzzz.ngrok-free.dev"
],
"allowInsecureAuth": true
},
"auth": {
"mode": "token",
"token": "__OPENCLAW_REDACTED__"
},
"tailscale": {
"mode": "off",
"resetOnExit": false
},
"nodes": {
"denyCommands": [
"camera.snap",
"camera.clip",
"screen.record",
"contacts.add",
"calendar.add",
"reminders.add",
"sms.send",
"sms.search"
]
}
}
這樣便確認網址已經寫進去了, 重啟 OpenClaw 的 Gateway 服務 :
pi@pi4b:~ $ systemctl --user restart openclaw-gateway.service
按外網瀏覽器 Web UI 網頁中的連接鈕, 這回 "瀏覽器來源不允許" 就消失了, 變成 "需要裝置配對" :
複製底下 2 中的配對指令貼到終端機執行配對 :
pi@pi4b:~ $ openclaw devices approve d9dd91cf-abec-4e3c-bdc5-6f39644361e9
│
◇
OpenClaw 2026.7.1-2 (0790d9f) — Hot reload for config, cold sweat for deploys.
│
◇
│
◇
Approved e99ee4c23140e1e4649ec8bd11507aae08c70a68c499270439986d244803fbc5 (d9dd91cf-abec-4e3c-bdc5-6f39644361e9)
顯示 Approved 表示配對成功, 回到 Web UI 頁面, 再次按連接鈕就可以順利顯示 Web UI 控制台頁面了 :
但是要注意的是, 樹莓派中綁定 Ngrok 到 18789 埠的終端機視窗不可以關閉, 也不可以按 Ctrl+C 跳出綁定, 否則所建立的通道會被拆除而無法從外網存取, 再次綁定所建立的 https 網址會變更 (除非你付費), 需修改 OpenClaw 設定檔並再次重啟 Gateway 服務配對.






沒有留言 :
張貼留言