I. Giới thiệu #
Việc đảm bảo an toàn cho dữ liệu, đặc biệt là dữ liệu trên các máy chủ web, là vô cùng quan trọng. DirectAdmin, một trong những control panel quản lý hosting phổ biến, cần được bảo vệ dữ liệu một cách tối ưu. Trong bài viết này, chúng tôi sẽ giới thiệu giải pháp sao lưu DirectAdmin lên S3, một dịch vụ lưu trữ đám mây hàng đầu, giúp bạn an tâm về dữ liệu của mình.

DirectAdmin là một control panel quản lý hosting mạnh mẽ, được sử dụng rộng rãi để quản lý các máy chủ web. Nó cung cấp giao diện trực quan và nhiều tính năng giúp người dùng dễ dàng quản lý website, email, cơ sở dữ liệu và nhiều khía cạnh khác của máy chủ. Tuy nhiên, việc sao lưu dữ liệu DirectAdmin là vô cùng quan trọng để phòng tránh những rủi ro tiềm ẩn như mất dữ liệu do sự cố phần cứng, tấn công mạng hay lỗi hệ thống.
II. Các bước cấu hình sao lưu DirectAdmin lên S3 #
1. Cài đặt Rclone #
# Cài đặt Rclone
yum install rclone -y
# Cấu hình kết nối Rclone với S3
rclone config
No remotes found – make a new one
n) New remote
s) Set configuration password
q) Quit config
Nhập n để thiết lập remote.
Sẽ tới bước nhập name bạn cần nhập “s3-backup” ( phần đặt tên này khá quan trọng vì nó liên quan tới Hook Script chúng ta sẽ thiết lập bên dưới vì vậy bạn cần đặt là s3-backup, nếu muốn thay đổi thì cần điều chỉnh ở nội dung Hook Script cho đúng với name bạn vừa đặt.
Cấu hình Storage chọn số 4
4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, and Tencent COS
\ “s3”
Cấu hình Provider chọn số 13
13 / Any other S3 compatible provider
\ “Other”
Cấu hình env_auth chọn số 1
1 / Enter AWS credentials in the next step
\ “false”
Khai báo ACCESS_KEY và SECRET_KEY bạn làm theo hướng dẫn ở bài viết Hướng dẫn tạo thông tin ACCESS_KEY SECRET_KEY S3 Minio InterData
Cấu hình region chọn số 1
1 / Use this if unsure. Will use v4 signatures and an empty region.
\ “”
Cấu hình endpoint nhập URL trong file json mà bạn đã nhận được khi tạo ACCESS_KEY và SECRET_KEY ở bước trước đó.
Cấu hình location_constraint chỉ cần nhấn phím Enter.
Cấu hình acl chọn số 1
1 / Owner gets FULL_CONTROL. No one else has access rights (default).
\ “private”
Bước tiếp theo là cấu hình nâng cao bạn nhập n và nhấn Enter
Bước cuối xác nhận lại cấu hình Remote config bạn nhập y
Nhập q và nhấn Enter để thoát Rclone
2. Tạo Hook Script Directadmin trên qua SSH #
Sau khi kết nối SSH bằng user root thành công các bạn chạy lệnh bên dưới để tạo file script.
vi /usr/local/directadmin/scripts/custom/user_backup_post.sh
Nội dung file user_backup_post.sh như sau:
#!/bin/bash
today=$(date +"%Y-%m-%d")
LOG_FILE="/var/log/rclone.log"
IP=$(hostname -I | cut -d ' ' -f 1)
BUCKET=$(rclone lsd s3-backup: | awk '{print $NF}')
# Thông tin SMTP
SMTP_SERVER="smtp.gmail.com"
SMTP_PORT=587
SMTP_USER="demo@gmail.com"
SMTP_PASS="PASSWORD"
EMAIL_TO="mailto@gmail.com"
EMAIL_FROM="demo@gmail.com"
# --delete-after: Chỉ xóa file nguồn sau khi chắc chắn rằng file đã được upload thành công.
# --retries 5: Số lần thử lại nếu lỗi khi thực thi.
# --low-level-retries 15: Số lần thử lại các lỗi cấp thấp (mặc định là 10).
# --log-file=/var/log/rclone.log: Khai báo path log rclone.
# --create-empty-src-dirs: Tạo các thư mục trống trên S3 nếu có.
rclone -v \
--s3-no-check-bucket \
move $file s3-backup:$BUCKET/admin_backups/$today/ \
--delete-after \
--retries 5 \
--low-level-retries 15 \
--log-file=/var/log/rclone.log \
--create-empty-src-dirs
if [ $? -eq 0 ]; then
SUBJECT="Backup thành công user $username từ VPS IP $IP tới S3"
MESSAGE="🎉 Backup user $username từ VPS IP $IP đến S3 đã hoàn tất thành công."
else
SUBJECT="Backup thất bại user $username từ VPS IP $IP tới S3"
MESSAGE="❌ Backup user $username từ VPS IP $IP đến S3 đã thất bại.\nVui lòng kiểm tra log tại $LOG_FILE."
fi
# Gửi email qua SMTP
curl -s --url "smtp://$SMTP_SERVER:$SMTP_PORT" --ssl-reqd \
--mail-from "$EMAIL_FROM" \
--mail-rcpt "$EMAIL_TO" \
--upload-file <(echo -e "From: $EMAIL_FROM\nTo: $EMAIL_TO\nSubject: $SUBJECT\n\n$MESSAGE") \
--user "$SMTP_USER:$SMTP_PASS"
Như các bước ở trên mình đã đề cập tới s3-backup thì đặt ở mục name khi khai báo cấu hình của Rclone để script hoạt động bình thường, bạn cũng có thể đặt name khác nhưng phải thay đổi trong script đúng với name bạn đã khai báo khi cấu hình Rclone.
Ví du: name bạn đặt là s3vps thì trong script ở trên bạn cần đổi s3-backup thành s3vps chỉ đơn giản vậy thôi.
Script cũng tích hợp gửi mail tới mail của bạn để nhận thông báo khi một user backup hoàn tất và upload qua S3.
SMTP_SERVER: Địa chỉ của server mail của bạn.
SMTP_PORT: Các cổng của SMTP ( 25, 456, 587 ) các bạn có thể khai báo sử dụng, đối với VPS Directadmin nên khai báo 587.
SMTP_USER và EMAIL_FROM: Khai báo mail của bạn dùng để gửi mail thông báo.
SMTP_PASS: Mật khẩu user mail của bạn sử dụng để gửi mail.
EMAIL_TO: Địa chỉ mail nhận thông báo.
Lưu ý tên file scirpt phải đặt đúng user_backup_post.sh để Directadmin hiểu và chạy đúng.
Phân quyền file user_backup_post.sh
# Phân quyền file script user_backup_post.sh
chown diradmin:cgred /usr/local/directadmin/scripts/custom/user_backup_post.sh
chmod 700 /usr/local/directadmin/scripts/custom/user_backup_post.sh
# Cấu hình mở port CSF Firewall
sed -i -e ‘s/TCP_IN = “\(.*\)”/TCP_IN = “\1,9000″/’ -e ‘s/TCP_OUT = “\(.*\)”/TCP_OUT = “\1,9000″/’ /etc/csf/csf.conf
# Khởi động lại CSF Firewall
csf -r
Vậy là chúng ta đã cấu hình hoàn tất các bước qua SSH. Tiếp theo thiết lập lịch chạy backup trên Directadmin.
3. Thiết lập backup theo lịch trên Directadmin #
Chúng ta cần phải đăng nhập vào Directadmin bằng user admin và thao tác theo các bước sau:
Admin Backup/Transfer >> Schedule
Step 1: Who
Chọn All Users để backup toàn bộ user hosting, nếu bạn không muốn chọn tất cả có thể chọn hai lựa chọn còn lại là All Users Except Selected loại bỏ user hosting bạn chọn ra khỏi lịch backup và Selected Users để chọn theo user hosting bạn muốn backup.

Step 2: When
Chọn Cron Schedule để cấu hình backup theo lịch bạn cấu hình, trong ảnh bên dưới mình đang cấu hình chạy backup vào 3 giờ sáng hàng ngày, các bạn có thể tham khảo thêm về lập lịch qua website https://crontab.guru/

Step 3: Where
Chọn Local quá trình backup sẽ lưu các file backup vàoLocal path bạn khai báo, Append chọn Full Date nhằm thống nhất phân loại các bản backup lưu đúng vào thư mục ngày backup sau khi backup hoàn tất trên VPS và trên S3, giúp bạn dễ quản lý.

Step 4: What
Chọn All Data chắc hẳn backup dữ liệu thì các bạn muốn backup tất cả dữ liệu của user hosting đó.

Nhấp chọn Schedule để lưu cấu hình.
Để kiểm tra ngay lập tức sau khi cấu hình hoàn tất lịch backup bạn tích chọn vào lịch bạn vừa cấu hình chọn Run Now theo dõi Messages trên Directadmin để xem thông báo backup thành công hay lỗi, bạn cũng có thể kiểm tra tại Bucket thư mục admin_backups trên S3 hoặc email sẽ nhận được thông báo nếu bạn đã khai báo cấu hình mail ở script user_backup_post.sh bước trước đó.

Qua bài hướng dẫn này chắc các bạn đã nắm được các bước cấu hình backup Directadmin lên S3. Nếu bạn gặp khó khăn hay lỗi có thể gửi ticket để kỹ thuật InterData hỗ trợ kiểm tra và hỗ trợ cấu hình. Chúc các bạn cấu hình thành công.
