2026年9月6日 星期日

OpenClaw 學習筆記 : 在樹莓派 Pi 4 安裝 OpenClaw (五)

在前一篇測試中, 我已將 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 服務配對. 

沒有留言 :