n8n Docker 安裝教學 自動化 self-hosted

n8n Docker 安裝教學:從零開始的完整指南(2026)

手把手教你用 Docker 安裝 n8n 自動化工具。從 Docker Desktop 安裝到 docker-compose + PostgreSQL 正式部署,附完整設定檔可直接複製使用。

N8NMarket 2026年3月21日 9 分鐘閱讀

n8n Docker 安裝教學:從零開始的完整指南(2026)

n8n 是一個開源的自動化工具,可以幫你把重複的工作串起來自動跑。這篇教你怎麼用 Docker 把 n8n 裝起來,從「什麼都沒有」到「可以正式用」,一步一步帶你做。


Docker 是什麼?白話版

白話版:Docker 就是一個「盒子」,你把軟體放進去,它就能在任何電腦上跑,不會跟你電腦上的其他東西打架。

你不需要搞懂 Docker 的所有細節,只要知道:

  • 不會弄亂你的電腦 — n8n 跑在盒子裡,刪掉盒子就乾淨了
  • 搬家很方便 — 換電腦或換主機,整個盒子搬過去就好
  • 大家的環境都一樣 — 不會出現「我的電腦可以跑,你的不行」的問題

事前準備

在開始之前,確認你有這些東西:

項目說明
電腦Windows 10/11、macOS 或 Linux 都可以
記憶體至少 4GB(建議 8GB)
硬碟空間至少 2GB
網路需要連網下載 Docker 映像檔

Step 1:安裝 Docker Desktop

Windows

  1. Docker Desktop 官網 下載 Windows 版
  2. 執行安裝檔,一路按「Next」
  3. 安裝完成後重新開機
  4. 打開 Docker Desktop,等左下角出現綠色的「Engine running」就好了

如果跳出「WSL 2 installation is incomplete」的訊息,照著畫面的連結更新 WSL 2 就好。

macOS

  1. Docker Desktop 官網 下載 macOS 版
  2. 打開 .dmg 檔,把 Docker 拖到 Applications
  3. 打開 Docker,系統會問你要不要授權,按「OK」
  4. 等上方工具列的鯨魚圖示不再動了,就代表跑起來了

Linux(Ubuntu/Debian)

Linux 不用裝 Docker Desktop,直接用指令裝 Docker Engine:

# 更新套件
sudo apt update

# 安裝必要的套件
sudo apt install -y ca-certificates curl gnupg

# 加入 Docker 官方金鑰
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 加入 Docker 套件庫
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安裝 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 讓你的帳號可以不用 sudo 跑 Docker
sudo usermod -aG docker $USER

裝完後登出再登入,跑一下 docker --version 確認有裝好。


Step 2:用 docker run 快速啟動(試玩用)

如果你只是想先試試看 n8n 長什麼樣子,跑這一行就好:

docker volume create n8n_data

docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  n8nio/n8n

跑起來之後,打開瀏覽器輸入 http://localhost:5678,就能看到 n8n 了。

這個方法是「試玩版」,關掉終端機 n8n 就停了。正式用請看下面的 docker-compose 方式。


Step 3:用 docker-compose 正式部署(推薦)

正式用 n8n,建議搭配 PostgreSQL 資料庫。白話版:SQLite(預設)像是把東西寫在便條紙上,PostgreSQL 像是用保險箱存放 — 更安全、更穩定。

3.1 建立資料夾

mkdir n8n-docker && cd n8n-docker

3.2 建立 .env 檔案

# .env

# PostgreSQL 設定(請改成你自己的密碼)
POSTGRES_USER=n8n
POSTGRES_PASSWORD=這裡換成你的密碼
POSTGRES_DB=n8n

# n8n 設定
N8N_ENCRYPTION_KEY=這裡換成一串隨機字串
WEBHOOK_URL=http://localhost:5678/
GENERIC_TIMEZONE=Asia/Taipei
TZ=Asia/Taipei

N8N_ENCRYPTION_KEY 很重要!n8n 用這個來加密你的帳號密碼。怎麼產生隨機字串?跑這個:

openssl rand -hex 32

3.3 建立 docker-compose.yml

把下面這整段複製到 docker-compose.yml

# docker-compose.yml — n8n + PostgreSQL 正式部署
# 最後更新:2026-03

version: "3.8"

services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 10s
      timeout: 5s
      retries: 5

  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "5678:5678"
    environment:
      DB_TYPE: postgresdb
      DB_POSTGRESDB_HOST: postgres
      DB_POSTGRESDB_PORT: 5432
      DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
      DB_POSTGRESDB_USER: ${POSTGRES_USER}
      DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
      WEBHOOK_URL: ${WEBHOOK_URL}
      GENERIC_TIMEZONE: ${GENERIC_TIMEZONE}
      TZ: ${TZ}
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

volumes:
  postgres_data:
  n8n_data:

3.4 啟動

docker compose up -d

等個 30 秒左右,打開 http://localhost:5678,你應該會看到 n8n 的設定畫面。

3.5 確認有跑起來

docker compose ps

兩個服務(postgresn8n)都要顯示 Uprunning,這樣就對了。


環境變數說明

變數幹嘛用的重要程度
N8N_ENCRYPTION_KEY加密你存在 n8n 裡的帳號密碼。弄丟了就所有密碼都要重新設定超級重要
WEBHOOK_URL告訴 n8n 外面的人要用哪個網址來觸發 Webhook重要
DB_TYPE資料庫類型。用 PostgreSQL 的話填 postgresdb(不是 postgres,很多人搞錯)重要
DB_POSTGRESDB_HOST資料庫的位置。用 docker-compose 的話填服務名稱 postgres(不是 localhost重要
GENERIC_TIMEZONE時區。台灣填 Asia/Taipei建議設
N8N_PROTOCOL用 HTTPS 的話要設成 https有 HTTPS 時設
N8N_HOST你的網域名稱,例如 n8n.yourdomain.com有網域時設

完整的環境變數清單可以看 n8n 官方文件


安裝好之後,3 件一定要做的事

1. 備份你的 N8N_ENCRYPTION_KEY

.env 裡面的 N8N_ENCRYPTION_KEY 複製到安全的地方(密碼管理器、紙條鎖抽屜裡都好)。

為什麼?因為 n8n 用這個金鑰加密你的所有第三方帳號密碼(Gmail、Google Sheets、Slack…)。金鑰弄丟了 = 所有密碼要重新設定。

2. 設定正確的 WEBHOOK_URL

如果你之後要讓外面的服務呼叫你的 n8n(例如表單送出後觸發 workflow),WEBHOOK_URL 要設成你的對外網址,不能用 localhost

# .env 裡面改成你的網域
WEBHOOK_URL=https://n8n.yourdomain.com/

3. 建立管理員帳號

第一次打開 n8n 會要你建立帳號。這個帳號就是管理員,請用一個你記得住的 email 和夠強的密碼。


常見錯誤與解決方法

❌ 錯誤:port 5678 already in use

有別的程式佔了 5678 port。改 docker-compose.yml 的 ports:

ports:
  - "5679:5678"  # 改用 5679

然後改用 http://localhost:5679 打開。

❌ 錯誤:n8n 一直重啟(restart loop)

通常是資料庫連不上。檢查兩件事:

  1. DB_POSTGRESDB_HOST 是不是寫成 postgres(服務名稱),不是 localhost
  2. DB_TYPE 是不是寫成 postgresdb(不是 postgres

看 log 找原因:

docker compose logs n8n

❌ 錯誤:credentials 全部消失

通常是 N8N_ENCRYPTION_KEY 變了。如果你之前沒有手動設定這個值,n8n 會自動產生一個存在 volume 裡。重新建立容器如果 volume 不見了,金鑰也跟著不見。

解法:永遠在 .env 裡明確設定 N8N_ENCRYPTION_KEY

❌ 錯誤:Permission denied

n8n 容器裡用的是 node 使用者(UID 1000)。如果你掛載本機目錄而不是 Docker volume,要確保資料夾權限正確:

sudo chown -R 1000:1000 ./n8n-data

更新 n8n 版本

n8n 幾乎每週都出新版。更新步驟:

# 1. 先備份(很重要)
docker compose exec n8n n8n export:workflow --all --output=/home/node/.n8n/backup-workflows.json
docker compose exec n8n n8n export:credentials --all --output=/home/node/.n8n/backup-credentials.json

# 2. 拉新的映像檔
docker compose pull n8n

# 3. 重啟
docker compose up -d

n8n 啟動時會自動跑資料庫 migration,不用手動處理。

更完整的備份和更新 SOP,看這篇:n8n 備份與更新 SOP


下一步

裝好 n8n 之後,接下來可以看:


不想自己裝?

實話說,自己裝 n8n 需要搞 Docker、資料庫、SSL、備份… 如果你只想專心做自動化,不想管這些基礎建設:

我們幫你架好,直接用 >> n8nstart.cc/hosting

已經幫你設定好 PostgreSQL、HTTPS、自動備份、自動更新。你只要打開瀏覽器,開始拉 workflow 就好。


本文最後更新:2026-03-19 | n8n 版本:1.82+ 有問題?到 n8n 官方社群N8NMarket 粉專 問我們。