iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
DevOps

30 天自動化高手養成:玩轉 n8n 工作流系列 第 22

Day 22:Docker Compose 部署完整 n8n 環境教學

  • 分享至 

  • xImage
  •  

今天將實戰「用 Docker Compose 方式部署 n8n」,教你打造生產等級、便於維護與升級的自動化平台。一份完善的部署流程不僅能提升開發效率,也為未來擴充與備份做好準備。


一、目標與環境說明

使用 Docker Compose 可一鍵管理 n8n 服務、資料儲存路徑與網路連線,支援以下目標:

  • 快速布署多個服務(n8n、資料庫)
  • 所有數據與 workflow 保存於本地 volume
  • 支援外部存取(網域 + SSL)
  • 便於升級、備份與還原

二、建立專用資料夾與 docker-compose.yml

  1. 建立資料夾

    mkdir -p ~/n8n-docker
    cd ~/n8n-docker
    
  2. 建立 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_USERN8N_BASIC_AUTH_PASSWORD,保證安全性。若有網域可以加上自訂參數,未來對接 SSL 較方便。


三、進階強化(PostgreSQL 與時區設定)

推薦使用 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

四、啟動 n8n 容器

在同一目錄下執行:

docker-compose up -d
  • 啟動後可於瀏覽器開啟 http://yourdomain.com:5678
  • 登入時需帶入你設定的帳號密碼

五、設定反向代理與 SSL(加強安全性)

建議使用 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 的正確回調。


六、常見維運事項

  • 升級 n8n:
    docker-compose pull
    docker-compose up -d
    
  • 資料備份:
    定期備份 ./n8n_data./postgres_data 兩個資料夾。
  • 環境變數/密碼管理:
    可以搭配 .env 檔案統一管理,不建議密碼寫死在 yml 裡。

七、常見問題排查

  • 網頁無法連線?確認防火牆與埠號設定、容器有無啟動。
  • 無法登入?檢查帳密是否填寫一致,重啟服務端再試。
  • Webhook 回調異常?推測可能是 N8N_HOST 或 SSL 設錯,請再次檢查。

結語

透過 Docker Compose,不僅可獲得高度客製化的部署,同時方便維護、易於遷移與升級。跟著今天的步驟,每個自動化 workflow 都能在專業的環境順利運行,真正做到低代碼、高可靠的自動化新時代。


上一篇
Day 21:n8n 雲端與自架方案比較 — 哪種部署方式最適合你?
下一篇
Day 23:API Key 與認證安全管理 — 保護你的 n8n 自動化資產
系列文
30 天自動化高手養成:玩轉 n8n 工作流24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言