Update n8n docker

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.2/5 - (8 bình chọn)