2025年5月18日 星期日

[Linux]申請一個Ngrok的免費網域作為webhook使用

為了讓一些本地端服務可長期用於監聽事件(event)並觸發(trigger)相應工作,Ngrok隨機產生暫時性的webhook URL是不合適的,因經實際測試,隨機產生的webhook URL開啟超過24小時就失效了,僅僅只能用於開發簡單測試用,如該篇參考文章

然而Ngrok針對免費用戶有提供一個固定網域的webhook,免費額度看來也相當充裕,使得上述的需求可以被滿足,配置環境和實作步驟如下。

配置環境:

1. 硬體: Raspberry Pi 4b/8G
2. 作業系統: Ubuntu 22.04 desktop LTS
3. 軟體: Docker version 28.1.1
4. 請先申請一個line bot

實作步驟:

1. 申請ngrok的免費網域

到Ngrok官網上,申請一個免費網域,完成後,可在左側導航欄點擊domain選項,即可看到網域資訊,如圖一所示。

圖一、申請和取得Ngrok domain
圖一、申請和取得Ngrok domain


2. 利用Ngrok的免費網域和Authtoken來啟動docker

  • 切換到Ngrok的Authtoken頁面,並取得Authtoken,如圖二所示。

圖二、取得Ngrok Authtoken
圖二、取得Ngrok Authtoken

  • 接著,利用docker run來啟動Ngrok,其中可看到固定網域被加入docker配置中,與原隨機產生的Ngrok網址的docker配置明顯不同。另外,指令中的http 5000指的是利用port 5000與第3步驟的python flask伺服器服務port 5000對接。而--domain定義ngrok的對外網域。

sudo docker run -d --name=ngrok \
--net=host \ 
-e NGROK_AUTHTOKEN=xxxxxxxxxx \
--restart unless-stopped \
ngrok/ngrok:latest http 5000 --domain=your-domain.ngrok-free.app


3. python flask伺服器程式碼

一個簡易範例,linebot的回覆訊息等於使用者的輸入訊息,可參考該篇文章Github程式碼


4. 設定LINE Developer後台的webhook URL,並啟用webhook

Line webhook設定如下,因為flask程式碼中配置一個路由/callback,記得加上。

https://your-domain.ngrok-free.app/callback


最後由line介面輸入訊息給該line bot,若返回相同訊息,即大功告成。

沒有留言:

張貼留言