
1. Cấu Trúc Thư Mục Dữ Liệu
Xác định tên container chính xác
Thư mục dữ liệu chính của n8n được mount ra ngoài container để dễ sao lưu và phục hồi:
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"
Tìm đến đoạn:
"Source": "/opt/xxx", <-- đây là đường dẫn trên host
"Destination": "/home/node/.n8n",
Tìm dòng có tên dn8n — hoặc container nào bạn nghi ngờ là đang chạy n8n.
/opt/dn8n2-data
Trong đó bao gồm các file quan trọng:
database.sqlite: cơ sở dữ liệu chínhconfig,nodes/,ssh/,binaryData/: các dữ liệu cấu hình khác
2. Sao Lưu Dữ Liệu
Cách thực hiện
# Tạo thư mục sao lưu theo timestamp
TIMESTAMP=$(date +"%Y%m%d-%H%M")
sudo cp -r /opt/dn8n2-data /opt/n8n-backup/dn8n2-$TIMESTAMP
Lưu ý: Việc thêm timestamp giúp kiểm soát các bản sao lưu dễ dàng hơn.
Kiểm tra nhanh các file database hiện có
sudo find / -type f -name "database.sqlite" 2>/dev/null
3. Cập Nhật n8n lên Phiên Bản Mới Nhất
File docker-compose.yml mẫu
version: '3.8'
services:
dn8n2:
image: n8nio/n8n:latest
container_name: dn8n2
restart: unless-stopped
ports:
- 5679:5678 # 👉 Thay đổi cổng nếu cần truy cập qua port khác
volumes:
- /opt/dn8n2-data:/home/node/.n8n 👉 Dữ liệu chính nằm tại đây
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin # 👉 Thay bằng tên user của bạn
- N8N_BASIC_AUTH_PASSWORD=m123456 # 👉 Thay bằng mật khẩu của bạn
- N8N_HOST=dn8n2.midar.vn
- N8N_PORT=5678
- WEBHOOK_URL=https://dn8n2.midar.vn
Thao tác cập nhật
# Dừng container cũ
sudo docker compose down
# Kéo image mới nhất
sudo docker pull n8nio/n8n:latest
# Chạy lại
sudo docker compose up -d
Lưu ý: Đảm bảo mount đúng thư mục
/opt/dn8n2-datađể giữ nguyên dữ liệu sau update.
4. Khôi Phục Dữ Liệu Từ Bản Sao Lưu
Bước 1: Stop container đang chạy
sudo docker compose down
Bước 2: Xóa thư mục hiện tại và thay bằng bản backup
sudo rm -rf /opt/dn8n2-data
sudo cp -r /opt/n8n-backup/dn8n2-20250701-0214 /opt/dn8n2-data
sudo chown -R 1000:1000 /opt/dn8n2-data
Lưu ý:
1000:1000là UID:GID mặc định của usernodetrong container n8n.
Bước 3: Khởi động lại container
sudo docker compose up -d
Sau khi truy cập https://dn8n2.midar.vn, dữ liệu cũ sẽ được phục hồi hoàn toàn, bao gồm user, workflow, credentials…
5. Sửa lỗi OAuth Redirect URL khi update n8n
Khi cập nhật, n8n có thể tự động reset giá trị callback của OAuth Credential thành IP nội bộ như sau:
https://192.168.0.107:5679/rest/oauth2-credential/callback
Thay vì đúng domain:
https://dn8n2.midar.vn/rest/oauth2-credential/callback
Cách khắc phục
- Không cần sửa trong Google Developers Console.
- Vào thẳng n8n →
Credentials - Chọn OAuth đang bị lỗi →
Edit→ sửa lại trườngOAuth Callback URLthành domain chính xác.
6. Kiểm Tra Thông Tin Tài Khoản
Tài khoản đăng nhập của n8n (nếu dùng basic auth) được thiết lập từ biến môi trường:
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=matkhaucuaban
Nếu mất thông tin, bạn có thể kiểm tra lại bằng cách:
sudo cat docker-compose.yml
Hoặc sửa trực tiếp để đặt lại mật khẩu mới.
7. Ghi chú quan trọng
- Sau khi cập nhật, nên truy cập giao diện web kiểm tra xem workflows và credentials còn hay không.
- Việc không mount đúng thư mục volume khi chạy container mới sẽ khiến n8n yêu cầu tạo tài khoản lại.
- Nên sao lưu định kỳ trước mỗi lần cập nhật.
Cấu trúc thư mục dữ liệu
Thông thường container n8n được cấu hình với thư mục volume như sau:
/opt/dn8n2-data/database.sqlite
Các bản backup được đặt tại:
/opt/n8n-backup/dn8n2-YYYYMMDD-HHmm/database.sqlite
🔁 Khôi phục dữ liệu từ một bản backup cụ thể
🧾 Ví dụ: Có các bản backup tìm được
sudo find / -type f -name "database.sqlite" 2>/dev/null
Kết quả:
/opt/n8n-backup/dn8n2-20250729-0805/database.sqlite
...
✅ Giả sử container dn8n2 đang dùng volume tại:
/opt/dn8n2-data/database.sqlite
🛠 Các bước khôi phục:
1. Stop container:
docker stop dn8n2
2. Ghi đè dữ liệu:
cp /opt/n8n-backup/dn8n2-20250729-0805/database.sqlite /opt/dn8n2-data/database.sqlite
👉 An toàn hơn: Backup trước khi ghi đè:
cp /opt/dn8n2-data/database.sqlite /opt/dn8n2-data/database.sqlite.bak-$(date +%Y%m%d-%H%M)
3. Phân quyền lại:
chown -R 1000:1000 /opt/dn8n2-data/database.sqlite
4. Start lại container:
docker start dn8n2
5. Kiểm tra log container:
docker logs -f dn8n2
🧠 Gợi ý thêm
- Đặt tên bản backup theo chuẩn
dn8n2-YYYYMMDD-HHmmđể dễ quản lý. - Tự động hóa bằng script hoặc cronjob.
- Giữ lại ít nhất 3-5 bản backup gần nhất.
