Cập nhật n8n lên phiên bản mới là thói quen tốt, nhưng không phải lúc nào bản mới cũng “hợp” với workflow cũ của bạn. Chỉ cần một node đổi cách hoạt động hoặc một đoạn code không còn tương thích, cả quy trình tự động hóa có thể đổ vỡ sau khi update. Lúc này bạn có hai hướng xử lý: ngồi sửa lại code cho hợp bản mới, hoặc quay ngược thời gian về bản backup ngay trước khi update. Bài viết này hướng dẫn bạn cách restore n8n đang chạy bằng Docker về đúng bản backup cũ chỉ với một file script duy nhất — nhanh, gọn và đủ an toàn cho người mới làm quen với Docker.

Khi nào bạn cần restore n8n?
Không phải lần update nào cũng êm đẹp. Bạn nên nghĩ ngay tới việc restore khi gặp một trong các tình huống sau:
- Sau khi update n8n, một số workflow báo lỗi hoặc chạy sai logic so với trước.
- Bạn vừa chạy script tự động cập nhật n8n và muốn quay về trạng thái ổn định trước đó.
- Bạn thử nghiệm tính năng mới trên bản n8n mới nhưng muốn hoàn tác toàn bộ thay đổi.
Điều kiện tiên quyết là bạn đã có file backup .tar.gz được tạo trước đó — ví dụ bằng script auto backup đi kèm bộ script tự động cập nhật n8n của BNIX. Không có file backup thì không có gì để restore.
Chuẩn bị trước khi restore
- VPS đã cài Docker, n8n đang chạy bằng Docker với volume dữ liệu tên
n8n_data. - File backup
.tar.gzcòn nguyên vẹn, nằm sẵn trên VPS (ví dụ trong/home/n8n/backups/). - Quyền SSH root (hoặc user có quyền chạy docker) vào VPS.
Nếu chưa chắc volume của mình tên gì, chạy lệnh docker volume ls để kiểm tra trước khi làm tiếp.
Nguyên lý hoạt động của script restore
Toàn bộ workflow, credentials và cài đặt của n8n Docker đều nằm trong Docker volume n8n_data. Script restore không đụng chạm gì tới image hay container n8n — nó chỉ làm 3 việc:
- Dựng một container tạm (dùng image nhẹ
busybox) và gắn volumen8n_datavào đó, để có “cửa” ghi dữ liệu vào volume. - Giải nén file backup
.tar.gzra thư mục tạm. - Chép đè toàn bộ dữ liệu đã giải nén vào volume qua container tạm, rồi dọn sạch container tạm và thư mục tạm.
Cách làm này an toàn vì nó chỉ ghi đúng vào volume n8n_data, không xóa volume, không rebuild container và không chạm vào file hệ thống của Docker.
Script restore n8n đầy đủ
Tạo file restore-n8n.sh với nội dung sau:
#!/bin/bash
# restore-n8n.sh - Khoi phuc du lieu n8n Docker tu file backup .tar.gz
# Cach dung: ./restore-n8n.sh /home/n8n/backups/n8n_backup_YYYYMMDD-HHMM.tar.gz
FILE_BACKUP="$1" # duong dan file backup can khoi phuc
TEN_VOLUME="n8n_data" # volume Docker dang chua du lieu n8n
CONTAINER_TAM="n8n-restore-tam"
THU_MUC_TAM="/tmp/n8n_khoiphuc"
# --- Kiem tra tham so dau vao ---
if [ -z "$FILE_BACKUP" ]; then
echo "Thieu file backup! Vi du: ./restore-n8n.sh /home/n8n/backups/n8n_backup_20240502-0945.tar.gz"
exit 1
fi
if [ ! -f "$FILE_BACKUP" ]; then
echo "Khong tim thay file: $FILE_BACKUP"
exit 1
fi
echo "Bat dau khoi phuc tu: $FILE_BACKUP"
# --- Buoc 1: dung container tam de truy cap vao volume ---
docker rm -f "$CONTAINER_TAM" >/dev/null 2>&1 || true
docker run -d --name "$CONTAINER_TAM" -v "$TEN_VOLUME":/data busybox sleep 3600
# --- Buoc 2: giai nen file backup ra thu muc tam ---
mkdir -p "$THU_MUC_TAM" && cd "$THU_MUC_TAM"
tar xzvf "$FILE_BACKUP"
# --- Buoc 3: chep de toan bo du lieu vao volume ---
docker cp data/. "$CONTAINER_TAM":/data/
# --- Buoc 4: don dep ---
docker rm -f "$CONTAINER_TAM"
rm -rf "$THU_MUC_TAM"
echo "Khoi phuc hoan tat!"
Các bước chạy script restore
Bước 1: Tạo file script
SSH vào VPS rồi tạo file script trong thư mục quản lý n8n của bạn:
nano /home/n8n/restore-n8n.sh
Dán toàn bộ nội dung script ở trên vào file, bấm Ctrl + O để lưu và Ctrl + X để thoát nano.
Bước 2: Cấp quyền thực thi
chmod +x /home/n8n/restore-n8n.sh
Bước 3: Chạy restore với đúng file backup
cd /home/n8n
./restore-n8n.sh /home/n8n/backups/n8n_backup_20240502-0945.tar.gz
Lưu ý: thay đường dẫn trong ví dụ bằng đúng đường dẫn file backup bạn muốn khôi phục. Nếu truyền sai đường dẫn hoặc quên truyền tham số, script sẽ báo lỗi ngay thay vì chạy ẩu.
Sau khi restore: khởi động lại n8n
Để n8n tải lại toàn bộ dữ liệu vừa khôi phục, bạn cần restart container n8n. Đứng trong thư mục chứa file docker-compose.yml của n8n và chạy:
docker compose up -d n8n
Chờ vài giây rồi mở lại giao diện n8n — mọi workflow, credentials và lịch sử sẽ trở về đúng như thời điểm bạn tạo bản backup.
Ưu điểm của cách restore này
- Không cần xóa volume, không cần rebuild: container n8n giữ nguyên, chỉ dữ liệu bên trong được thay thế.
- Chính xác và có kiểm soát: script chỉ ghi đúng vào volume
n8n_data, không lan man sang chỗ khác. - An toàn cho hệ thống: không đụng vào file hệ thống của Docker hay các container khác trên VPS.
- Nhanh: toàn bộ quá trình thường chỉ mất 1–2 phút tùy dung lượng backup.
Một số lưu ý quan trọng
- Kiểm tra đúng tên volume: nếu khi cài n8n bạn đặt volume tên khác
n8n_data, hãy sửa biếnTEN_VOLUMEtrong script cho khớp. - Nên dừng n8n trước khi restore: chạy
docker compose stop n8ntrước để tránh việc n8n ghi dữ liệu mới trong lúc script đang chép đè, rồi start lại sau khi xong. - Backup mới trước khi restore: nếu sau thời điểm backup cũ bạn có thêm workflow quan trọng, hãy tạo thêm một bản backup hiện tại để dự phòng — restore là thao tác ghi đè một chiều.
- File backup phải đúng định dạng: script này dùng cho file
.tar.gzdo bộ script backup của BNIX tạo ra (bên trong có thư mụcdata/). File backup từ công cụ khác có cấu trúc khác sẽ không restore đúng.
Chúc các bạn khôi phục thành công! Nếu sau restore n8n vẫn báo lỗi, hãy kiểm tra lại hai điểm: file backup có đúng là bản trước khi update không, và container n8n đã được restart sau restore chưa.
👉 Cần VPS để thực hành? Đăng ký VPS BNIX tại đây
- 🏢 Chuyên thiết kế web cho doanh nghiệp và cá nhân
- 🤖 Giải pháp tự động hóa cho Doanh nghiệp và cá nhân
- 📞 0925045760
- 🌐 thietkewebdian.com
