n8ndockern8n教學自動化自架

n8n Docker 安裝完整教學:5 分鐘本機跑起來,再升級 VPS 正式環境

n8n Docker 安裝完整教學,從本機試玩到 VPS 正式部署,含環境變數、備份升級與錯誤排除。

n8nmarket-team 2026年7月31日

開頭導言

要安裝 n8n,Docker 是最穩定的選擇。官方映像是 docker.n8n.io/n8nio/n8n,預設埠為 5678。只想試玩可先看第一段;若要長期自架,或 webhook 需要由外部觸發,直接看第二段。這篇補上許多中文教學常漏掉的三件事:N8N_ENCRYPTION_KEYWEBHOOK_URL,以及升級前的備份與回滾。


1|先確認:你該用哪一種安裝法?

三條路的成本與適用情境

方案月成本維運責任適合誰
n8n Cloud Starter約 €24/月(含 2,500 executions)執行量小、不想碰伺服器
自架 Docker(Community Edition)軟體免費,只有機器成本(常見 VPS 約 US$5–7/月)自己管執行量大、要無限 workflow
代管型 n8n(如 PikaPods 等外部平台)約 US$3.7–7/月想省 VPS 設定但仍要自己的實例

以上皆為外部服務或市場行情,非本站提供的服務。

什麼時候該從「本機試玩」升級成「VPS 正式版」

出現以下三個訊號時:workflow 要定時跑、需要外部 webhook 觸發、開始有第二個人共用。


2|5 分鐘本機版:一行 docker run 跑起來

前置需求

Docker Desktop(macOS / Windows)或 Docker Engine(Linux)、5678 埠未被占用。

三行指令(可直接複製)

docker volume create n8n_data docker run -it —rm —name n8n -p 5678:5678
-v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

http://localhost:5678 建管理員帳號即可。指令細節可對照 n8n 官方 Docker 自架文件

⚠️ 最高頻新手災難:沒掛 volume=重開全部消失

資料實際落在容器內 /home/node/.n8n,workflow、憑證、SQLite 都在裡面。--rm 加上沒掛 volume 就等於刪檔。備份時要備份這個 volume。


3|正式版:Docker Compose + PostgreSQL 部署到 VPS

為什麼正式環境要換掉 SQLite

單人試玩用 SQLite 已足夠;多人、執行量大、需要穩定並發時則改用 Postgres。可參考以下判斷點:同時有 5 個以上 workflow 在跑、webhook 每分鐘超過 10 次,或需要多使用者權限管理。

docker-compose.yml 範例(n8n + PostgreSQL 兩個 service)

services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: n8n POSTGRES_PASSWORD_FILE: /run/secrets/db_password POSTGRES_DB: n8n volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: [“CMD-SHELL”, “pg_isready -U n8n”] interval: 10s timeout: 5s retries: 5

n8n: image: docker.n8n.io/n8nio/n8n:1.96.2 restart: unless-stopped ports: - “127.0.0.1:5678:5678” environment: N8N_ENCRYPTION_KEY_FILE: /run/secrets/n8n_encryption_key DB_TYPE: postgresdb DB_POSTGRESDB_HOST: postgres DB_POSTGRESDB_PORT: 5432 DB_POSTGRESDB_USER: n8n DB_POSTGRESDB_PASSWORD_FILE: /run/secrets/db_password DB_POSTGRESDB_DATABASE: n8n N8N_HOST: n8n.example.com WEBHOOK_URL: https://n8n.example.com N8N_PROTOCOL: https depends_on: postgres: condition: service_healthy volumes: - n8n_data:/home/node/.n8n

volumes: pgdata: n8n_data:

生產預設要素:

  • 釘死版本標籤(如 1.96.2),不要用 :latest——升級才可控、才回滾得了
  • restart: unless-stopped:主機重開自動拉回
  • Postgres healthcheck,n8n 用 depends_on 等資料庫就緒
  • 埠只綁 127.0.0.1:5678,對外由反向代理處理
  • 密碼用 _FILE 後綴走 Docker Secrets,不要把密碼裸寫進 compose

綁網域與 HTTPS(反向代理)

Caddy 自動憑證最省事,Nginx 生態最廣,Traefik 適合已有容器叢集。重點是代理必須把 HostX-Forwarded-* 正確傳進去,否則 webhook 網址會歪掉。


4|上線前必設的 4 個環境變數

完整清單見 n8n 環境變數官方參考

N8N_ENCRYPTION_KEY:弄丟=所有已存憑證全部解不開

必須自己固定一組並備份,不要讓它每次重建容器時自動生成。產生方式:openssl rand -hex 32

WEBHOOK_URL / N8N_HOST:沒設,webhook 節點會給你 localhost 網址

這是「流程在編輯器裡按了會動、外部服務打不進來」的原因。本機測試可改用 tunnel(如 n8n start --tunnel)。

DB_TYPE=postgresdbDB_POSTGRESDB_*

連線參數對照如上 compose 範例。切換後原本 SQLite 的資料不會自動搬過去,需手動匯出再匯入。

⚠️ n8n 只在啟動時讀一次 env

改了 .env 或 compose 卻沒重啟容器,設定完全不會生效,很多人會在這裡浪費一小時。


5|備份、升級與回滾

升級三步

docker compose pull docker compose down docker compose up -d

升級前一定要做的事

先備份 volume 與 Postgres、查 release note(資料庫 schema 可能遷移)、確認加密金鑰有留檔。

回滾怎麼做

把 image tag 改回舊版本並還原備份——前提是有備份。schema 已遷移過的情況下,沒有備份就回不去。


6|常見錯誤排查表

症狀原因解法
重啟後 workflow 全不見沒掛 volume用 named volume n8n_data:/home/node/.n8n
EACCES: permission deniedbind mount 宿主目錄擁有者不是容器內 node(1000)sudo chown -R 1000:1000 <dir> + chmod -R 755,或改用 named volume
開不了 5678埠被占用/防火牆/只綁了 127.0.0.1 但沒設代理lsof -i :5678 查占用;檢查防火牆規則
憑證全部失效加密金鑰換掉了確認 N8N_ENCRYPTION_KEY 與上次一致
webhook 外部觸發不了WEBHOOK_URLN8N_HOST 沒對上實際網域,或反向代理用自簽憑證檢查環境變數與代理設定
容器反覆重啟/exit 137記憶體不足VPS 規格太小,建議至少 1GB RAM

7|裝好了,然後呢?

安裝只花 10 分鐘;「不知道要建什麼流程」才是多數人裝完後就放著長灰塵的原因。

n8nstart.cc 整理了 1700+ 現成 n8n 工作流模板,從 AI 自動回信、訂單通知、表單串 Google Sheet 到多步驟行銷自動化,直接匯入就能用,省去從空白畫布開始的階段。更多自架與流程設計文章見部落格


常見問答

Q1:用 Docker 安裝 n8n,資料會不會不見?

只要掛上 n8n_data:/home/node/.n8n 就不會。備份就是備份這個 volume,用 docker run --rm -v n8n_data:/data -v $(pwd):/backup alpine tar czf /backup/n8n_backup.tar.gz -C /data . 即可。

Q2:出現 EACCES: permission denied 怎麼辦?

這是 bind mount 權限問題。chown -R 1000:1000,或改用 named volume 直接避開。

Q3:怎麼更新到新版 n8n?

pulldownup -d,更新前先備份並看 release note。

Q4:Webhook 為什麼外部觸發不了?

WEBHOOK_URL / N8N_HOST 未設或與實際網域不符。確認反向代理正確傳遞 Host header。

Q5:該用 SQLite 還是 PostgreSQL?

試玩用預設 SQLite;多人、量大、要穩定並發就上 Postgres。

Q6:自架划算還是買 n8n Cloud?

自架月成本約 US$5–7,但要自己維運;Cloud Starter 約 €24/月,含 2,500 executions。量大選自架,省心選 Cloud。