在過去的實作中,我們可能是在個人電腦本機執行 n8n,或依賴官方提供的雲端試用版(Cloud)。
但當整套「Tableau + n8n + Dify」商業戰情室準備在企業內部 24/7 不斷線運作時,依賴本機測試環境會面臨巨大問題:
筆電蓋上休眠,定時排程立刻停擺。
資料需要經過第三方雲端中繼站,違反企業資安法規與資料主權要求。
雲端託管方案按用量計費,長期運行成本昂貴。
為了解決這些問題,業界最推崇的解法就是「容器化自架部署(Self-Hosted Container Deployment)」。今天我們將展示:如何在便宜的雲端主機(如 AWS EC2、GCP Compute Engine 或 Linode/DigitalOcean)上,利用 Docker Compose 5 分鐘一鍵拉起高可用性的 n8n 與 Dify 企業級伺服器!
一、架構規劃:為什麼選擇 Docker Compose?
如果手動在 Linux 伺服器上一一安裝 Node.js、Python、PostgreSQL 資料庫與 Redis 緩存,環境相依性往往會讓人崩潰。
Docker Compose 允許我們將整套系統的多個服務寫在一份清單(YAML 檔)中:
宣告式管理:一行指令啟動全部容器,版本統一。
網路隔離:資料庫只在 Docker 內部網路流通,不暴露對外 Port,資安防護滿分。
數據持久化(Data Persistence):利用 Volume 掛載硬碟,容器隨便重啟升級,歷史工作流與 AI 知識庫資料絕對不遺失。
二、實戰步驟一:伺服器環境事前準備
準備一台乾淨的 Ubuntu 22.04 / 24.04 LTS 雲端主機(規格建議至少 2 vCPU / 4GB RAM,若要自架 Dify 本地模型建議 8GB RAM 以上)。
登入伺服器後,執行以下標準環境安裝指令:
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker
mkdir -p ~/bi-automation-stack && cd ~/bi-automation-stack
三、實戰步驟二:撰寫企業級 docker-compose.yml
在專案目錄下建立設定檔:
nano docker-compose.yml
貼入以下經過優化配置的完整容器編排設定:
version: '3.8'
volumes:
db_storage:
n8n_storage:
networks:
internal_net:
services:
postgres:
image: postgres:16-alpine
container_name: postgres_db
restart: always
environment:
- POSTGRES_USER=n8n_admin
- POSTGRES_PASSWORD=SuperSecretPassword2026!
- POSTGRES_DB=n8n_production
volumes:
- db_storage:/var/lib/postgresql/data
networks:
- internal_net
healthcheck:
test: ["CMD-SHELL", "pg_isready -h localhost -U n8n_admin -d n8n_production"]
interval: 5s
timeout: 5s
retries: 10
n8n:
image: docker.n8n.io/n8nio/n8n:latest
container_name: n8n_engine
restart: always
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n_production
- DB_POSTGRESDB_USER=n8n_admin
- DB_POSTGRESDB_PASSWORD=SuperSecretPassword2026!
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_HOST=your-domain.com # 替換為你的主機 IP 或網域名稱
- N8N_PORT=5678
- N8N_PROTOCOL=http
- NODE_ENV=production
- GENERIC_TIMEZONE=Asia/Taipei
- TZ=Asia/Taipei
volumes:
- n8n_storage:/home/node/.n8n
networks:
- internal_net
depends_on:
postgres:
condition: service_healthy
進階架設提醒:若要同時將 Dify 自架於同一台主機,官方有維護極度完善的獨立編排庫。只需在另一個目錄執行:
git clone https://github.com/langgenius/dify.git && cd dify/docker && docker compose up -d 即可在 80 Port 啟動 Dify 全套服務!
四、實戰步驟三:一鍵啟動與狀態檢查
設定完畢後,執行這行經典指令:
sudo docker compose up -d
統會在背後自動拉取官方映像檔、建立虛擬網路、初始化資料庫,並在背景運行服務:
檢查容器運行狀態:
sudo docker compose ps
確認 postgres_db 與 n8n_engine 都顯示 Up (healthy)。
登入 Web 介面:
打開瀏覽器輸入 http://<你的主機IP>:5678,你將看見企業級的 n8n 登入介面!
第一次進入會引導你設定管理員帳號密碼。
此時的所有排程、Webhook 與 API 連線都將由這台雲端伺服器在背景持續守護,即使關閉個人電腦,自動化管線依然 24 小時精確運轉!
五、維運維護速查:備份與無痛升級
正式上線後,維運工程師不可不知的兩大指令:
定期備份資料庫(以防硬碟故障):sudo docker exec -t postgres_db pg_dumpall -c -U n8n_admin > backup_$(date +%Y%m%d).sql
一鍵升級至最新版本(Zero Downtime):sudo docker compose pull
sudo docker compose up -d --remove-orphans
資料庫與工作流因為儲存在獨立 Volume 中,重啟後所有設定無縫繼承!