Mục lục
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!