iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0
AI 自動化

AI 情境英文口語教練——結合 LLM 與自動化工作流的個人化英文學習系統系列 第 27 篇

Day 28|認識 ngrok,將本機 API / Webhook 開放給外部測試

  • 分享至 

  • xImage
  •  

這幾週陸續做出了不少東西:FastAPI 後端、n8n 的自動化流程、RAG 資料庫。但回頭想一個很現實的問題:這些東西全都跑在我自己的電腦上,網址是 localhost 開頭的那種。

localhost 的意思是「這台電腦自己」,只有我的電腦能連得到。如果要讓朋友實際試用,或是讓外部服務(例如 Day 10 學的 Webhook 通知)打進來,別人根本找不到我的電腦在哪裡。今天要認識的 ngrok,就是解決這個問題的工具。

問題:為什麼 localhost 別人連不到

先把這個問題想清楚,後面才知道 ngrok 在幫什麼忙。

我的電腦通常藏在家用路由器後面,對外只有一個共用的網路位址,路由器預設不會讓外部的連線直接進來找某一台電腦。換句話說,就算我把 FastAPI 跑起來了,外面的人也沒有一條路可以走進來。

這個問題在這個專題裡會在兩個地方出現:

想讓別人試用時:前端要呼叫我電腦上的後端 API,別人根本連不到
Webhook 的情境:Day 10 學過 Webhook 是「對方主動打我給的網址通知我」,如果我給的是 localhost 網址,對方當然打不進來
ngrok 是什麼

ngrok 的做法很巧妙:它在我的電腦和網路上的一個公開位址之間,建立一條「通道」(tunnel)。

運作方式用比喻理解:原本我的電腦是一間沒有地址的房子;ngrok 幫我在外面租了一個有門牌的「接待處」,外面的人只要把訊息送到這個接待處,接待處就會透過一條專屬的地下通道,把訊息轉送到我家裡。對外看起來,我的服務好像有一個正式的公開網址,但實際上流量都是被轉進我自己的電腦。

最大的好處是:不用自己去設定路由器、不用租主機,一個指令就能讓本機服務暫時對外開放。

對應到這個專題,會用在哪裡

整理之後,今天想到兩個最直接的使用場景:

場景一:讓外部服務打進我本機的 n8n 或 FastAPI

如果 n8n 是跑在本機,它產生的 Webhook 網址預設也是 localhost 開頭,前端或其他服務打不進來。用 ngrok 開通道之後,就能拿到一個公開網址,貼到需要的地方。

場景二:Demo 前讓別人實際試用

Day 29、30 要做最終 Demo,如果想讓評審或朋友用自己的裝置實際操作,而不是只看我的螢幕,就需要一個大家都連得到的網址。ngrok 剛好能在不需要正式部署的情況下,先滿足這個需求。

基本使用流程

今天實際跑了一遍,流程其實滿單純:

註冊 ngrok 帳號並安裝,取得一組驗證用的 Token
把 Token 設定到本機
在終端機告訴 ngrok:「請把我電腦上的某個埠號(例如 FastAPI 跑的那個)開放出去」
ngrok 會回傳一個公開網址,格式大致是一串隨機字母加上 ngrok 的網域
把這個網址,當作原本的 localhost 網址使用

用 Day 16 學到的方法論驗證:拿到網址之後,先不急著接前端,先用 Postman 對這個公開網址打一個請求,確認通道本身有通,再去接其他東西。測試結果成功:用手機的行動網路(刻意避開家裡的 Wi-Fi)打這個網址,也能成功拿到後端的回應,確認真的是從「外面」連進來的。

今天遇到的幾個狀況,也順便記下注意事項

狀況一:免費版的網址每次重開都會變

ngrok 免費版每次重新啟動,拿到的公開網址都不一樣。這代表如果我把網址設定到 n8n 或前端裡,下次重開通道就會失效,要重新改一次。今天先接受這個限制,Demo 當天只要記得「先開 ngrok、再更新網址」這個順序就好。

狀況二:第一次開網址會看到一個提醒頁面

用瀏覽器打開免費版 ngrok 網址時,會先看到一個警告頁面,要點擊確認才能繼續。這個頁面對程式呼叫(API 請求)通常不影響,但如果是讓別人用瀏覽器試用前端介面,就要事先告知,避免對方以為是壞掉了。

狀況三:安全性要多想一步

這是今天最重要的提醒:用 ngrok 開放出去的服務,網路上任何知道網址的人都能連進來。 我的 FastAPI 如果沒有任何權限控管,等於把「呼叫我的 LLM API Key 去做事」的能力暫時開放給別人。所以今天的原則是:

只在需要測試或 Demo 的時候才開,用完立刻關閉
API Key 等機密資訊絕對不能寫在前端程式碼裡,必須放在後端(Day 7 也強調過這點,今天有了更具體的感受)
不要把公開網址隨意貼在公開的地方


上一篇
認識 RAG 與 FAISS,了解如何建立英文知識資料庫
下一篇
Day 28|認識 ngrok,將本機 API / Webhook 開放給外部測試
系列文
AI 情境英文口語教練——結合 LLM 與自動化工作流的個人化英文學習系統 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言