為什麼在 Zeabur 部屬後不需要使用 Ngrok?——完整指南

更新日期: 2025 年 1 月 12 日

當你將專案成功部屬到 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 的差異比較

功能ZeaburNgrok
公開網域名稱永久且穩定 (your-project.zeabur.app)每次重啟 URL 會變動
適用情境部屬後的正式環境與測試環境本地測試環境
HTTPS 支援✅ 內建免費 HTTPS 加密✅ 支援,但需要付費開通自訂域名
Webhook 測試✅ 可直接使用 Zeabur 網域名稱✅ 主要用途之一
適用專案規模✅ 正式專案、測試專案皆適用⚠️ 僅適用於本地測試階段

什麼是 Webhook?

Webhook 是一種在網路服務之間傳遞即時資料的機制。

它允許一個應用程式在特定事件發生時,自動將資料或通知發送到另一個應用程式的指定 URL(端點)。Webhook 常用於觸發式通知與自動化流程。

Webhook 的基本原理

Webhook 的工作方式可以用一個簡單的例子來說明:

  1. 訂閱 Webhook 事件
    • 你在一個服務(如 GitHub、Stripe、LINE Pay)設定一個 Webhook,並提供一個 回調 URL(如 https://yourapp.com/webhook)。
  2. 事件發生
    • 當某個事件發生(如用戶完成付款、程式碼提交、使用者註冊),該服務會自動發送一個 HTTP POST 請求到你設定的 Webhook URL。
  3. 接收與處理
    • 你的伺服器收到這個請求後,會根據請求內的資料執行相對應的動作,例如:
      • 更新資料庫記錄
      • 發送通知
      • 執行程式碼
Webhook 與 API 的差異
比較項目WebhookAPI(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 進行付款完成通知

  1. 使用者付款完成
  2. LINE Pay 將付款資訊透過 Webhook 傳送到你的伺服器
  3. 你的伺服器接收到 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 控制台中設定:

  1. 前往「網域名稱設定
  2. 點擊「新增自訂網域
  3. 將你的網域名稱(如 mywebsite.com)輸入,並根據指示完成 DNS 設定
  4. 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 設定未正確完成。
解決方法

  1. 確認你的 DNS 提供商是否已將 A 記錄指向 Zeabur 提供的 IP 地址。
  2. 等待 DNS 設定生效(最多 24 小時)。

總結:為什麼 Zeabur 取代了 Ngrok?

  1. 穩定的公開網域名稱:Zeabur 提供永久且穩定的網域名稱,適用於正式環境與 API 測試。
  2. 免費 HTTPS 加密:內建自動的 HTTPS 安全加密,無需額外設定。
  3. 無需重複設定:部屬完成後,Zeabur 網域名稱保持不變,無需每次重啟都重新配置。
  4. 自訂網域支援:可自由設定自訂網域,並自動管理 SSL 憑證。

Zeabur 是 Ngrok 更加穩定且安全的替代方案,特別適合用於專案上線與測試階段。

現在,你已經知道為什麼 Zeabur 部屬後不再需要 Ngrok 了!趕快試試在 Zeabur 上完成你的 Django 專案部屬吧!

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *