Script tự động cập nhật n8n

Sau bài hướng dẫn cài đặt n8n bằng docker, hôm nay sẽ làm 1 cái file script để tự động cập nhật n8n. Mình chỉ sử dụng thôi, không quan tâm SSH nữa (khóa SSH pass luôn cho lành)

🎯 Mục tiêu script:

Backup volume n8n_data ra file .tar.gz.

Kéo image n8n mới nhất về.

Restart container n8n (giữ nguyên cấu hình hiện tại).

Xóa image cũ sau khi update thành công.

🛠 Đây là full script update-n8n.sh

#!/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
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!"

📋 Hướng dẫn sử dụng:

# Tạo file:

nano /home/n8n/update-n8n.sh

# Dán toàn bộ script trên vào.

# Cho phép chạy:

chmod +x /home/n8n/update-n8n.sh

# Chạy update:

cd /home/n8n
./update-n8n.sh

🧠 Sau khi chạy

File backup sẽ nằm trong /home/n8n/backups/

Ví dụ: /home/n8n/backups/n8n_backup_20240502-0945.tar.gz

Docker container n8n sẽ được tự động restart bằng image mới nhất.

🎯 Nếu muốn tự động hoàn toàn:

Bạn có thể gán vào cronjob để mỗi tuần update tự động:

crontab -e

Thêm dòng

0 3 * * 1 /home/n8n/update-n8n.sh >> /home/n8n/update-log.txt 2>&1

(nghĩa là: mỗi Thứ 2 lúc 3h sáng tự động backup + update n8n.)

✅ Ưu điểm của script mình viết:

  • Backup trước khi update, tuyệt đối an toàn.
  • Nếu lỡ update lỗi, chỉ cần restore backup volume lại là xong.
  • Gọn nhẹ, dễ kiểm soát.

Chúc các bạn thực hiện thành công!

4.7/5 - (7 bình chọn)
Chia sẻ tới bạn bè và gia đình
BNIX.VN
BNIX.VN

Đơn vị chuyên cung cấp dịch vụ Web, Cloud Hosting giá rẻ, VPS, Tên Miền,.. chất lượng cao tại thị trường Việt Nam.