如果你有做過 LINE Bot、LINE Login、LINE Messaging API,應該很快會遇到一個問題:LINE 的 webhook 需要一個公開 HTTPS 網址,但你開發時的程式通常跑在自己電腦的 `localhost`。
這時候就會用到 ngrok。
簡單講,ngrok 可以把你本機正在跑的服務,例如 `http://localhost:3000`,轉成一個外部可以訪問的 HTTPS 網址。LINE Platform 就能把 webhook event 打到這個網址,你的本機程式也就能收到 LINE 訊息、加入好友、按鈕點擊、postback 等事件。
ngrok 最適合的場景不是正式上線,而是本機開發、Webhook 測試、快速 demo。你不用先買主機,也不用先設定 DNS,就能讓外部服務打到你的 localhost。
ngrok 是什麼?
ngrok 官方把自己定位成 cloud networking platform,可以把本機 apps、APIs、services 快速放到公開網址上。最常見的用法,就是分享 localhost。
例如你的 Node.js 或 Python server 跑在:
http://localhost:3000
你只要執行:
ngrok http 3000
ngrok 就會給你一個公開 HTTPS 網址,像這樣:
https://your-assigned-name.ngrok-free.app
外部服務打這個網址,流量會透過 ngrok tunnel 轉回你的本機 `localhost:3000`。所以你不用把電腦直接暴露在網路上,也不用開防火牆 inbound port。
為什麼 LINE 串接會用到 ngrok?
LINE Messaging API 很多功能都靠 webhook。當使用者傳訊息給你的 LINE 官方帳號,LINE 平台會把事件送到你設定的 webhook URL。
問題是,LINE 不可能打到你電腦裡的 `localhost`。因為 `localhost` 對 LINE 伺服器來說,是它自己的本機,不是你的電腦。
所以你需要一個公開網址,LINE 才能送 event 過來。ngrok 就是最常見的開發工具之一。
- 本機開發 LINE Bot。
- 測試 webhook 是否正常收到訊息。
- 檢查 signature 驗證。
- 測試 postback、rich menu、加入好友事件。
- Demo 給客戶看,不用先部署到正式主機。
對我來說,ngrok 的價值就是省掉早期開發部署成本。你還在確認 LINE Bot 流程時,不需要急著租主機、設 nginx、申請 SSL、設定 DNS。先讓功能跑起來比較重要。
LINE webhook 用 ngrok 的基本流程
假設你本機有一個 LINE webhook server,跑在 `3000` port。
npm run dev
# 或
node server.js
接著開另一個 terminal:
ngrok http 3000
ngrok 會產生一個 HTTPS URL。假設是:
https://abc123.ngrok-free.app
那你在 LINE Developers Console 裡的 Webhook URL 就可以填:
https://abc123.ngrok-free.app/webhook
接著按 Verify,如果 LINE 打得到你的本機 server,就會通過。這樣你傳訊息給 LINE 官方帳號,本機 terminal 就能看到 webhook event。
ngrok 免費嗎?免費方案要注意什麼?
ngrok 有免費方案,但不是無限制免費。以官方 pricing 和 free plan limits 來看,免費方案適合快速測試與開發,包含指定的免費 dev domain、最多 3 個 online endpoints,以及流量和 request 限制。
免費方案大概可以理解成:
- 可以免費開始使用。
- 會有 ngrok 指派的 dev domain。
- 不能自訂自己的網域名稱。
- HTTP/S endpoints 會有 interstitial page。
- 有流量與 request 限制。
- 適合開發、測試、demo,不適合正式營運服務。
所以如果你只是測 LINE webhook,免費方案通常很夠。真正上線後,我會建議改成正式主機、Cloudflare Tunnel、自有網域,或其他穩定部署方式。
那 Cloudflare Tunnel 也可以做到一樣的事嗎?
可以。你剛剛提到的應該是 Cloudflare Tunnel,不是 tune。它透過 `cloudflared` 在你的機器和 Cloudflare 之間建立 tunnel,讓外部流量可以進到你的本機或內網服務。
Cloudflare Tunnel 也能拿來做 webhook 測試,概念跟 ngrok 很像:把本機服務變成外部可以連到的 HTTPS URL。
Cloudflare 也有 Quick Tunnels,也就是 `trycloudflare.com` 這類快速測試 tunnel。官方文件有提醒,Quick Tunnels 是給 testing 和 development 使用,不保證 SLA 或 uptime,不應該拿來部署正式網站。
所以兩者都可以做本機服務公開,但使用情境會有一點差異。
| 工具 | 適合用途 | 注意事項 |
|---|---|---|
| ngrok | 快速測 webhook、本機 demo、LINE 串接開發 | 免費方案有限制,不能自訂網域,HTTP/S 有 interstitial page |
| Cloudflare Tunnel | 自有網域、Cloudflare 生態、長期公開內部服務 | 設定比 ngrok 多一點,通常需要 Cloudflare 帳號與網域管理 |
| Cloudflare Quick Tunnel | 不用登入快速測試、本機臨時公開 | 只適合 testing / development,不保證 uptime |
ngrok vs Cloudflare Tunnel,我會怎麼選?
如果是教學、測試、第一次做 LINE Bot,我會先用 ngrok。原因很簡單:安裝後一行指令就能跑,對新手比較友善。
- 第一次測 LINE webhook:選 ngrok。
- 只是臨時 demo 給客戶看:選 ngrok 或 Cloudflare Quick Tunnel。
- 你已經有 Cloudflare 管理網域:可以考慮 Cloudflare Tunnel。
- 要長期穩定公開服務:不要只靠免費臨時 tunnel,要規劃正式部署。
- 要自有網域與正式品牌網址:Cloudflare Tunnel 或正式主機會比較適合。
我自己的看法是:ngrok 是開發階段最舒服的入口;Cloudflare Tunnel 比較像你熟悉 Cloudflare 後,可以放進正式架構或長期測試流程裡的工具。
LINE 串接時要注意的安全問題
用 ngrok 很方便,但不要因為方便就忽略安全。
- Webhook endpoint 要驗證 LINE signature。
- 不要把 Channel secret、access token 寫死在前端。
- 不要把 ngrok URL 放到公開文件或社群上。
- 開發完記得關掉 ngrok。
- 不要用免費 tunnel 承接正式流量。
- 如果測試付款、會員資料或客戶個資,要更小心。
ngrok 是讓外部打到你的本機服務,所以你的本機 server 寫得太鬆,外部也可能碰到。開發環境不是完全安全區,要有基本防線。
這跟 vibe coding 有什麼關係?
現在很多人會用 AI agent 寫 LINE Bot、Webhook、API server。AI 很快可以幫你生出 Express、FastAPI、PHP endpoint,但如果你沒有 ngrok 或 Cloudflare Tunnel,LINE 這種外部服務根本打不到你的本機。
所以 ngrok 其實是 vibe coding 很實用的一塊拼圖。AI 幫你寫 webhook,ngrok 幫你把 webhook 暫時公開,Playwright 幫你測前端流程,GitHub 幫你管版本。這樣才不是只靠 AI 寫爽,而是有一套可以驗證的開發流程。
我的結論:LINE 串接初學者先學 ngrok,很值得
如果你要做 LINE 串接,我會建議先把 ngrok 學起來。它不是什麼很難的工具,但會讓 webhook 開發順很多。
你可以先在本機寫程式,透過 ngrok 給 LINE 一個公開 HTTPS webhook URL,確認訊息收得到、回覆正常、事件格式看得懂。等流程穩了,再部署到正式主機或 Cloudflare Tunnel。
這樣開發節奏會比較順:先驗證功能,再談架構;先讓 webhook 跑起來,再決定正式部署方式。
ngrok 的價值不是取代正式主機,而是讓你在 LINE 串接開發階段,不被部署流程卡住。
常見問題 FAQ
ngrok 是什麼?
ngrok 是一個可以把本機服務公開到外部網路的 tunneling 工具。你可以把 `localhost:3000` 轉成一個 HTTPS URL,讓 LINE、Slack、Stripe 等外部平台在開發階段打到你的本機 webhook。
為什麼 LINE webhook 需要 ngrok?
因為 LINE Platform 需要把事件送到公開 HTTPS webhook URL,但本機的 `localhost` 不是外部可訪問網址。ngrok 可以暫時提供公開 URL,讓 LINE event 轉發到你的本機開發 server。
ngrok 免費方案可以用來測 LINE 嗎?
可以,免費方案很適合 LINE webhook 開發、測試和 demo。不過免費方案有 endpoint、流量、request、網域等限制,也不適合拿來跑正式營運服務。正式上線還是建議部署到穩定主機或正式 tunnel 架構。
Cloudflare Tunnel 可以取代 ngrok 嗎?
可以做到類似事情,也能把本機或內網服務公開成 HTTPS 網址。ngrok 比較適合新手快速測試;Cloudflare Tunnel 比較適合已經使用 Cloudflare、需要自有網域或較長期架構的人。Cloudflare Quick Tunnel 也適合臨時測試,但官方提醒不保證 SLA 或 uptime。
ngrok 可以拿來正式上線 LINE Bot 嗎?
不建議把免費 ngrok 當正式上線方案。它很適合開發與測試,但正式服務需要穩定網域、監控、安全設定和部署流程。正式上線可以考慮 VPS、Cloudflare Tunnel、自有網域或雲端平台。














