在前一篇測試中, 我已在 Pi 4B 上順利安裝好 OpenClaw, 但執行 OpenClaw 時產生的網址為 localhost:18789 的內網網址, 無法作為 LINE 或 Telegram 的 webhook 網址 (因為 LINE 或 Telegram 需要 https 網址才能找到位於內網的 OpenClaw).
解決方案之一是安裝 ngrok, 它可以為內網應用程式提供 https 網址, 但免費版提供是動態隨機 https 網址, 每次主機重開機或重新執行 ngrok 網址就會改變, 如此一來就必須去修改 LINE/Telegram Bot 的 Webhook 網址與 OpenClaw 的 .env 設定檔, 要付費版才會提供靜態網址. 在測試階段使用免費版 ngrok 即可, 如果要在本地端要打造全自動無人值守的龍蝦 AI 助理就需要買付費版 (另一個付費方案是使用 Cloudflare)
本系列之前的文章參考 :
1. 申請 Ngrok 帳號 :
首先到 Ngrok 官網 :
按右上角的 SIGN UP 鈕 :
可以用 GitHub 或 Gmail 帳戶快速註冊, 也可以用 Email 註冊 (密碼至少需 10 個字元), 我這次使用 Yahoo 信箱 :
它會寄一封認證信到郵箱 :
開啟認證信, 按下認證連結會登入並開啟 Ngrok 儀錶板的安裝設定頁面 :
按 Copy 複製認證金鑰 (AuthToekn) 貼到記事本存檔備用 :
2. 安裝 Ngrok :
接下來開啟 Pi 4 終端機, 使用 apt install 來安裝 Ngrok, 但在正式安裝之前, 有些前置作業須先完成後才能順利安裝 :
(1). 將 Ngrok 數位簽章加入信任 CPG 金鑰庫 :
此步驟是要將 Ngrok 數位簽章 (金鑰) ngrok.asc 放到系統的 trusted.gpg.d (信任金鑰庫), 這樣後面執行 apt install ngrok 安裝指令時, 樹莓派會用它來比對下載下來的檔案簽章, 如果中途被駭客調包或檔案毀損將導致簽章比對不符, 系統就會拒絕安裝, 這樣便能保證所安裝的 ngrok 是官方原廠發行的 :
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc
pi@pi4b:~ $ curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGFGa/IBEAC0pgrns33QSiSipIKRnUCLeXX8d8WQjeqOqVEA6QlavAW54hKn
uHbbf151LFp0eGGaTp5ppJih2u9geiE8GxVACMuCHdlI0d35wAkucr+15qG+rfxm
qLkGGWARsRni3RJwg9R6/MwBgG ...
... (略) ...
FHIT8wNII9bhe7NvXBG7RcA6hvjcRO3gp+usaO1MzRDnbmosRQoeGSjh9txMQVIQ
HiRXcKdw6yyrtu12KMD/nJwgbEomikgPfEqRPtTTKYGjwV0/BQcMvJ/3u3AQCDYd
asvZu3xH2Cn0aoGMg+jqPVzyC0vY/SQQqmTHjz+msFu3OUsnXsJ6zQaxfGle5O4o
9zWY/VMfdn2r9I7sHNk2Sxu3ZALyorHHqeuHBKnM6Ui6ISrWr/9SAPaHN14IR/Le
/7JXRqfXsWxyTbOUVnmRWIXPXHU=
=ghCR
-----END PGP PUBLIC KEY BLOCK-----
(2). 將 Ngrok 下載網址加入套件庫 (軟體源清單) :
此指令會在系統的軟體源目錄中建立一個 ngrok.list 檔案, 裡面紀錄 Ngrok 官方下載伺服器的網址, 這樣當執行 sudo apt update 時, 樹莓派就會根據此網址去查看 ngrok 目前有哪些最新版本可以下載 :
echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list
pi@pi4b:~ $ echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list
deb https://ngrok-agent.s3.amazonaws.com buster main
(3). 更新套件庫清單 & 安裝 ngrok :
完成前置步驟後, 用下列指令更新軟體源清單, 便能順利從 Ngrok 倉庫下載安裝 ngrok :
sudo apt update
sudo apt install ngrok -y
pi@pi4b:~ $ sudo apt update
已有:1 http://deb.debian.org/debian bookworm InRelease
下載:2 http://deb.debian.org/debian-security bookworm-security InRelease [34.8 kB]
下載:3 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
下載:4 https://ngrok-agent.s3.amazonaws.com buster InRelease [20.3 kB]
下載:5 http://deb.debian.org/debian-security bookworm-security/main arm64 Packages [323 kB]
下載:6 http://archive.raspberrypi.com/debian bookworm InRelease [55.0 kB]
下載:7 https://ngrok-agent.s3.amazonaws.com buster/main arm64 Packages [12.9 kB]
下載:8 http://deb.debian.org/debian-security bookworm-security/main armhf Packages [300 kB]
下載:9 https://ngrok-agent.s3.amazonaws.com buster/main armhf Packages [12.9 kB]
下載:10 http://archive.raspberrypi.com/debian bookworm/main armhf Packages [580 kB]
下載:11 http://archive.raspberrypi.com/debian bookworm/main arm64 Packages [580 kB]
取得 1,974 kB 用了 5s (403 kB/s)
正在讀取套件清單... 完成
正在重建相依關係... 完成
正在讀取狀態資料... 完成
218 packages can be upgraded. Run 'apt list --upgradable' to see them.
安裝 ngrok :
pi@pi4b:~ $ sudo apt install ngrok -y
正在讀取套件清單... 完成
正在重建相依關係... 完成
正在讀取狀態資料... 完成
下列【新】套件將會被安裝:
ngrok
升級 0 個,新安裝 1 個,移除 0 個,有 218 個未被升級。
需要下載 7,431 kB 的套件檔。
此操作完成之後,會多佔用 0 B 的磁碟空間。
下載:1 https://ngrok-agent.s3.amazonaws.com buster/main arm64 ngrok arm64 3.39.10 [7,431 kB]
取得 7,431 kB 用了 8s (959 kB/s)
選取了原先未選的套件 ngrok。
(讀取資料庫 ... 目前共安裝了 131151 個檔案和目錄。)
正在準備解包 .../ngrok_3.39.10_arm64.deb……
Unpacking ngrok (3.39.10) ...
設定 ngrok (3.39.10) ...
完成安裝後檢視 ngrok 版本 :
ngrok version
pi@pi4b:~ $ ngrok version
ngrok version 3.39.10
(4). 綁定 Ngrok 帳號 :
ngrok 軟體必須與 Ngrok 帳號綁定才能開通安全隧道, 複製上面註冊 Ngrok 帳號時取得之認證金鑰 (AuthToekn), 貼到下面指令最後面 :
ngrok config add-authtoken 我的Token
若出現 "Authtoken saved to configuration file" 表示綁定成功.
(5). 啟動 ngrok 外網穿透服務 :
接下來要啟動樹莓派上的 ngrok 程式連線到 Ngrok 雲端伺服器, 透過雙方握手建立起一條專屬加密虛擬隧道, 並且為位於內網的 OpenClaw 網頁與通訊埠 18789 建立一個 https 公網網址, 這樣所有連到該網址的流量都會透過隧道安全地引導到樹莓派本地端正在執行的 OpenClaw 服務中, 指令如下 :
ngrok http 18789
可見 Ngrok 已為 OpenClaw 建立一個 https://xxxx.ngrok-free.app 網址, 把這網址設定為 LINE/Telegram 的 Webhook, 當用這兩個通訊軟體向 OpenClaw 下達指令時, 訊息會先到達 Ngrok 的雲端伺服器, Ngrok 會透過與樹莓派之間已建立的隱形隧道將訊息傳給樹莓派上的 ngrok 程式, ngrok 接收到後立刻轉交給正在 localhost:18789 待命的 OpenClaw.
(6). 備份樹莓派 TF 卡映像 :
完成上面後先關機取出 TF 卡, 用 Win32DiskImager 備份映像檔, 避免以後 TF 卡異常要從頭重建系統很花時間, 直接從映像檔復原最快 (換新卡也可以). 在這一步做是因為要保留系統復原後綁定其它 Ngrok 帳號的彈性. 關於 Win32DiskImager 備份映像檔作法參考 :





沒有留言 :
張貼留言