在自己的伺服器上部署 n8n:網域、工作流程與備份

用 Zenavo 的範本部署 n8n,設定 HTTPS、Webhook 網址與時區,跑通第一個工作流程,再做好加密金鑰保存與磁碟區備份。

本文亦提供 English、简体中文、日本語、Español 和 Bahasa Indonesia。

把表單內容寫進試算表、定時彙整訊息、收到 Webhook 後呼叫另一個 API——這些重複的自動化流程都可以交給 n8n。自架沒有雲端託管版按執行次數計費的限制,工作流程和憑證也都留在你自己的伺服器上。

本文用 Zenavo 的 n8n 範本,從部署、設定網域與 Webhook,一路走到備份與升級。伺服器、Zenavo 平台以及工作流程呼叫的第三方 API 分別計費。

部署 n8n

先在 Zenavo 中連接一台 Linux 伺服器,再開啟 n8n 範本,選擇伺服器並部署。

目前範本的設定如下:

設定 值或用途
映像檔 n8nio/n8n:latest
HTTP 連接埠 5678
持久化目錄 /home/node/.n8n,預設 SQLite 資料庫、工作流程和憑證都在這裡
N8N_ENCRYPTION_KEY 專案建立時自動產生,用於加密工作流程中儲存的憑證
GENERIC_TIMEZONE 預設 UTC,下面改成你的時區
N8N_DIAGNOSTICS_ENABLED false,關閉遙測統計

latest 會隨上游更新。打算長期使用時,在 n8n 服務 設定 的 來源 中把映像檔標籤改成你驗證過的固定版本(例如 n8nio/n8n:1.82.0),避免重新部署時無意間跨版本升級。

綁定網域,設定 Webhook 與時區

在 n8n 服務的 網路 頁為 5678 連接埠綁定網域,例如 n8n.example.com,在 DNS 新增指向伺服器的 A 記錄,等待 HTTPS 生效。步驟見網域文件。

接著開啟 n8n 服務的 變數 分頁,補上網域與時區設定:

N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://n8n.example.com/
WEBHOOK_URL=https://n8n.example.com/
N8N_PROXY_HOPS=1
GENERIC_TIMEZONE=Asia/Taipei
TZ=Asia/Taipei

幾點說明:

  • WEBHOOK_URL 決定 Webhook 節點產生的公開網址;未設定時,節點會顯示容器內部網址 http://localhost:5678。
  • N8N_PROXY_HOPS=1 對應 Zenavo 閘道這一層反向代理。如果你的網域前面還套了 Cloudflare 等 CDN 代理,請依實際代理層數調整。
  • GENERIC_TIMEZONE 影響排程觸發器(Schedule Trigger)的預設時區。

儲存後重新啟動服務,開啟 https://n8n.example.com 建立管理員帳號。日後更換網域時,記得同步修改上面幾個網址變數。

跑通第一個工作流程與 Webhook

進入編輯器後,先建一個最小工作流程確認執行正常:

  1. 新增工作流程,加入 Manual Trigger。
  2. 加入 Edit Fields (Set) 節點,新增字串欄位 message,值填 Hello from n8n。
  3. 點擊 Test workflow,確認右側輸出出現這則訊息,然後儲存。

接著測試外部請求能否進入 Webhook:

  1. 加入 Webhook 節點,HTTP Method 選 GET。
  2. 點擊 Listen for test event,在瀏覽器開啟節點顯示的 Test URL,確認編輯器立即收到請求資料。
  3. 正式串接第三方系統(如 GitHub、Stripe、Slack)時,切換到 Production URL,並將工作流程右上角的開關設為 Active。Test URL 只在點擊監聽時暫時生效,不能填進正式業務。

保管好 N8N_ENCRYPTION_KEY

n8n 裡儲存的所有第三方 API Key、資料庫密碼與 OAuth 權杖,都會用 N8N_ENCRYPTION_KEY 加密後才寫入資料庫。

開啟 n8n 服務的 變數 分頁,把 N8N_ENCRYPTION_KEY 的值複製一份存進你的密碼管理器。部署後不要修改它;將來把備份還原到新專案或新伺服器時,也必須填入同一個 N8N_ENCRYPTION_KEY,否則還原出來的工作流程無法解密原有的憑證。

編輯器裡的「匯出工作流程」只會匯出節點與連線關係的 JSON,不包含憑證與執行紀錄,不能取代完整備份。

備份與升級

n8n 的全部資料都在 /home/node/.n8n 磁碟區裡。在 n8n 服務的 備份與還原 中備份它:

  1. 挑一個沒有關鍵任務在跑的時段,停止專案(磁碟區備份需要專案處於停止狀態)。
  2. 建立磁碟區備份,完成後重新啟動專案。
  3. 下載一份備份自行保存,並和 N8N_ENCRYPTION_KEY 放在一起。

操作細節見備份與還原。如果你把備份還原到新專案做驗證,注意已啟用的工作流程還原後會繼續依排程觸發器執行,測試時先關閉觸發器或與真實業務隔離。

升級前先讀 n8n 的發行說明,先備份磁碟區,再去服務 設定 → 來源 修改映像檔版本。n8n 升級時可能會遷移資料庫結構,一旦升級完成,單純換回舊映像檔不一定能啟動,需要用升級前的備份還原。

常見問題

Webhook 節點裡的網址還是顯示 localhost:5678? 檢查 變數 分頁是否已新增 WEBHOOK_URL=https://你的網域/,儲存後需要重新啟動 n8n 服務才會生效。

第三方平台呼叫 Webhook 回傳 404? 確認使用的是 Production URL(路徑帶 /webhook/ 而不是 /webhook-test/),並且工作流程右上角已經打開 Active 開關。

排程任務沒有按預期時區觸發? 檢查變數裡的 GENERIC_TIMEZONE 和 TZ 是否設為你的時區(如 Asia/Taipei),同時看工作流程自身的 Settings → Timezone 有沒有單獨覆蓋成別的時區。

需要多大的伺服器? 日常輕量工作流程占用的記憶體不大,1 核 2 GB 的伺服器即可起步;如果工作流程裡要在記憶體中處理大型檔案、大量 JSON 陣列或高並行請求,建議使用 2 核 4 GB 以上的伺服器。

從 n8n 範本開始:先綁定網域並設好 WEBHOOK_URL 與時區,再把 N8N_ENCRYPTION_KEY 存好、做一次磁碟區備份。