# Chuyển từ DirectAdmin sang VPS mới mà không mất website, email

> Hướng dẫn chuyển từ DirectAdmin sang VPS mới: tạo bản backup, những gì mang theo được, nhập bằng panel hoặc thủ công, đổi DNS và kiểm tra để không mất email.

Source: https://zopanel.net/vi/blog/migrate-directadmin-to-vps  
Updated: 2026-10-21

## Ý chính

- Bản backup tài khoản DirectAdmin chứa website, database, hộp thư, chuyển tiếp và cron.
- Hạ TTL DNS xuống khoảng 300 giây từ một ngày trước khi đổi để chuyển trong vài phút.
- Server cũ nên giữ chạy ít nhất vài ngày sau khi đổi DNS để nhận nốt email và truy cập trễ.
- ZoPanel nhập trực tiếp bản backup DirectAdmin, từng tài khoản hoặc cả server qua SSH.

Để chuyển từ DirectAdmin sang VPS mới, bạn tạo bản backup đầy đủ cho từng user trên server cũ (file `user.RESELLER.USER.tar.gz` hoặc `.tar.zst`), nhập nó vào server mới bằng panel có trình nhập DirectAdmin hoặc tự khôi phục file, database và email bằng tay, kiểm tra kỹ, rồi mới đổi DNS. Server cũ giữ nguyên trong suốt quá trình, nên nếu có gì sai, bạn chỉ cần không đổi DNS.

Bài viết này dành cho người đang chạy DirectAdmin và muốn chuyển sang VPS khác, có thể vì giá license, vì đổi nhà cung cấp, hay vì muốn panel khác. Chúng tôi đi qua: chuẩn bị, những gì mang theo được và không, cách chuyển bằng ZoPanel, cách chuyển thủ công, và danh sách kiểm tra sau khi đổi DNS.

## Vì sao nhiều người chuyển khỏi DirectAdmin?

DirectAdmin vẫn là một panel ổn định và phổ biến. Lý do chuyển thường không phải vì nó tệ, mà vì một trong các điểm sau:

- **License tính theo số tài khoản.** Tại thời điểm viết (tháng 10/2026), [trang giá của DirectAdmin](https://www.directadmin.com/pricing.php) liệt kê gói Personal PLUS 5 USD/tháng cho 2 tài khoản, Lite 15 USD/tháng cho 10 tài khoản và Standard 29 USD/tháng không giới hạn tài khoản. Giá có thể thay đổi, hãy kiểm tra trang chính thức.
- **Đổi nhà cung cấp VPS** hoặc nâng cấp lên server mạnh hơn.
- **Muốn tính năng khác**: cách ly tài khoản có sẵn, Docker, staging WordPress, giao diện tiếng Việt.

Dù lý do là gì, quy trình chuyển đều giống nhau. Nếu bạn chỉ chuyển sang một server DirectAdmin khác, công cụ backup/restore của chính DirectAdmin là con đường ngắn nhất. Phần còn lại của bài dành cho việc chuyển sang môi trường khác.

## Cần chuẩn bị gì trước khi chuyển từ DirectAdmin?

### 1. Kiểm kê server cũ

Ghi lại cho từng tài khoản:

- danh sách tên miền, subdomain và domain pointer;
- phiên bản PHP mỗi website đang dùng;
- database (MySQL/MariaDB) và ứng dụng dùng chúng;
- hộp thư, chuyển tiếp, trả lời tự động;
- cron job;
- tên miền nào dùng DNS của server cũ, tên miền nào dùng DNS bên ngoài (Cloudflare, nhà đăng ký);
- website nào phụ thuộc `.htaccess` (WordPress, Laravel, ứng dụng PHP cũ).

### 2. Hạ TTL DNS từ một ngày trước

Đổi TTL của bản ghi A, AAAA và MX xuống khoảng 300 giây **ít nhất một ngày** trước khi chuyển. Khi TTL cũ (thường 3600 hoặc 14400 giây) hết hạn, lúc bạn đổi IP thật sự chỉ mất vài phút để lan truyền.

### 3. Chuẩn bị server mới

VPS mới cần đủ dung lượng đĩa cho dữ liệu cộng thêm chỗ trống cho bản backup trong lúc nhập. Nếu bạn chuyển email, cần đặt reverse DNS (PTR) cho IP mới ở nhà cung cấp VPS và cấu hình SPF, DKIM cho server mới.

## Bản backup DirectAdmin chứa những gì?

Bản backup user của DirectAdmin là một file nén chứa file website, dump database, cấu hình tên miền, hộp thư và các thiết lập email, cron. Có hai cách tạo:

- **Quản trị viên hoặc đại lý:** **Admin/Reseller Backup/Transfer → Create Backup**, chọn user và tích tất cả mục.
- **Chính user:** **Create/Restore Backups → Create Backup**.

File có dạng `user.RESELLER.USER.tar.gz` hoặc `user.RESELLER.USER.tar.zst`. Với Admin Backup cho nhiều user, các file thường nằm trong `/home/admin/admin_backups`. Tải file về bằng SFTP, hoặc để server mới tải trực tiếp qua đường dẫn.

## Cách chuyển từ DirectAdmin bằng ZoPanel

ZoPanel đọc trực tiếp bản backup DirectAdmin và tạo lại tài khoản trên server mới. Bản backup được coi là dữ liệu không tin cậy: nó được đọc bằng chương trình riêng, không bao giờ giải nén bằng root, đường dẫn bị giới hạn trong tài khoản và dung lượng có giới hạn.

### Những gì được mang sang

| Hạng mục | Mang sang | Ghi chú |
| --- | --- | --- |
| Tài khoản và mật khẩu panel | Có | Mật khẩu cũ dùng tiếp được cho panel và SFTP nếu định dạng hash kiểm tra được; nếu không, log nhắc đặt mật khẩu mới. |
| Website (chính, subdomain, tên miền phụ) | Có | Domain pointer không được tạo thành website; log liệt kê để bạn tạo chuyển hướng hoặc alias. |
| File website | Có | Liên kết trỏ ra ngoài tài khoản không được sao chép. |
| Database MySQL/MariaDB và user | Có | Giữ mật khẩu nếu hash dùng được (`mysql_native_password`); nếu không, mật khẩu mới được ghi vào file cấu hình ứng dụng. |
| Hộp thư và thư | Có | Giữ mật khẩu và quota; thư dạng Maildir. |
| Chuyển tiếp, trả lời tự động | Có | Trả lời tự động thành quy tắc hộp thư. |
| Cron | Có | Tối đa 100 cron. |
| Phiên bản PHP | Không | Dùng PHP mặc định của server; đổi lại trong tab **PHP & cấu hình**. |
| Zone DNS, tài khoản FTP, chứng chỉ SSL | Không | SSL miễn phí được cấp lại khi DNS trỏ về server mới. |

Bảng trên lấy từ [tài liệu chuyển dữ liệu](/vi/docs/migration). Mọi thứ không chuyển được đều được ghi chú trong log, kèm lý do.

### Chuyển từng tài khoản

1. Mở **Chuyển đến** trong menu quản trị.
2. **Tải lên bản backup** (tối đa 50 GB) hoặc **Tải từ URL** công khai.
3. Xem kết quả phân tích: website, database, hộp thư, chuyển tiếp, cron. Mục **Cần xử lý trước khi nhập** liệt kê xung đột như tên đăng nhập hay tên miền đã tồn tại. Bạn có thể đổi **Tên đăng nhập tại đây**, chọn **Gói**, xem mật khẩu nào được giữ.
4. Bấm **Bắt đầu nhập** và theo dõi log.

Nếu server mới chưa cài mail server, hộp thư được nhập sau khi bạn cài; bản đã chuyển đổi được giữ lại tới lúc đó.

### Chuyển cả server một lần

Với **Chuyển đến → Chuyển cả server**, bạn nhập địa chỉ server DirectAdmin cũ và mật khẩu SSH root hoặc private key (chỉ dùng cho lần chuyển này, không lưu). ZoPanel nhận ra DirectAdmin, liệt kê mọi tài khoản kèm tên miền chính và gói, tự chạy tác vụ backup của DirectAdmin trên server cũ, rồi tải về và nhập lần lượt. Bạn cũng có thể trỏ tới một thư mục backup có sẵn như `/home/admin/admin_backups`.

Việc chuyển chạy nền, có thể đóng trình duyệt. File tạm được xoá ở cả hai server sau mỗi tài khoản, nên đĩa chỉ cần đủ chỗ cho một tài khoản mỗi lần. Tài khoản lỗi được báo riêng, các tài khoản sau vẫn tiếp tục.

### Website dùng .htaccess

DirectAdmin thường chạy Apache, nên nhiều website dựa vào `.htaccess`. ZoPanel phục vụ bằng nginx, bỏ qua `.htaccess`. Với website cần nó, bật **Hỗ trợ .htaccess (chế độ Apache)** trong tab **Công cụ**: nginx vẫn lo SSL, tường lửa và file tĩnh, còn Apache áp dụng `.htaccess`. Với WordPress, chọn quy tắc rewrite **WordPress** trong tab **PHP & cấu hình** là đủ, không cần Apache. Xem [tài liệu website và PHP](/vi/docs/hosting).

## Chuyển từ DirectAdmin thủ công sang VPS

Nếu server mới không có panel hoặc panel không có trình nhập, bạn làm từng phần. Quy trình này tốn công hơn nhiều, nhưng giúp hiểu rõ dữ liệu của mình.

### File website

Trên DirectAdmin, file của mỗi tên miền thường nằm trong `/home/USER/domains/TÊN-MIỀN/public_html`. Từ server mới, kéo về bằng rsync qua SSH:

```bash
rsync -avz --progress root@IP-CŨ:/home/USER/domains/example.com/public_html/ \
  /var/www/example.com/public/
```

Chạy lần đầu trước khi đổi DNS, rồi chạy lại ngay trước khi đổi để lấy nốt file mới (rsync chỉ chép phần thay đổi).

### Database

Trên server cũ:

```bash
mysqldump --single-transaction --routines --triggers USER_dbname > USER_dbname.sql
```

Chép sang server mới, tạo database và user, rồi `mariadb USER_dbname < USER_dbname.sql`. Nếu đổi tên database hay user, sửa file cấu hình ứng dụng (`wp-config.php`, `.env`). Với site có dữ liệu thay đổi liên tục như cửa hàng, hãy dump lần cuối trong thời gian bảo trì để không mất đơn hàng.

### Email

Email là phần khó nhất khi làm tay. Cách an toàn là tạo hộp thư cùng tên trên server mới rồi đồng bộ qua IMAP bằng công cụ như [imapsync](https://imapsync.lamiral.info/), chạy một lần trước khi đổi MX và một lần sau khi đổi để lấy thư đến muộn. Bạn cần mật khẩu của từng hộp thư ở cả hai đầu.

### Cron, SSL và DNS

Chép lại cron job, cấp SSL mới bằng Certbot sau khi DNS trỏ về, và tạo lại các bản ghi DNS (A, MX, TXT cho SPF, DKIM, DMARC) ở nơi quản lý DNS.

## Kiểm tra trước và sau khi đổi DNS

**Trước khi đổi**, kiểm tra website trên server mới mà không ảnh hưởng khách: thêm dòng `IP-MỚI example.com www.example.com` vào file `hosts` trên máy bạn. Trình duyệt sẽ cảnh báo chứng chỉ vì SSL chưa được cấp; điều này bình thường. Kiểm tra trang chủ, đăng nhập quản trị, form liên hệ, giỏ hàng, upload file.

**Khi đổi**, trỏ bản ghi A/AAAA (và MX nếu server mới nhận mail) về IP mới. Với TTL 300 giây, phần lớn khách thấy server mới sau vài phút. Chi tiết về chiến lược đổi DNS không gián đoạn có trong bài [chuyển hosting không gián đoạn](/vi/blog/migrate-website-without-downtime).

**Sau khi đổi:**

1. Xoá dòng trong file `hosts`, kiểm tra lại bằng DNS thật.
2. Xác nhận SSL đã được cấp cho mọi tên miền.
3. Gửi thử email vào và ra; kiểm tra SPF, DKIM, DMARC và reverse DNS.
4. Đổi phiên bản PHP cho website cần bản khác mặc định.
5. Kiểm tra cron chạy đúng giờ.
6. Tạo bản sao lưu đầu tiên trên server mới.
7. **Giữ server DirectAdmin chạy thêm vài ngày**, để nhận thư từ máy chủ gửi còn nhớ IP cũ và để còn đường lùi. Chỉ huỷ license và VPS cũ khi chắc chắn mọi thứ ổn.

## Những lỗi thường gặp khi chuyển từ DirectAdmin

- **Quên hạ TTL**: đổi DNS xong phải chờ hàng giờ, trong lúc đó một phần khách vào server cũ, một phần vào server mới, đơn hàng bị chia đôi.
- **Đổi MX khi chưa có hộp thư trên server mới**: thư bị trả lại cho người gửi.
- **Huỷ server cũ quá sớm**: mất đường lùi và mất thư đến muộn.
- **Không kiểm tra domain pointer**: tên miền phụ trỏ về site chính ngừng hoạt động sau khi chuyển.
- **Bỏ qua `.htaccess`**: website PHP cũ trả 404 hoặc lộ thư mục cần bảo vệ trên nginx.
- **Không có reverse DNS cho IP mới**: email gửi đi vào thư rác hoặc bị từ chối.

## Kết luận

Chuyển từ DirectAdmin không đáng sợ nếu bạn làm đúng thứ tự: kiểm kê, hạ TTL, backup, nhập, kiểm tra bằng file `hosts`, rồi mới đổi DNS và giữ server cũ thêm vài ngày. Phần tốn công nhất khi làm tay là database và email; một trình nhập đọc thẳng bản backup DirectAdmin giúp tiết kiệm phần lớn thời gian đó.

Bạn có thể thử ZoPanel với gói Free (3 tài khoản hosting, 10 website, 10 database, không giới hạn thời gian), kể cả trình nhập DirectAdmin và chuyển cả server, đủ để thử chuyển vài tài khoản. Tài khoản đại lý (reseller) và sao lưu từ xa lên S3 cần gói Pro. Khi chuyển cả một server nhiều tài khoản hoặc cần không giới hạn website, gói Pro là 49 USD/năm cho một server; xem [bảng giá](/vi/pricing) để có giá mới nhất.

## Câu hỏi thường gặp

### Chuyển từ DirectAdmin có làm website ngừng hoạt động không?

Không, nếu làm đúng. Server cũ vẫn chạy trong suốt quá trình, bạn chỉ đổi DNS khi server mới đã sẵn sàng. Với TTL đã hạ xuống 300 giây, thời gian chuyển giao chỉ vài phút và cả hai server đều phục vụ được khách trong lúc đó.

### Mật khẩu email có phải đặt lại sau khi chuyển không?

Với ZoPanel, mật khẩu và quota hộp thư được giữ nguyên khi nhập từ bản backup DirectAdmin, nên người dùng không phải đổi cấu hình trên điện thoại hay Outlook. Nếu chuyển thủ công, bạn cần tạo lại hộp thư và đặt mật khẩu cho từng hộp.

### Bản backup DirectAdmin định dạng .tar.zst có dùng được không?

Có. ZoPanel nhận cả `user.RESELLER.USER.tar.gz` và `.tar.zst`. Nếu chuyển thủ công, giải nén file `.tar.zst` bằng `tar --zstd -xf` (cần gói `zstd`).

### Có chuyển được cả server DirectAdmin nhiều tài khoản cùng lúc không?

Có. Tính năng **Chuyển cả server** của ZoPanel kết nối SSH tới server DirectAdmin, liệt kê mọi tài khoản, tự tạo backup và nhập lần lượt từng tài khoản. Các tài khoản trùng tên với tài khoản đã có trên server mới được đánh dấu và bỏ qua.

### Phiên bản PHP có được giữ khi chuyển từ DirectAdmin không?

Không tự động. Website được nhập với phiên bản PHP mặc định của server mới. Hãy ghi lại phiên bản PHP của từng website trước khi chuyển và chọn lại trong tab **PHP & cấu hình** sau khi nhập.
