🚀 [實戰] 用 Docker Compose 快速建置 n8n 本地環境

 

這套配置的核心目標是:解耦 (Decoupling)。我們讓 n8n 跑在容器內,但透過隧道與你本地的 Python 資源對接。

1. 目錄配置 (Project Structure)

首先,在終端機建立工作目錄。良好的目錄結構是維運的第一步。

Bash
mkdir -p ~/n8n-infra/data
cd ~/n8n-infra

2. 撰寫 docker-compose.yml

使用你最愛的編輯器(VS Code 或 vim),建立 docker-compose.yml。這份檔案定義了 n8n 本身以及一個 PostgreSQL 數據庫(比起預設的 SQLite,Postgres 在長期執行大量 539 數據分析時更穩定)。

YAML
version: '3.8'

services:
  db:
    image: postgres:16-alpine
    container_name: n8n-postgres
    restart: always
    environment:
      - POSTGRES_USER=n8n_admin
      - POSTGRES_PASSWORD=n8n_secure_pass
      - POSTGRES_DB=n8n_metadata
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    container_name: n8n-webui
    restart: always
    ports:
      - "5678:5678"
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=db
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n_metadata
      - DB_POSTGRESDB_USER=n8n_admin
      - DB_POSTGRESDB_PASSWORD=n8n_secure_pass
      - N8N_BLOCK_SVC_REGISTRATION_EMAIL=false # 解鎖本地註冊限制
      - GENERIC_TIMEZONE=Asia/Taipei
    # 關鍵:開啟通往 Host 的隧道,讓 n8n 找得到你本地的 Python API
    extra_hosts:
      - "host.docker.internal:host-gateway"
    volumes:
      - ./data/n8n_storage:/home/node/.n8n
    depends_on:
      - db

networks:
  default:
    name: n8n-local-net

3. 一鍵啟動 (Deployment)

在目錄下執行指令,讓 Docker 開始拉取鏡像並建立容器。

Bash
docker compose up -d
  • -d: 背景執行 (Detached mode),關掉終端機它依然會跑。

  • 驗證狀態: 輸入 docker compose ps 確保兩個容器都是 Up (healthy)


4. 存取 WebUI

打開 Chrome,輸入網址:

http://localhost:5678

初次登入時,系統會要求你建立管理員帳號。這組帳號只存在於你本地的 Postgres 數據庫中,非常安全。


📝 筆記:為什麼這樣建立 WebUI?

  • Persistence (持久化): 所有 Workflow 和憑證都存在 ./data 下。就算你刪掉容器重新 up,資料都不會掉。

  • Scalability (可擴展性): 當你移植到 Pi4 時,只要把這個 ~/n8n-infra 資料夾打包帶走,在 Pi4 上執行同樣的指令,環境會 100% 原封不動復原

  • Networking (網絡鏈結): 透過 extra_hosts 設定,你的 n8n 節點現在可以用 http://host.docker.internal:8000 存取你 MacBook 上跑的任何服務,避開了 Docker 網路隔離的坑。

留言

這個網誌中的熱門文章

[Security] wpa_supplicant setup

[我的MAC Air] 2012年中,MAC Air SSD升級

[拆機] Nexus5 更換背蓋、電池