Nếu bạn đang chạy n8n trên VPS bằng Docker, việc cập nhật mỗi khi có bản mới sẽ tốn kha khá thời gian: backup dữ liệu, pull image mới, restart container, dọn image cũ. Bài viết này hướng dẫn bạn tạo một script bash duy nhất — update-n8n.sh — tự động thực hiện toàn bộ các bước trên chỉ với một lệnh chạy, thậm chí có thể hẹn giờ chạy tự động mỗi tuần bằng cron.
Script tự động cập nhật n8n hoạt động như thế nào?
Ý tưởng của script rất đơn giản và an toàn: backup trước, cập nhật sau. Cụ thể script sẽ thực hiện lần lượt 4 bước:
- Backup volume n8n_data thành file
.tar.gz, lưu vào thư mục riêng trên VPS. - Kéo image n8n mới nhất từ Docker Hub về máy.
- Restart container n8n bằng image mới, giữ nguyên toàn bộ cấu hình trong file
docker-compose.ymlhiện tại. - Xóa image cũ để giải phóng dung lượng ổ cứng.
Nhờ có bước backup trước, nếu quá trình update gặp lỗi, bạn chỉ cần restore volume từ file backup là hệ thống chạy lại bình thường.
Chuẩn bị: yêu cầu trước khi dùng script
Để script chạy đúng, VPS của bạn cần đáp ứng:
- n8n đang chạy bằng Docker Compose, ví dụ tại thư mục
/home/n8nvới filedocker-compose.yml. - Dữ liệu n8n lưu trong Docker volume tên
n8n_data. - VPS đã cài Docker và Docker Compose.
Nếu thư mục hoặc tên volume của bạn khác, chỉ cần sửa 3 dòng cấu hình ở đầu script cho khớp.
Tạo file script update-n8n.sh
Đầu tiên, tạo file script trong thư mục chứa docker-compose của n8n:
nano /home/n8n/update-n8n.sh
Dán toàn bộ nội dung script dưới đây vào file:
#!/bin/bash
# ========================
# Config
# ========================
COMPOSE_PATH="/home/n8n" # Đường dẫn tới folder docker-compose.yml
BACKUP_PATH="/home/n8n/backups" # Nơi lưu file backup
VOLUME_NAME="n8n_data" # Tên volume của n8n
TIME_NOW=$(date +"%Y%m%d-%H%M%S") # Thời gian hiện tại để đặt tên file backup
BACKUP_FILE="${BACKUP_PATH}/n8n_backup_${TIME_NOW}.tar.gz"
# ========================
# Bắt đầu
# ========================
echo "🔄 Updating n8n..."
echo "⏳ Step 1: Backup dữ liệu volume: $VOLUME_NAME"
# Tạo thư mục backup nếu chưa có
mkdir -p "${BACKUP_PATH}"
# Backup volume bằng busybox
docker run --rm -v ${VOLUME_NAME}:/data -v ${BACKUP_PATH}:/backup busybox tar czvf /backup/n8n_backup_${TIME_NOW}.tar.gz /data
echo "✅ Backup thành công: ${BACKUP_FILE}"
# Di chuyển vào thư mục docker-compose
cd "${COMPOSE_PATH}"
# Kéo image mới nhất
echo "⏳ Step 2: Pull image mới nhất..."
docker compose pull n8n
# Restart container
echo "⏳ Step 3: Restart container..."
docker compose up -d n8n
# Xóa image cũ
echo "⏳ Step 4: Dọn dẹp image cũ..."
docker image prune -f
echo "🎉 Update và Backup hoàn tất!"
Script dùng image busybox siêu nhẹ để nén volume /data thành file tar.gz — cách này backup đúng dữ liệu container đang dùng mà không cần dừng n8n.
Phân quyền và chạy script cập nhật n8n
Sau khi lưu file, cấp quyền thực thi và chạy script:
# Cho phép chạy:
chmod +x /home/n8n/update-n8n.sh
# Chạy update:
cd /home/n8n
./update-n8n.sh
Kiểm tra kết quả sau khi chạy
- File backup sẽ nằm trong
/home/n8n/backups/, ví dụn8n_backup_20240502-0945.tar.gz. Hãy kiểm tra file có dung lượng hợp lý, không phải file rỗng. - Container n8n tự động restart với image mới nhất — truy cập giao diện n8n để xác nhận phiên bản.
- Image Docker cũ đã được dọn sạch bằng lệnh
docker image prune -f.

Hẹn giờ tự động cập nhật n8n mỗi tuần bằng cron
Nếu không muốn nhớ lịch cập nhật, bạn có thể gán script vào cron để VPS tự động backup + update n8n mỗi tuần. Mở cron của user hiện tại:
crontab -e
Thêm dòng sau (ví dụ: chạy mỗi Thứ 2 lúc 3h sáng):
0 3 * * 1 /home/n8n/update-n8n.sh >> /home/n8n/update-log.txt 2>&1
Kết quả mỗi lần chạy sẽ được ghi vào file update-log.txt, bạn chỉ cần kiểm tra log khi muốn xem lịch sử update. Lưu ý: nên đặt giờ chạy vào lúc ít người dùng nhất (rạng sáng) để tránh ảnh hưởng workflow đang chạy.
Ưu điểm của cách cập nhật này
- An toàn tuyệt đối: luôn backup trước khi update, lỗi là có bản khôi phục ngay.
- Gọn nhẹ, dễ kiểm soát: một file script duy nhất, không cần cài thêm công cụ.
- Tự động hóa được: gán cron là quên luôn chuyện update thủ công.
- Không mất cấu hình: restart container bằng
docker-compose.ymlhiện tại nên mọi thiết lập được giữ nguyên.
👉 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
