今天將實戰「用 Docker Compose 方式部署 n8n」,教你打造生產等級、便於維護與升級的自動化平台。一份完善的部署流程不僅能提升開發效率,也為未來擴充與備份做好準備。
使用 Docker Compose 可一鍵管理 n8n 服務、資料儲存路徑與網路連線,支援以下目標:
建立資料夾
mkdir -p ~/n8n-docker
cd ~/n8n-docker
建立 docker-compose.yml
最小化版本如下:
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=youruser
- N8N_BASIC_AUTH_PASSWORD=yourpassword
- N8N_HOST=yourdomain.com
- N8N_PROTOCOL=https
- WEBHOOK_TUNNEL_URL=https://yourdomain.com/
volumes:
- ./n8n_data:/home/node/.n8n
修改
N8N_BASIC_AUTH_USER
與N8N_BASIC_AUTH_PASSWORD
,保證安全性。若有網域可以加上自訂參數,未來對接 SSL 較方便。
推薦使用 PostgreSQL 取代 SQLite,提升效能與可靠性。
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=Asia/Taipei
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=youruser
- N8N_BASIC_AUTH_PASSWORD=yourpassword
- N8N_DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=yourdbpassword
- N8N_HOST=yourdomain.com
- N8N_PROTOCOL=https
- WEBHOOK_TUNNEL_URL=https://yourdomain.com/
depends_on:
- postgres
volumes:
- ./n8n_data:/home/node/.n8n
postgres:
image: postgres:14
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=yourdbpassword
- POSTGRES_DB=n8n
volumes:
- ./postgres_data:/var/lib/postgresql/data
在同一目錄下執行:
docker-compose up -d
http://yourdomain.com:5678
建議使用 Nginx Proxy Manager、Caddy 或原生 Nginx 反向代理,取得 Let's Encrypt SSL 憑證。
Nginx 設定簡例:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
完成 SSL 設定後,將 N8N_PROTOCOL
設為 https
,來啟用 webhook 與 OAuth 的正確回調。
docker-compose pull
docker-compose up -d
./n8n_data
和 ./postgres_data
兩個資料夾。.env
檔案統一管理,不建議密碼寫死在 yml 裡。N8N_HOST
或 SSL 設錯,請再次檢查。透過 Docker Compose,不僅可獲得高度客製化的部署,同時方便維護、易於遷移與升級。跟著今天的步驟,每個自動化 workflow 都能在專業的環境順利運行,真正做到低代碼、高可靠的自動化新時代。