在自己的伺服器上部署 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
進入編輯器後,先建一個最小工作流程確認執行正常:
- 新增工作流程,加入 Manual Trigger。
- 加入 Edit Fields (Set) 節點,新增字串欄位
message,值填Hello from n8n。 - 點擊 Test workflow,確認右側輸出出現這則訊息,然後儲存。
接著測試外部請求能否進入 Webhook:
- 加入 Webhook 節點,HTTP Method 選
GET。 - 點擊 Listen for test event,在瀏覽器開啟節點顯示的 Test URL,確認編輯器立即收到請求資料。
- 正式串接第三方系統(如 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 服務的 備份與還原 中備份它:
- 挑一個沒有關鍵任務在跑的時段,停止專案(磁碟區備份需要專案處於停止狀態)。
- 建立磁碟區備份,完成後重新啟動專案。
- 下載一份備份自行保存,並和
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 存好、做一次磁碟區備份。
這是 coding agent 讀到的內容,網址是 https://zenavo.app/zh-TW/blog/self-host-n8n.md。
無法載入 Markdown,請直接開啟: https://zenavo.app/zh-TW/blog/self-host-n8n.md