n8n 備份 更新 SOP encryption key

n8n 備份與更新 SOP:防止資料遺失的完整指南

n8n 備份和更新的完整 SOP。教你備份 workflow、credentials、encryption key,附自動備份腳本和安全更新步驟。

N8NMarket 2026年3月24日 6 分鐘閱讀

n8n 備份與更新 SOP:防止資料遺失的完整指南

n8n 用得越多,裡面存的東西就越重要 — workflow、第三方帳號密碼、執行紀錄。這篇整理一套完整的備份和更新 SOP,照著做就不會出事。


先講一個恐怖故事

n8n 用一個叫 N8N_ENCRYPTION_KEY 的金鑰來加密你存在裡面的所有第三方帳號密碼(Gmail、Slack、Google Sheets…)。

如果你沒有手動設定這個值,n8n 會在第一次啟動時自動產生一個,存在 Docker volume 裡面。

然後有一天你:

  • 重新建立 Docker 容器
  • 換了一台主機
  • 不小心刪了 volume

金鑰就不見了。你的 n8n 還能打開,workflow 還在,但所有的 credentials 全部失效,因為新的金鑰解不開舊的加密資料。

每一個第三方帳號都要重新設定。如果你串了 20 個服務,就要重設 20 次。

所以第一件事:把 N8N_ENCRYPTION_KEY 寫在 .env 裡面,然後備份這個檔案。


你需要備份什麼?

項目位置為什麼重要
.env 檔案(含 encryption key)你的專案目錄沒有 key = 所有密碼消失
Workflowsn8n 資料庫裡你做的所有自動化流程
Credentialsn8n 資料庫裡你設定的所有第三方帳號
docker-compose.yml你的專案目錄你的部署設定
PostgreSQL 資料Docker volume所有資料的來源

手動備份 SOP

Step 1:匯出 Workflows

docker compose exec n8n n8n export:workflow \
  --all \
  --output=/home/node/.n8n/backup-workflows.json

匯出的檔案會存在 n8n 的 volume 裡。把它複製出來:

docker compose cp n8n:/home/node/.n8n/backup-workflows.json ./backup-workflows.json

Step 2:匯出 Credentials

docker compose exec n8n n8n export:credentials \
  --all \
  --output=/home/node/.n8n/backup-credentials.json

複製出來:

docker compose cp n8n:/home/node/.n8n/backup-credentials.json ./backup-credentials.json

預設匯出的 credentials 是加密的(用你的 encryption key 加密)。如果你想匯出明文版本(搬家到新環境時需要),加上 --decrypted 參數。但明文檔案要小心保管!

Step 3:備份 PostgreSQL

docker compose exec postgres pg_dump \
  -U n8n \
  -d n8n \
  > ./backup-postgres.sql

Step 4:備份設定檔

cp .env ./backup-env
cp docker-compose.yml ./backup-docker-compose.yml

Step 5:把備份存到安全的地方

別只存在同一台機器上。建議至少存到:

  • 雲端硬碟(Google Drive、Dropbox)
  • 另一台主機
  • 密碼管理器(.env 檔案)

自動備份腳本

每次手動備份太麻煩了。把下面這個腳本存成 backup-n8n.sh

#!/bin/bash
# n8n 自動備份腳本
# 使用方式:chmod +x backup-n8n.sh && ./backup-n8n.sh

# === 設定 ===
N8N_DIR="/root/n8n-docker"          # 你的 n8n docker-compose 目錄
BACKUP_DIR="/root/n8n-backups"      # 備份存放目錄
KEEP_DAYS=30                         # 保留最近幾天的備份
DATE=$(date +%Y%m%d_%H%M%S)

# === 建立備份目錄 ===
mkdir -p "$BACKUP_DIR/$DATE"

cd "$N8N_DIR" || exit 1

# === 備份 Workflows ===
echo "備份 workflows..."
docker compose exec -T n8n n8n export:workflow \
  --all \
  --output=/home/node/.n8n/backup-workflows.json
docker compose cp n8n:/home/node/.n8n/backup-workflows.json "$BACKUP_DIR/$DATE/workflows.json"

# === 備份 Credentials(加密版)===
echo "備份 credentials..."
docker compose exec -T n8n n8n export:credentials \
  --all \
  --output=/home/node/.n8n/backup-credentials.json
docker compose cp n8n:/home/node/.n8n/backup-credentials.json "$BACKUP_DIR/$DATE/credentials.json"

# === 備份 PostgreSQL ===
echo "備份 PostgreSQL..."
docker compose exec -T postgres pg_dump -U n8n -d n8n > "$BACKUP_DIR/$DATE/postgres.sql"

# === 備份設定檔 ===
echo "備份設定檔..."
cp .env "$BACKUP_DIR/$DATE/env.backup"
cp docker-compose.yml "$BACKUP_DIR/$DATE/docker-compose.yml.backup"

# === 壓縮 ===
echo "壓縮備份..."
cd "$BACKUP_DIR"
tar -czf "$DATE.tar.gz" "$DATE"
rm -rf "$DATE"

# === 清理舊備份 ===
echo "清理 $KEEP_DAYS 天前的備份..."
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$KEEP_DAYS -delete

echo "備份完成:$BACKUP_DIR/$DATE.tar.gz"

設定每天自動跑

# 給腳本執行權限
chmod +x backup-n8n.sh

# 設定 cron,每天凌晨 3 點跑
crontab -e

加入這行:

0 3 * * * /root/backup-n8n.sh >> /var/log/n8n-backup.log 2>&1

實測過的,放心用。


安全更新步驟

n8n 幾乎每週出新版(目前最新是 v1.82+)。更新前一定要先備份。

更新 SOP

# 1. 先跑備份腳本
./backup-n8n.sh

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

# 3. 重啟(n8n 會自動跑 database migration)
docker compose up -d

# 4. 確認有跑起來
docker compose ps

# 5. 打開瀏覽器確認功能正常

確認更新成功

登入 n8n 後,到 Settings → About,看版本號有沒有更新。

如果更新後出問題

# 1. 先停掉
docker compose down

# 2. 換回舊版本(在 docker-compose.yml 裡指定版本)
# 把 image: n8nio/n8n:latest 改成
# image: n8nio/n8n:1.81.4(換成你之前的版本號)

# 3. 重啟
docker compose up -d

# 4. 如果資料庫有問題,用備份恢復
docker compose exec -T postgres psql -U n8n -d n8n < ./backup-postgres.sql

想固定版本不自動更新?在 docker-compose.yml 裡把 n8nio/n8n:latest 改成特定版本號,例如 n8nio/n8n:1.82.2。要看有哪些版本,到 n8n GitHub Releases


回滾方法

如果更新或操作後出了嚴重問題,需要回到之前的狀態:

完整回滾步驟

# 1. 停掉所有服務
docker compose down

# 2. 解壓備份
cd /root/n8n-backups
tar -xzf 20260322_030000.tar.gz  # 換成你要用的備份

# 3. 恢復設定檔
cp 20260322_030000/env.backup /root/n8n-docker/.env
cp 20260322_030000/docker-compose.yml.backup /root/n8n-docker/docker-compose.yml

# 4. 啟動服務
cd /root/n8n-docker
docker compose up -d

# 5. 恢復 PostgreSQL 資料
docker compose exec -T postgres psql -U n8n -d n8n < /root/n8n-backups/20260322_030000/postgres.sql

# 6. 重啟 n8n 讓它重新讀取資料
docker compose restart n8n

備份檢查清單

每個月花 5 分鐘確認一次:

  • 自動備份有在跑(看 /var/log/n8n-backup.log
  • 備份檔案大小合理(不是 0 bytes)
  • .env 裡的 N8N_ENCRYPTION_KEY 有另外存一份
  • 知道怎麼回滾(至少在測試環境試過一次)

下一步

備份設好之後:


不想自己管備份和更新?

自動備份、安全更新、版本回滾… 這些都是基礎建設的工作。如果你只想專心做自動化:

我們幫你架好,備份和更新都自動處理 >> n8nstart.cc/hosting


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