Backup & Restore
Triết lý của module backup: backup phải khôi phục được. Mỗi bản đều được kiểm tra toàn vẹn ngay khi đóng gói, và mọi thao tác ghi đè đều có lưới an toàn.
Backup gồm những gì
Chạy Backup → Chạy ngay (hoặc vpsmmo --run backup-run), panel tự phát hiện và đóng gói:
- Toàn bộ website — kể cả site của aaPanel, CyberPanel, 1Panel hay webroot thường nếu máy có.
- Toàn bộ database — dump từng DB kèm file phân quyền user (restore sang VPS khác vẫn chạy).
- Cấu hình panel và hệ thống — vhost, chứng chỉ SSL, cấu hình systemd.
- Docker volume của các app 1-click (n8n, Uptime Kuma, Gotify, Flowise).
Tất cả nén thành một file bk_*.tar.gz kèm checksum SHA-256. Trước khi chạy, panel ước tính dung lượng và từ chối nếu ổ đĩa không đủ chỗ — tránh backup làm đầy ổ.
Mã hóa AES-256 (tùy chọn)
Menu Backup → Bật mã hóa
# Panel sinh passphrase ngẫu nhiên, lưu tại /etc/vpsmmo-panel/backup.pass (chmod 600)
Mất passphrase = không giải mã được backup. Hãy lưu file passphrase ra nơi an toàn ngoài VPS ngay sau khi bật mã hóa.
Đích lưu trữ
| Đích | Cách hoạt động | Xác minh |
|---|---|---|
| Local | Lưu tại /var/backups/vpsmmo (đổi được đường dẫn) | SHA-256 tại chỗ |
| Google Drive | Qua rclone, xác thực OAuth trên máy cá nhân rồi dán token | Kiểm tra file tồn tại sau upload |
| SSH | rsync qua SSH key (panel tự tạo key, không lưu mật khẩu) | Checksum xác minh tại đầu nhận |
| FTP | Upload qua curl | So sánh kích thước file |
Lịch tự động và xoay vòng
$ vpsmmo --run backup-schedule daily # chạy 02:00 mỗi đêm
$ vpsmmo --run backup-schedule weekly # 02:00 Chủ nhật
$ vpsmmo --run backup-keep 10 # giữ 10 bản mới nhất (1..500)
- Lịch chạy bằng systemd timer có
Persistent=true— máy tắt qua giờ chạy, bật lại sẽ chạy bù. - Xoay vòng theo số bản (mới từ v2.2.0): luôn giữ đủ N bản mới nhất rồi mới xóa bản cũ. Backup thất bại thì không xóa gì cả — bản cũ an toàn tuyệt đối.
- Bản offsite (Google Drive/SSH) giữ 30 ngày.
- Kết quả mỗi lần chạy báo về Telegram nếu đã cấu hình (xem Giám sát).

Restore
$ vpsmmo --run backup-restore bk_20260612_020000.tar.gz
Trình tự restore — mỗi bước đều hỏi xác nhận riêng:
- Xác minh checksum SHA-256; không khớp là dừng ngay.
- Giải mã (nếu bản mã hóa) và giải nén vào thư mục tạm.
- Restore database — tạo DB nếu chưa có, tùy chọn restore cả phân quyền user.
- Restore Docker volume — dừng container, thay dữ liệu, chạy lại.
- Restore website: trước khi ghi đè, panel tự backup trạng thái hiện tại thành bản
prerestore_*— restore lỗi vẫn quay lại được trạng thái cũ.
Không muốn restore đè toàn bộ? Bỏ qua bước cuối — file của từng site đã nằm sẵn trong thư mục tạm để copy tay phần cần thiết.