iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
自我挑戰組

零程式碼的現代數據力:用 Tableau 與 Dify/n8n 打造自動化商業戰情室 30 天系列 第 28 篇

【Day 28】走入正式生產環境:用 Docker Compose 一鍵自架高可用 n8n 與 Dify 伺服器

  • 分享至 

  • xImage
  •  

在過去的實作中,我們可能是在個人電腦本機執行 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 以上)。

登入伺服器後,執行以下標準環境安裝指令:

1. 更新系統套件

sudo apt update && sudo apt upgrade -y

2. 安裝 Docker 與 Docker Compose 插件

sudo apt install -y docker.io docker-compose-plugin

3. 啟動並設定開機自啟

sudo systemctl enable --now docker

4. 建立專案專用目錄

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:

1. 後端持久化資料庫 (PostgreSQL)

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

2. n8n 工作流自動化引擎

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 中,重啟後所有設定無縫繼承!


上一篇
【Day 27】資料合規不踩雷:在 Tableau 與 n8n 實作列級安全性(RLS)與多租戶權限隔離
下一篇
【Day 29】驗收與價值量化:全系統壓力測試、ROI 商業效益估算與專案作品集包裝
系列文
零程式碼的現代數據力:用 Tableau 與 Dify/n8n 打造自動化商業戰情室 30 天 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言