n8n 伺服器自架攻略:使用 Docker Compose 快速部署你的自動化工作流中心!

··
資訊科技應用 伺服器管理 N8n 自動化 伺服器部署 工作流

厭倦了重複且耗時的手動任務嗎?想擁有一個強大、開源又視覺化的自動化工具嗎?

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 地址 (極為重要!)
#

由於 n8nWebhook 需要一個穩定的外部連線點,因此必須將伺服器的 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 預設防火牆):
#

  1. 檢查狀態:
sudo ufw status
  1. 如果狀態為 active,則必須開放連接埠:
sudo ufw allow 5678/tcp
sudo ufw reload

10. 存取 n8n 介面
#

防火牆設定完成後,您就可以從區域網路中的任何設備存取 n8n 服務:

  1. 從區域網路內其他電腦存取 (推薦):

    在瀏覽器輸入您的靜態 IP:http://192.168.0.103:5678

  2. 從伺服器本機存取 (如果您在伺服器上用瀏覽器):

    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 檔案中的變數或檔案權限配置錯誤。