昨天我們已經建立了 FastAPI Processing Service。今天要加入整個 AI Automation 系統的另一個核心:Workflow Orchestrator,也就是 n8n
在這個系統裡我使用 Docker 來安裝 n8n,原因是因為使用 Docker 架設 n8n 就不用付費,若是使用官網的雲端版本就會需要付費。但是使用 Docker 版的缺點是要電腦開機並且有在跑 n8n container 才有辦法運作整個自動化系統。若是使用雲端的 n8n 與 FastAPI 就可以達到隨時使用這個系統。n8n 官方目前建議 Docker 作為多數 self-hosting 情境的部署方式之一,因此我選擇使用 Docker。以下是使用 Docker 的示範,也可以直接使用雲端版就不用做這麼多 Docker 設定。
先確認 Docker 是否安裝:
可以使用
docker --version
檢查自己的電腦有沒有安裝,若沒有的話可以搜尋 Docker Destop 安裝。安裝好後就可以開始
1. 建立.env
在自己要實作的專案資料夾下新增一個.env檔,檔案內寫上:
GENERIC_TIMEZONE=Asia/Taipei
TZ=Asia/Taipei
N8N_ENCRYPTION_KEY=請換成自己的隨機字串
隨機字串可以用 python 產生
若是要使用 git ,就要新增一個.gitignore檔在專案資料夾下,.gitignore檔裡面內容加上 .env,養成不要洩漏資訊的習慣
2. 建立 docker-compose.yml
在專案資料夾下建立一個docker-compose.yml檔案,內容寫
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- TZ=${TZ}
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
n8n 官方 Docker 文件目前使用 5678 作為 n8n 的服務 port,並將 /home/node/.n8n 掛載至 persistent storage。
接下來我來解說一下這個YAML檔
services
services:
n8n:
意思是我們現在要定義一個名為 n8n 的服務。
所以未來很可能會演進成:
services:
n8n:
...
fastapi:
...
所以使用 Compose 對後續架構也比較方便。
image
image: docker.n8n.io/n8nio/n8n
用來指定 n8n Container 要使用哪一個 Image。
ports
ports:
- "5678:5678"
可以把它理解成:
自己的電腦
localhost:5678 -> Docker Container -> Port 5678
左邊是Host Port,右邊是Container Port
因此之後瀏覽器才能使用http://localhost:5678開啟 n8n。
restart
restart: unless-stopped
用途是當 Container 發生非預期停止或 Docker Engine 重新啟動時,可以依 restart policy 再啟動服務。但這不代表電腦關機時 n8n 還能運作。因為當電腦關機時
Host 關機 -> Docker 停止 -> n8n 停止
Volume
volumes:
- n8n_data:/home/node/.n8n
Docker Container 本身應該被視為可以刪掉、重新建立的執行環境。但 n8n 裡會有:
這些不能因為 Container 重建就跟著消失。所以 Docker 官方將 Volume 定義為由 Container Engine 管理的 persistent data store,也建議用它保存容器產生、且需要持續存在的資料。
3. 啟動 n8n
在專案資料夾底下執行以下指令
docker compose up -d
然後查看:
docker compose ps
如果正常,應該會看到 n8n 處於 Running / Up 狀態。
如果有問題的話使用以下指令查看log:
docker compose logs -f n8n
4. 打開 n8n
瀏覽器輸入http://localhost:5678完成第一次 account setup 後,就會進到 n8n 的 Workflow Editor。
5. 建立第一條 workflow
接下來可以自己試試看建立 workflow,熟悉 n8n。
可以像這樣新增節點
6. 確認 Workflow 有被儲存
先使用以下指令關閉 Container
docker compose down
再用以下指令重新 run Container
docker compose up -d
再回到http://localhost:5678確認 workflow 還存在,就代表成功了。
明天會讓 n8n 跟我們的 FastAPI 接起來