n8n 備份與更新 SOP:防止資料遺失的完整指南
n8n 備份和更新的完整 SOP。教你備份 workflow、credentials、encryption key,附自動備份腳本和安全更新步驟。
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 = 所有密碼消失 |
| Workflows | n8n 資料庫裡 | 你做的所有自動化流程 |
| Credentials | n8n 資料庫裡 | 你設定的所有第三方帳號 |
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有另外存一份 - 知道怎麼回滾(至少在測試環境試過一次)
下一步
備份設好之後:
- n8n 介面完全導覽 — 開始認識 n8n 介面
- n8n 第一個自動化工作流 — 做你的第一個 workflow
- n8n HTTPS 設定教學 — 還沒設 HTTPS 的話看這篇
- n8n 完整入門指南 — 從安裝到第一個自動化的完整地圖
不想自己管備份和更新?
自動備份、安全更新、版本回滾… 這些都是基礎建設的工作。如果你只想專心做自動化:
我們幫你架好,備份和更新都自動處理 >> n8nstart.cc/hosting
本文最後更新:2026-03-22 有問題?到 n8n 官方社群 或 N8NMarket 粉專 問我們。