n8n Thai
by n8n Thai

Backup และ Restore Workflow n8n ทำยังไง?

วิธี backup และ restore workflow, credential, และข้อมูล n8n อย่างถูกต้อง ไม่ให้ข้อมูลสูญหายเมื่อเกิดปัญหา

Backup และ Restore Workflow n8n ทำยังไง?

การ backup n8n เป็นสิ่งที่หลายคนมองข้าม จนกระทั่งเกิดปัญหาขึ้นจริงๆ ไม่ว่าจะเป็น server เสีย, update แล้วมีปัญหา, หรือลบข้อมูลโดยไม่ตั้งใจ ถ้าไม่มี backup ทุกอย่างที่สร้างมาก็จะหายไปพร้อมกัน

n8n เก็บข้อมูลหลักสองส่วนคือ workflow/credential ใน database และ configuration ใน directory .n8n การ backup ที่ครบถ้วนต้องครอบคลุมทั้งสองส่วนนี้

ทำความเข้าใจโครงสร้างข้อมูล n8n

ก่อน backup ต้องรู้ว่า n8n เก็บข้อมูลไว้ที่ไหน:

ข้อมูลตำแหน่ง (SQLite)ตำแหน่ง (PostgreSQL)
Workflow~/.n8n/database.sqliteใน PostgreSQL database
Credentials~/.n8n/database.sqliteใน PostgreSQL database
Execution history~/.n8n/database.sqliteใน PostgreSQL database
Configuration~/.n8n/config~/.n8n/config
Encryption keyenvironment variableenvironment variable
Custom nodes~/.n8n/nodes/~/.n8n/nodes/

สำคัญมาก: N8N_ENCRYPTION_KEY ที่ใช้เข้ารหัส credential ต้องเก็บไว้แยกต่างหาก ถ้า key หาย แม้จะมี database backup ก็ไม่สามารถ decrypt credential ได้

วิธีที่ 1: Export Workflow ผ่าน UI (เหมาะสำหรับ workflow เดี่ยว)

วิธีนี้ง่ายที่สุด เหมาะสำหรับ backup workflow เฉพาะชิ้น หรือย้าย workflow ระหว่าง instance

Export workflow เดี่ยว

  1. เปิด workflow ที่ต้องการ backup
  2. คลิกเมนู (จุดสามจุด) มุมขวาบน
  3. เลือก Download — จะได้ไฟล์ .json

Export workflow ทั้งหมด

ผ่าน CLI บนเครื่อง server:

# Export ทุก workflow เป็นไฟล์ JSON แยกกัน
n8n export:workflow --all --output=/backup/workflows/

# หรือถ้าใช้ Docker
docker exec n8n n8n export:workflow --all --output=/home/node/.n8n/backup/

วิธีที่ 2: Backup ด้วย n8n CLI (แนะนำ)

n8n มี built-in command สำหรับ export/import ที่ครอบคลุมทั้ง workflow และ credential

# Export workflows ทั้งหมด
n8n export:workflow --all --backup --output=/backup/

# Export credentials ทั้งหมด (ยังเข้ารหัสอยู่)
n8n export:credentials --all --backup --output=/backup/

สำหรับ Docker:

# สร้างโฟลเดอร์ backup
mkdir -p ~/n8n-backup/$(date +%Y-%m-%d)

# Export ผ่าน Docker exec
docker exec n8n n8n export:workflow --all --backup --output=/tmp/backup/
docker cp n8n:/tmp/backup/. ~/n8n-backup/$(date +%Y-%m-%d)/

วิธีที่ 3: Backup Directory .n8n ทั้งหมด (Full Backup)

วิธีนี้ครอบคลุมที่สุด เหมาะสำหรับ restore ทั้งระบบ

สำหรับ SQLite (default)

# หยุด n8n ก่อน backup เพื่อความปลอดภัย
docker stop n8n

# Backup directory ทั้งหมด
tar -czf ~/n8n-backup-$(date +%Y%m%d).tar.gz ~/.n8n/

# เริ่ม n8n ใหม่
docker start n8n

สำหรับ PostgreSQL

# Backup database
docker exec postgres pg_dump -U n8n n8n > ~/n8n-db-$(date +%Y%m%d).sql

# Backup .n8n directory (เก็บ config และ custom nodes)
tar -czf ~/n8n-config-$(date +%Y%m%d).tar.gz ~/.n8n/ --exclude=*.sqlite

ตั้งค่า Auto Backup ด้วย Cron

สร้าง script สำหรับ backup อัตโนมัติ:

sudo nano /usr/local/bin/n8n-backup.sh
#!/bin/bash
BACKUP_DIR=/var/backups/n8n
DATE=$(date +%Y%m%d-%H%M)

mkdir -p $BACKUP_DIR

# Backup n8n data
docker stop n8n
tar -czf $BACKUP_DIR/n8n-$DATE.tar.gz /root/.n8n/
docker start n8n

# ลบ backup เก่ากว่า 30 วัน
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete

echo "Backup complete: n8n-$DATE.tar.gz"
chmod +x /usr/local/bin/n8n-backup.sh

เพิ่มใน crontab เพื่อรันทุกวันตี 2:

crontab -e
# เพิ่มบรรทัดนี้
0 2 * * * /usr/local/bin/n8n-backup.sh >> /var/log/n8n-backup.log 2>&1

วิธี Restore n8n จาก Backup

Restore จาก Export JSON (workflow เดี่ยว)

  1. เปิด n8n
  2. คลิก + เพื่อสร้าง workflow ใหม่
  3. คลิกเมนู แล้วเลือก Import from File
  4. เลือกไฟล์ .json ที่ backup ไว้

Restore จาก CLI Export

# Import workflows
n8n import:workflow --input=/backup/

# Import credentials
n8n import:credentials --input=/backup/

Restore Full Backup (Directory)

# หยุด n8n
docker stop n8n

# ลบข้อมูลเก่า
rm -rf ~/.n8n

# แตกไฟล์ backup
tar -xzf ~/n8n-backup-20260410.tar.gz -C /

# เริ่ม n8n ใหม่
docker start n8n

Restore PostgreSQL

# Drop และสร้าง database ใหม่
docker exec postgres psql -U n8n -c "DROP DATABASE n8n;"
docker exec postgres psql -U n8n -c "CREATE DATABASE n8n;"

# Restore จาก dump
cat ~/n8n-db-20260410.sql | docker exec -i postgres psql -U n8n -d n8n

Checklist ก่อน Restore

ก่อน restore ทุกครั้ง ตรวจสอบ:

  • มี N8N_ENCRYPTION_KEY เดิมพร้อมใช้งาน
  • Version ของ n8n ที่จะ restore ใส่ตรงกับ backup (หรือใกล้เคียง)
  • Backup ไฟล์ไม่เสียหาย (ลอง extract ดูก่อน)
  • Backup database ล่าสุด

ขั้นต่อไป

เมื่อมีระบบ backup แล้ว ขั้นต่อไปคือดูวิธี อัปเดต n8n อย่างปลอดภัย และ Best Practices ด้านความปลอดภัยสำหรับ n8n Server


อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co

Related posts