厭倦了重複且耗時的手動任務嗎?想擁有一個強大、開源又視覺化的自動化工具嗎?
n8n (Nodes for No Code) 是你的最佳選擇!本篇教學將手把手引導你,在 Ubuntu 22.04 系統上,利用 Docker Compose 的強大功能,快速且穩定地部署專屬於你的 n8n 伺服器!
Part 1:前置準備與網路穩定化 #
在開始安裝 n8n 之前,我們必須確保底層環境的穩定性。
1. 軟體環境確認 #
請確認您的 Ubuntu 22.04 伺服器上已安裝以下套件:
- Docker Engine (用於運行容器)
- Docker Compose V2 (用於管理多容器應用)
docker -v
docker compose version
提示: 您可以使用上述指令來檢查版本。
2. 鎖定靜態 IP 地址 (極為重要!) #
由於 n8n 的 Webhook 需要一個穩定的外部連線點,因此必須將伺服器的 IP 地址固定下來。
以下是您設定靜態 IP 所需的數值(請依您的網路環境調整):
| 參數 | 建議值 | 說明 |
|---|---|---|
| IP 地址 | 192.168.0.103/24 |
您的伺服器 IP 及子網路遮罩。 |
| 閘道器 (Gateway) | 192.168.0.1 |
您的路由器 IP。 |
| DNS 伺服器 | 8.8.8.8, 8.8.4.4 |
Google DNS,用於穩定的網域名稱解析。 |
透過 nmcli 設定範例:
# 假設您的網路卡名稱為 enp6s0
nmcli connection modify enp6s0 ipv4.method manual ipv4.addresses 192.168.0.103/24 ipv4.gateway 192.168.0.1 ipv4.dns "8.8.8.8 8.8.4.4" autoconnect yes
nmcli connection up enp6s0
Part 2:建立 n8n 專案結構與配置檔案 #
我們需要建立一個專案目錄,並在其中定義 n8n 的環境變數和 Docker 容器配置。
3. 建立專案目錄與設定權限 #
在您的終端機中,執行以下指令建立專案主資料夾,並為持久性資料設定權限:
# 建立主資料夾並進入
mkdir n8n-server
cd n8n-server
# 建立數據子資料夾
mkdir n8n-data
# 設定容器運行使用者 ID (1000) 的讀寫權限
sudo chown 1000:1000 n8n-data
4. 定義環境變數:.env 檔案
#
建立一個名為 .env 的檔案,並貼上以下配置。請務必修改 <YOUR_USERNAME> 和 <YOUR_PASSWORD>!
nano .env
# N8N Configuration
# -----------------
# 你的靜態 IP 地址,用於 Webhook 回呼
N8N_HOST=192.168.0.103
N8N_PORT=5678
N8N_PROTOCOL=http
WEBHOOK_URL=http://${N8N_HOST}:${N8N_PORT}/
# 首次登入管理員帳號設定
N8N_USER_MGMT_DEFAULT_USERNAME=n8n_admin
N8N_USER_MGMT_DEFAULT_PASSWORD=SecureN8n2025
# 其他建議設定
N8N_BASIC_AUTH_ACTIVE=true
TZ=Asia/Taipei
5. 定義 Docker 服務:docker-compose.yml 檔案
#
建立並編輯 docker-compose.yml 檔案。
nano docker-compose.yml
version: '3.8'
services:
n8n:
image: n8nio/n8n
container_name: n8n-server
restart: always
environment:
# 載入所有 .env 檔案中的變數
- N8N_HOST
- N8N_PORT
- N8N_PROTOCOL
- WEBHOOK_URL
- N8N_USER_MGMT_DEFAULT_USERNAME
- N8N_USER_MGMT_DEFAULT_PASSWORD
- N8N_BASIC_AUTH_ACTIVE
- TZ
ports:
# 將主機的 5678 端口映射到容器的 5678 端口
- "5678:5678"
volumes:
# 持久化儲存工作流和設定
- ./n8n-data:/home/node/data
user: "1000:1000"
Part 3:服務啟動與最終驗證 #
6. 修正 Docker 權限 (如果需要) #
如果您的 Docker 指令遇到權限問題(例如 permission denied),請將您的使用者帳號加入 docker 群組。
# 將當前使用者加入 docker 群組
sudo usermod -aG docker $USER
⚠️ 重要: 執行此指令後,請務必登出並重新登入終端機!
7. 啟動 n8n 服務 #
確認您位於 n8n-server 目錄下,然後啟動容器:
docker compose up -d
8. 檢查與確認容器狀態 #
檢查容器是否成功運行:
docker ps --filter name=n8n-server
- 如果
STATUS顯示為Up X seconds/minutes,則代表啟動成功!
9. 檢查並開放防火牆連接埠 (面向所有使用者) #
n8n 服務預設使用 5678 連接埠。 在嘗試存取之前,必須確保伺服器防火牆已開放此連接埠。
檢查與開放 UFW (Ubuntu 預設防火牆): #
- 檢查狀態:
sudo ufw status
- 如果狀態為
active,則必須開放連接埠:
sudo ufw allow 5678/tcp
sudo ufw reload
10. 存取 n8n 介面 #
防火牆設定完成後,您就可以從區域網路中的任何設備存取 n8n 服務:
-
從區域網路內其他電腦存取 (推薦):
在瀏覽器輸入您的靜態 IP:
http://192.168.0.103:5678 -
從伺服器本機存取 (如果您在伺服器上用瀏覽器):
http://localhost:5678
進入介面後,您將被引導使用 .env 中設定的帳號密碼完成首次管理員帳戶的設定!
Part 4:常見問題與疑難排解 #
| 問題現象 | 診斷與解決方案 |
|---|---|
瀏覽器顯示 Error connecting to n8n |
[1] 伺服器防火牆: 請確認已完成步驟 9,開放 5678/tcp 埠。 [2] 本機存取: 如果您在本機操作,請嘗試使用 http://localhost:5678 替代外部 IP。 [3] 路由器隔離: 檢查路由器設定,確保沒有啟用 客戶端隔離 (Client Isolation) 功能,此功能會阻擋區域網路內設備互通。 |
docker compose 權限不足/無法連線 Daemon |
請確認您已執行 sudo usermod -aG docker $USER,並且已經重新登出並登入終端機。 |
| 容器啟動失敗或立即退出 | 執行 docker logs n8n-server 檢查日誌,通常是 .env 檔案中的變數或檔案權限配置錯誤。 |