Tài liệuCứu hộ thảm họa

Cứu hộ thảm họa

Dựng lại server bị mất hoặc cài lại bằng bản sao lưu cấu hình, khoá khôi phục, bản sao lưu tài khoản trên S3 và lệnh zopanel ctl dr-restore.

Sao lưu tài khoản mang lại website, database và mail. Muốn dựng lại cả server, bạn còn cần những thứ sao lưu tài khoản không có: cài đặt của panel, gói hosting, tài khoản quản trị và đại lý, cùng các khoá. ZoPanel giữ chúng trong một bản sao lưu cấu hình (.zpb) đã mã hoá. Trang này giải thích thứ gì được giữ ở đâu, và các bước xử lý cho từng loại sự cố.

Hãy diễn tập quy trình "mất server" trên một VPS dự phòng ít nhất mỗi quý một lần.

Những gì được lưu và lưu ở đâu

Nội dung Vị trí Thời gian giữ
Database panel (tài khoản, website, DNS, mail, cài đặt) /var/lib/zopanel/db-backups/zopanel-YYYYMMDD.db 7 ngày
Database panel trước mỗi lần cập nhật /var/lib/zopanel/pre-update/ 3 lần cập nhật gần nhất
Sao lưu cấu hình (.zpb) S3, trong <prefix>/<hostname>/_panel/ (hằng ngày, khi bật sao lưu từ xa), hoặc tải về thủ công Bằng số bản của sao lưu tài khoản
Sao lưu tài khoản (file, database, hộp thư) ~/backups trên server, và S3 khi bật sao lưu từ xa Cài đặt → Chung và Cài đặt → Sao lưu từ xa
Sao lưu tăng dần (restic) Kho trên server hoặc S3 Theo thiết lập của sao lưu tăng dần
Tài khoản đã xoá /home/.zp-terminated/<user>-<time>/ và /var/vmail/.zp-terminated/<user>-<time>/ Giữ dữ liệu tài khoản đã xoá (ngày), mặc định 7

Bản sao lưu cấu hình

Bản sao lưu cấu hình gồm:

  • các cài đặt: S3, SMTP relay, cảnh báo, v.v.,
  • gói hosting, tài khoản quản trị và đại lý, database server ngoài,
  • bản sao đầy đủ của database panel,
  • toàn bộ /etc/zopanel, trong đó có mật khẩu kho restic, khoá DKIM và DNS, tài khoản ACME và biến môi trường của ứng dụng.

Các cài đặt gắn với từng máy, như tên miền panel và fleet token, không được mang theo.

File được mã hoá bằng XChaCha20-Poly1305 với khoá khôi phục. Khi bật sao lưu từ xa, mỗi ngày một bản mới được tải lên S3. Bạn cũng có thể tải một bản bất cứ lúc nào trong Sao lưu → Cứu hộ thảm họa → Tải cấu hình (.zpb).

Khoá khôi phục

Khoá khôi phục mở được bản sao lưu cấu hình và mọi bản sao mã hoá trên S3. Để xem, bấm Sao lưu → Cứu hộ thảm họa → Xem khóa. Cùng thẻ đó cho biết lần gần nhất cấu hình được đẩy lên S3.

Hãy cất khoá ở ngoài server, trong trình quản lý mật khẩu hoặc ghi giấy cất két. Nếu mất server mà không có khoá, các bản sao lưu trên S3 không giải mã được, và không ai khôi phục giúp bạn được.

Kiểm tra trước: panel không khởi động

Trước khi dựng lại, hãy xem server còn sửa được không:

zopanel ctl doctor                        # dịch vụ, agent, database, ổ đĩa, RAM, chứng chỉ, đồng hồ
journalctl -u zopanel -u zopanel-agent -n 200
zopanel ctl support-bundle                # log và cấu hình gửi hỗ trợ, không chứa mật khẩu hay khoá

Cập nhật lỗi

Bản cập nhật tự rollback cả binary lẫn database nếu phiên bản mới không chạy ổn định trong vòng 3 phút. Muốn rollback thủ công về sau:

zopanel rollback          # phiên bản trước, giữ database hiện tại
zopanel rollback --db     # phiên bản trước và database lưu trước lần cập nhật

Database panel bị hỏng

Khôi phục một trong các bản sao hằng ngày:

systemctl stop zopanel
cp /var/lib/zopanel/db-backups/zopanel-<day>.db /var/lib/zopanel/zopanel.db
rm -f /var/lib/zopanel/zopanel.db-wal /var/lib/zopanel/zopanel.db-shm
chown zopanel:zopanel /var/lib/zopanel/zopanel.db
systemctl start zopanel

Những thay đổi từ ngày đó tới nay, như tài khoản hay cài đặt mới, phải làm lại.

Mất server: khôi phục lên server mới

Bạn cần thông tin S3, khoá khôi phục và một server mới cùng họ hệ điều hành.

  1. Cài ZoPanel lên server mới bằng install.sh. Nếu được, hãy dùng cùng hostname.
  2. Kết nối cùng kho lưu trữ. Trong Cài đặt → Sao lưu từ xa, nhập đúng endpoint, bucket, thư mục gốc và key như server cũ, rồi Lưu.
  3. Khôi phục cấu hình. Mở Sao lưu → Cứu hộ thảm họa → Duyệt S3, mở thư mục của server cũ (theo hostname), rồi _panel, và bấm Khôi phục cấu hình trên file .zpb mới nhất. Nhập khoá khôi phục. Bạn cũng có thể tải lên file .zpb đã tải về bằng nút Khôi phục cấu hình.
    • Cài đặt bị ghi đè. Gói, tài khoản admin/đại lý và DB server chỉ được thêm khi chưa có cái trùng tên.
    • Khoá khôi phục và mật khẩu sao lưu tăng dần của server cũ được mang về, nên server này đọc được các bản sao lưu cũ.
  4. Khôi phục tài khoản. Trong Duyệt S3, mở thư mục của server cũ, rồi từng tài khoản, và bấm Khôi phục trên bản mới nhất. Tài khoản chưa có được tạo lại như cũ, kèm website, database, hộp thư và DNS.
  5. Cấp lại chứng chỉ cho panel. Đặt tên miền panel trong Cài đặt → Chung → Tên miền & SSL cho panel.
  6. Chuyển DNS. Trỏ các tên miền, hoặc IP cũ, về server mới. Chứng chỉ của website được cấp lại tự động khi tên miền đã trỏ về đây.

Cùng server được cài lại (cài lại hệ điều hành, còn giữ /home)

Khi hệ điều hành được cài lại nhưng ổ chứa /home còn nguyên, hãy khôi phục toàn bộ trạng thái panel bằng dòng lệnh:

# sau khi cài lại ZoPanel
zopanel ctl dr-restore zopanel-config-<date>.zpb --key <RECOVERY-KEY> --dry-run   # kiểm tra file
zopanel ctl dr-restore zopanel-config-<date>.zpb --key <RECOVERY-KEY>
zopanel ctl rebuild
  • --dry-run chỉ giải mã và kiểm tra file, cho biết file đến từ server nào, phiên bản ZoPanel và ngày tạo.
  • Có thể truyền khoá qua biến môi trường ZOPANEL_RECOVERY_KEY để khoá không nằm trong lịch sử shell.
  • dr-restore dừng ZoPanel, thay toàn bộ database panel và /etc/zopanel, rồi khởi động lại ZoPanel. Bản cũ được giữ lại với tên *.before-restore-<time>.
  • zopanel ctl rebuild để panel áp dụng lại mọi tài khoản và website (nginx, PHP, giới hạn) từ database vừa khôi phục.

Nếu dữ liệu của một số tài khoản không nằm trên ổ còn sót lại, hãy khôi phục chúng từ S3 như bước 4 ở trên.

Lỡ xoá một tài khoản

Tài khoản đã xoá được giữ lại theo số ngày trong Cài đặt → Chung → Giữ dữ liệu tài khoản đã xoá (ngày): mặc định 7, tối đa 90, và 0 là xoá ngay. Trong thời gian này dữ liệu vẫn còn trên server:

ls /home/.zp-terminated/        # <user>-<time>/home, databases/*.sql.gz, info.json
ls /var/vmail/.zp-terminated/   # hộp thư

Cách lấy lại:

  1. Tạo lại tài khoản với đúng username và gói hosting.
  2. Chép lại file website, thao tác bằng quyền của tài khoản.
  3. Nhập các file dump database trong Cơ sở dữ liệu → Import / khôi phục.
  4. Tạo lại các hộp thư, chép lại thư mục Maildir rồi chạy chown -R vmail:vmail cho chúng.

Sau sự cố bảo mật

  • Kiểm tra Trung tâm bảo mật: nhật ký hoạt động toàn vẹn, mã độc và 2FA.
  • Gửi nhật ký hoạt động sang máy chủ syslog bên ngoài (Cài đặt → Chung → Gửi nhật ký hoạt động tới) để kẻ xâm nhập không xoá được dấu vết.

← Sao lưu Đại lý →