N8N Docker 自架 Self-hosted VPS 省錢 部署

N8N Docker 自架完全攻略:從 $20/月省下來的方法

N8N Cloud 每月 20 美元起,自架可以幾乎免費。這篇完整說明 Docker 自架的選擇邏輯、伺服器建議、完整設定步驟,以及讓它穩定跑的關鍵配置。

N8NMarket 2026年4月22日

N8N Docker 自架完全攻略:從 $20/月省下來的方法

N8N Cloud 的入門方案是每個月 20 美元,執行次數上限 2,500 次。

如果你的流程執行頻率高一點,比如每小時抓一次資料,一個月下來就超過 700 次執行。加上你可能同時跑幾條不同的流程,2,500 次的額度很容易就吃完。

然後你得升級到每月 50 美元的方案。

自架 N8N,在一台 5-10 美元的雲端 VPS 上跑,執行次數不限制,資料存在你自己的伺服器上,一個月省下 40-50 美元。

這篇文章帶你把這件事從頭到尾做完。


自架 N8N 之前,你需要先想清楚的事

自架有代價。省下月費的同時,你要承擔:

「維護責任」:伺服器出問題、Docker 掛掉、N8N 版本更新出錯,這些都要自己解決。Cloud 版本出問題是 N8N 官方的事,自架出問題是你的事。

「安全責任」:你的自動化流程裡可能有 API Key、帳號密碼等敏感資料。自架代表你要自己確保伺服器的安全。

「備份責任」:Cloud 版本 N8N 會幫你備份流程資料,自架需要自己設定備份。

這些問題不是要嚇你,而是讓你有心理準備。對大多數人來說,這些事情都不複雜,花幾個小時設定好就可以,之後基本上不需要管。

如果你只是剛開始測試 N8N,先用 Cloud 版本的免費試用。等你確定 N8N 有用、想長期跑,再來考慮自架。


伺服器選擇:什麼規格夠用

N8N 的資源需求不高,但也不是完全沒要求。

基本需求:1 vCPU + 1GB RAM 是最低可用的配置,跑幾條簡單流程沒問題。但如果你要跑 AI 相關的流程(LLM 呼叫、向量計算),建議 2 vCPU + 2GB RAM。

推薦的 VPS 選項:

DigitalOcean Droplet($6/月,1vCPU + 1GB RAM):適合入門,介面友善,教學資源多。

Vultr($6/月,同樣規格):通常比 DigitalOcean 的網路速度好一點,台灣連線較快。

Hetzner(€3.79/月,2vCPU + 2GB RAM):歐洲廠商,CP 值最高,但伺服器在歐洲,台灣連線稍慢,用作後台跑流程沒問題。

Oracle Cloud Free Tier(免費,永久):4 vCPU + 24GB RAM 的 ARM 機器可以免費用,是真的免費,不是試用。缺點是申請有時候被拒絕、稳定性稍低。

作業系統選 Ubuntu 22.04 LTS,這是目前 N8N 官方文件最常用的範例環境,遇到問題找資料最容易。


Docker 安裝與設定

連上你的 VPS 之後(SSH 連線),開始安裝。

安裝 Docker

# 更新套件列表
sudo apt update

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

# 加入 Docker 的 GPG key
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 repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

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

# 讓你不需要 sudo 就能用 docker
sudo usermod -aG docker $USER
newgrp docker

確認 Docker 安裝成功:docker --version

用 Docker Compose 設定 N8N

建立工作目錄:

mkdir ~/n8n && cd ~/n8n

建立 docker-compose.yml

version: "3.8"

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=${N8N_HOST}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${N8N_HOST}/
      - GENERIC_TIMEZONE=Asia/Taipei
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
    external: true

建立 .env 環境變數檔案(不要把這個檔案上傳到 GitHub):

N8N_HOST=你的網域名稱
N8N_ENCRYPTION_KEY=一串隨機的32位元以上字串
N8N_BASIC_AUTH_USER=你的登入帳號
N8N_BASIC_AUTH_PASSWORD=你的登入密碼

建立 Docker Volume 並啟動:

docker volume create n8n_data
docker compose up -d

確認有在跑:docker compose ps


設定 HTTPS 和網域名稱

直接用 IP + Port 存取 N8N 是可以的,但不安全,而且很多第三方服務(比如 Meta API)要求 Webhook URL 必須是 HTTPS。

要設定 HTTPS,你需要一個網域名稱、Nginx 作為反向代理、Let’s Encrypt 的免費 SSL 憑證。

安裝 Nginx 和 Certbot

sudo apt install -y nginx certbot python3-certbot-nginx

設定 Nginx 配置

建立 /etc/nginx/sites-available/n8n

server {
    server_name 你的網域名稱;

    location / {
        proxy_pass http://localhost:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
        chunked_transfer_encoding off;
        proxy_buffering off;
        proxy_request_buffering off;
    }

    listen 80;
}

啟用設定:

sudo ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

申請 SSL 憑證

確認你的網域 A 記錄已經指向你的 VPS IP,然後執行:

sudo certbot --nginx -d 你的網域名稱

按照提示填入 Email,選擇自動轉向 HTTPS。完成後,你可以用 https://你的網域名稱 存取 N8N。

SSL 憑證每 90 天需要更新一次,Certbot 會自動幫你更新。


關鍵配置:讓自架 N8N 跑得更穩

資料備份

N8N 的所有流程、憑證、執行紀錄都存在 Docker Volume(n8n_data)裡,實際路徑是 /var/lib/docker/volumes/n8n_data/_data

設定每日備份腳本:

cat > ~/backup-n8n.sh << 'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d)

# 備份 n8n data volume
docker run --rm \
  -v n8n_data:/data \
  -v /tmp:/backup \
  alpine tar czf /backup/n8n-data-${DATE}.tar.gz -C /data .

# 清理本地備份(保留最近 7 天)
find /tmp -name "n8n-data-*.tar.gz" -mtime +7 -delete
EOF

chmod +x ~/backup-n8n.sh

# 設定每天凌晨 2 點自動執行
(crontab -l 2>/dev/null; echo "0 2 * * * /root/backup-n8n.sh") | crontab -

自動重啟

Docker Compose 裡的 restart: always 確保 N8N 在意外崩潰後自動重啟,伺服器重開機後也會自動啟動。

確認 Docker 服務開機後自動啟動:

sudo systemctl enable docker

更新 N8N

定期更新 N8N 到最新版本(建議每 1-2 個月更新一次):

cd ~/n8n
docker compose pull
docker compose up -d

更新前先備份:~/backup-n8n.sh


常見問題

「Docker Compose 啟動後瀏覽器連不上」:確認防火牆有開放 80 和 443 port:

sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22
sudo ufw enable

「Webhook 收不到請求」:確認 WEBHOOK_URL 環境變數設定正確(完整的 HTTPS URL,結尾加斜線),而且網域的 DNS 已經正確指向你的 VPS IP。

「N8N 版本更新後流程出錯」:更新前先備份,更新後測試重要流程。如果有問題查 N8N 的 changelog 了解哪些地方改變了。

「記憶體不足導致 N8N 崩潰」:如果 VPS 是 1GB RAM,設定 Swap 可以暫時緩解:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

進階:連接外部 PostgreSQL 資料庫

預設 N8N 用 SQLite 存資料,適合個人使用。如果流程執行量大,可以改成 PostgreSQL。

docker-compose.yml 裡加入 postgres service,並在 n8n 的環境變數裡加入:

- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}

完整的 Docker Compose 設定包括環境變數詳解,可以參考「Docker Compose 檔案詳解:N8N 環境變數、資料卷、反向代理完整說明」那篇。Docker 官方安裝文件也是自架時的重要參考。


你省了多少

自架之後算一下帳:

VPS 費用:每月 6-10 美元

N8N Cloud 費用:省去每月 20-50 美元

每年淨省:最少 120 美元,最多 480 美元

設定時間:第一次大概 2-3 小時,之後每月維護不超過 30 分鐘。

對大多數長期用 N8N 的人來說,這個投資很值得。

你現在用的是 Cloud 版還是還沒開始用 N8N?留言告訴我你的狀況,我可以建議你是否值得現在就自架。

自架好之後,前往 N8Nstart 模板庫 開始匯入流程,不用從空白畫布建起。


延伸閱讀