為什麼在 Zeabur 部屬後不需要使用 Ngrok?——完整指南
更新日期: 2025 年 1 月 12 日
本文為 Zeabur 部屬基礎指南,第 5 篇:
當你將專案成功部屬到 Zeabur 平台後,你可能會疑問:我還需要使用 Ngrok 嗎?
答案是:不需要!
本篇文章將針對 為什麼 Zeabur 不需要 Ngrok、Zeabur 如何自動分配網域以及如何正確設定公開 URL,進行詳細說明,讓你更理解這些工具的使用情境與差異。
什麼是 Ngrok?
Ngrok 是一款用於本地開發的工具,它可以讓你透過一個臨時的公開 URL,將本地的伺服器暴露到網際網路上,主要用於:
- 測試 Webhook 回調(如 LINE Pay、Stripe、PayPal 等)
- 展示本地開發中的專案
- 遠端存取本地伺服器
為什麼 Zeabur 上不需要 Ngrok?
Zeabur 已自動提供公開的網域名稱
當你將專案部屬到 Zeabur 平台後,Zeabur 會自動為你的專案,分配一個穩定且可直接訪問的 公開網域名稱,例如:
https://your-project.zeabur.app
這個自動生成的網址可直接用於:
- 第三方 API 的 Webhook 回調(如 LINE Pay、Stripe 等)
- 正式環境的網站訪問
- 伺服器間的 API 整合測試
不再需要 Ngrok 來生成臨時的公開 URL,每次重啟也不需要重新生成網址。
Zeabur 與 Ngrok 的差異比較
功能 | Zeabur | Ngrok |
---|---|---|
公開網域名稱 | 永久且穩定 (your-project.zeabur.app ) | 每次重啟 URL 會變動 |
適用情境 | 部屬後的正式環境與測試環境 | 本地測試環境 |
HTTPS 支援 | ✅ 內建免費 HTTPS 加密 | ✅ 支援,但需要付費開通自訂域名 |
Webhook 測試 | ✅ 可直接使用 Zeabur 網域名稱 | ✅ 主要用途之一 |
適用專案規模 | ✅ 正式專案、測試專案皆適用 | ⚠️ 僅適用於本地測試階段 |
什麼是 Webhook?
Webhook 是一種在網路服務之間傳遞即時資料的機制。
它允許一個應用程式在特定事件發生時,自動將資料或通知發送到另一個應用程式的指定 URL(端點)。Webhook 常用於觸發式通知與自動化流程。
Webhook 的基本原理
Webhook 的工作方式可以用一個簡單的例子來說明:
- 訂閱 Webhook 事件
- 你在一個服務(如 GitHub、Stripe、LINE Pay)設定一個 Webhook,並提供一個 回調 URL(如
https://yourapp.com/webhook
)。- 事件發生
- 當某個事件發生(如用戶完成付款、程式碼提交、使用者註冊),該服務會自動發送一個 HTTP POST 請求到你設定的 Webhook URL。
- 接收與處理
- 你的伺服器收到這個請求後,會根據請求內的資料執行相對應的動作,例如:
- 更新資料庫記錄
- 發送通知
- 執行程式碼
Webhook 與 API 的差異
比較項目 Webhook API(Application Programming Interface) 觸發方式 事件驅動,自動觸發 請求驅動,需要手動發送請求 資料傳輸方式 HTTP POST 事件推送 HTTP GET/POST 請求與回應 使用情境 付款完成通知、程式碼推送 查詢天氣、取得用戶資料等 範例 LINE Pay 付款完成通知 呼叫天氣 API 取得天氣資訊 資料傳輸方向 服務主動傳送資料到你的伺服器 你的伺服器主動向服務請求資料 Webhook 的常見應用場景
Webhook 在許多自動化與即時通知場景中被廣泛使用:
✅ 金流服務通知
- LINE Pay、Stripe、PayPal
- 當用戶完成付款後,自動將付款資訊傳送至你的伺服器,以便完成訂單更新或發送通知。
✅版本控制通知
- GitHub Webhook
- 當有人提交程式碼 (Push) 到 GitHub 倉庫時,自動觸發 CI/CD 工具,如 GitHub Actions 進行自動化測試與部屬。
✅ 即時訊息推播
- Slack、Discord
- 當有新訊息或特定事件發生時,自動推送通知到群組頻道。
✅ 電子商務通知
- 當用戶下單時,自動將訂單資訊發送至倉儲系統,以便自動出貨。
Webhook 工作範例
範例:使用 LINE Pay 進行付款完成通知
- 使用者付款完成
- LINE Pay 將付款資訊透過 Webhook 傳送到你的伺服器
- 你的伺服器接收到 Webhook 後:
- 更新訂單狀態
- 發送付款成功通知
- 將付款紀錄保存到資料庫
Webhook URL: https://yourapp.com/linepay-webhook
範例回應資料 (JSON 格式):
{ "transactionId": "123456789", "amount": 500, "status": "COMPLETED" }
如何在 Zeabur 上正確設定公開網域?
當你部屬 Django 專案到 Zeabur 後,無需 Ngrok,只需按照以下步驟即可完成正確設定:
移除 Ngrok 相關環境變數
- 登入 Zeabur 控制台
- 進入專案的「環境變數」設定
- 刪除以下不再需要的變數:
HOSTNAME=<your-ngrok-subdomain>.ngrok-free.app
使用 Zeabur 提供的自動網域
- Zeabur 會自動分配一個穩定的公開網域名稱,例如:
https://your-project.zeabur.app
- 這個網址可直接用於 LINE Pay 回調 URL 或其他 API 測試。
自訂網域設定(可選)
如果你想要使用自訂網域名稱,如 https://mywebsite.com
,可在 Zeabur 控制台中設定:
- 前往「網域名稱設定」
- 點擊「新增自訂網域」
- 將你的網域名稱(如
mywebsite.com
)輸入,並根據指示完成 DNS 設定 - Zeabur 會自動提供 HTTPS 加密憑證,確保安全性
如何在 Django 專案中設定 Zeabur 網域?
修改 settings.py
在 Django 專案的 settings.py
中,更新 ALLOWED_HOSTS
:
import os
ALLOWED_HOSTS = [
os.environ.get('HOSTNAME', 'your-project.zeabur.app'),
'your-custom-domain.com'
]
移除 Ngrok 相關設定(如 python-dotenv
)
如果你之前有使用 .env
與 Ngrok 相關的環境變數,請確保這些變數已移除,並改用 Zeabur 直接分配的網域名稱。
常見問題與錯誤排除
為什麼 Ngrok URL 會隨每次啟動變動?
原因:Ngrok 生成的是臨時 URL,每次啟動都會重新分配一個新的 URL。
解決方法:Zeabur 提供的是穩定的公開網域名稱,適合正式上線使用。
Webhook 無法正常回調
原因:可能是你的 ALLOWED_HOSTS
未正確設定。
解決方法:請在 settings.py
中新增 Zeabur 分配的網域名稱:
ALLOWED_HOSTS = ['your-project.zeabur.app']
自訂網域無法正常工作
原因:可能是 DNS 設定未正確完成。
解決方法:
- 確認你的 DNS 提供商是否已將 A 記錄指向 Zeabur 提供的 IP 地址。
- 等待 DNS 設定生效(最多 24 小時)。
總結:為什麼 Zeabur 取代了 Ngrok?
- 穩定的公開網域名稱:Zeabur 提供永久且穩定的網域名稱,適用於正式環境與 API 測試。
- 免費 HTTPS 加密:內建自動的 HTTPS 安全加密,無需額外設定。
- 無需重複設定:部屬完成後,Zeabur 網域名稱保持不變,無需每次重啟都重新配置。
- 自訂網域支援:可自由設定自訂網域,並自動管理 SSL 憑證。
Zeabur 是 Ngrok 更加穩定且安全的替代方案,特別適合用於專案上線與測試階段。
現在,你已經知道為什麼 Zeabur 部屬後不再需要 Ngrok 了!趕快試試在 Zeabur 上完成你的 Django 專案部屬吧!