本單元整理 IoT 與 Web 實作中常見的外網轉址工具,包含 ngrok、Cloudflare Tunnel、Pinggy 與 LocalTunnel,說明它們如何把本機或區域網路中的 HTTP 服務暫時發布到外部網路。
適合搭配 Raspberry Pi、Pico W / Pico W2、Flask API、Node-RED、Webhook 接收端,以及 DDS Bridge 類型的實驗。
https://... 位址,再把該位址的流量轉送到本機的指定埠,例如 localhost:5000。| 名詞 | 說明 |
|---|---|
| Forwarding | 把公開網址收到的請求轉送到本機服務。 |
| Public URL | 外部裝置可以存取的網址,通常是 HTTPS。 |
| Local Service | 本機正在執行的應用,例如 Flask、Node-RED、Django 或測試 API。 |
| Authtoken / Login | 部分服務需要登入或設定 token 才能啟用更穩定的通道。 |
| TLS / HTTPS | 外部網址多半提供加密連線,但本機端可能仍是 HTTP。 |
curl http://127.0.0.1:5000。5000、8000、1880。curl -X POST http://127.0.0.1:5000/sensor \
-H "Content-Type: application/json" \
-d '{
"device_id": "test-local",
"temperature": 24.5,
"humidity": 58.2,
"timestamp_ms": 1710000000000
}'
| 工具 | 特點 | 適合情境 |
|---|---|---|
| ngrok | 知名度高、文件完整、操作簡單。 | 課堂展示、API 測試、Webhook 驗證。 |
| Cloudflare Tunnel | 可綁自訂網域,適合較正式部署。 | 長時間運作的服務、網站或 API 發布。 |
| Pinggy | 可直接透過 SSH 建立臨時網址,快速輕量。 | 短時間測試、臨時示範。 |
| LocalTunnel | Node.js 生態系常見,安裝簡單。 | 前端、Node.js、簡易教學示範。 |
brew install ngrok/ngrok/ngrok
ngrok config add-authtoken <YOUR_AUTHTOKEN>
ngrok http 5000
Forwarding https://abc123.ngrok-free.app -> http://localhost:5000
PI5_URL = "https://abc123.ngrok-free.app/sensor"
brew install cloudflared
cloudflared tunnel login
cloudflared tunnel --url http://localhost:5000
工具會回傳一個可公開存取的網址,例如:
https://random-name.trycloudflare.com
ssh -p 443 -R0:localhost:5000 a.pinggy.io
輸出中會顯示一個臨時公開網址,可把它指定給遠端裝置使用。
停止 SSH 連線後,該公開網址通常也會失效。
npm install -g localtunnel
lt --port 5000
lt --port 5000 --subdomain iot2026-demo
curl 先確認 API 正常。localhost:5000。PI5_URL = "https://your-public-url.example/sensor"
curl 驗證。| 檢查項目 | 成功條件 |
|---|---|
| 本機 API | curl 到 127.0.0.1 可成功回應 |
| 公開網址 | 其他裝置可連線並收到合理回應 |
| 外部裝置發送 | Pico W2 或外部程式可成功 POST |
| 後端處理 | 伺服器日誌、資料流或資料庫可看到新資料 |