Chuyển hosting cPanel sang VPS: quy trình 6 bước không mất dữ liệu

Hướng dẫn chuyển hosting cPanel sang VPS từ A đến Z, gồm backup cpmove, chuyển website, database, email, kiểm tra trước khi đổi DNS và cách tránh gián đoạn.

Sơ đồ: chuyển tài khoản cPanel sang VPS

Ý chính

  • Quy trình gồm kiểm kê, hạ TTL, tạo full backup cPanel, khôi phục lên VPS, kiểm tra qua file hosts rồi mới đổi DNS.
  • Hạ TTL xuống khoảng 300 giây trước một ngày để việc đổi DNS chỉ mất vài phút.
  • Email là phần dễ mất dữ liệu nhất; giữ hosting cũ chạy thêm vài ngày sau khi đổi MX.
  • Một panel nhập được backup cPanel trực tiếp giúp giữ nguyên mật khẩu, database, hộp thư và DNS zone.

Để chuyển hosting cPanel sang VPS mà không mất dữ liệu, hãy làm theo thứ tự: kiểm kê những gì đang chạy, hạ TTL của DNS, tạo full backup trên cPanel (file cpmove-USER.tar.gz), khôi phục website, database và email lên VPS, kiểm tra bằng file hosts khi DNS vẫn trỏ về hosting cũ, rồi mới đổi DNS. Làm đúng thứ tự thì khách truy cập gần như không nhận ra có cuộc chuyển nhà.

Bài viết đi qua sáu bước đó, với hai cách khôi phục: nhập thẳng backup cPanel bằng control panel, hoặc làm thủ công từng phần. Cuối bài là danh sách lỗi hay gặp, đặc biệt với email, phần mà nhiều người chỉ phát hiện ra vấn đề sau khi đã huỷ hosting cũ.

Khi nào nên chuyển từ hosting cPanel sang VPS?

Những lý do phổ biến nhất:

  • Website chậm hoặc bị giới hạn tài nguyên (CPU, RAM, số tiến trình) trên shared hosting.
  • Bạn có nhiều website và tổng chi phí các gói hosting đã gần bằng một VPS.
  • Bạn cần chạy thứ mà shared hosting không cho: Node.js, Python, Docker, Redis, cron dày.
  • Bạn là agency hoặc nhà cung cấp hosting và muốn tự chủ chi phí license.

Đổi lại, VPS nghĩa là bạn chịu trách nhiệm về cập nhật, bảo mật và backup. Nếu chưa sẵn sàng cho điều đó, một control panel tốt sẽ gánh phần lớn công việc, nhưng không gánh thay bạn hoàn toàn.

Bước 1: Kiểm kê những gì đang chạy trên cPanel

Trước khi chạm vào bất cứ thứ gì, ghi lại:

Hạng mục Xem ở đâu trong cPanel Vì sao quan trọng
Tên miền chính, addon, subdomain, alias Domains Mỗi tên miền cần website và chứng chỉ trên VPS
Database và user MySQL Databases Tên database có thể đổi theo username mới
Hộp thư, chuyển tiếp, autoresponder Email Accounts, Forwarders Phần dễ quên nhất
Phiên bản PHP MultiPHP Manager Website cũ có thể hỏng trên PHP mới
Cron job Cron Jobs Tác vụ ngầm như gửi mail, đồng bộ
DNS đang do ai quản lý Zone Editor, và nameserver tại nhà đăng ký Quyết định bạn đổi bản ghi ở đâu
Quy tắc trong .htaccess File Manager Nginx không đọc .htaccess

Câu hỏi quan trọng nhất ở bước này: nameserver của tên miền đang trỏ về đâu? Nếu trỏ về nameserver của nhà cung cấp hosting cũ, khi huỷ hosting bạn mất luôn DNS. Hãy chuyển DNS sang nơi bạn kiểm soát (nhà đăng ký, Cloudflare, hoặc DNS server trên VPS) như một phần của kế hoạch.

Bước 2: Hạ TTL trước một ngày

TTL quyết định các resolver nhớ bản ghi DNS cũ bao lâu. Nếu TTL đang là 14400 giây (4 giờ), sau khi đổi IP sẽ có người còn vào server cũ trong nhiều giờ.

Khoảng 24 giờ trước ngày chuyển, sửa TTL của các bản ghi A, AAAA và MX xuống 300 giây. Khi đổi IP, phần lớn khách sẽ sang server mới trong vài phút. Sau khi chuyển xong và ổn định, nâng TTL trở lại.

Bước 3: Tạo full backup trên cPanel

Có ba cách, tuỳ quyền bạn có:

  • Bạn là chủ tài khoản (không có WHM): vào cPanel → Backup → Download a Full Account Backup, chọn lưu vào thư mục home, chờ email báo xong rồi tải file cpmove-USER.tar.gz (hoặc tên tương tự) về.
  • Bạn có WHM: dùng Backup Wizard hoặc Transfer Tool.
  • Bạn có root SSH: chạy script pkgacct theo tài liệu chính thức của cPanel:
/usr/local/cpanel/scripts/pkgacct USERNAME /home/backup

File backup chứa thư mục home (website, email dạng Maildir), dump của các database MySQL và cấu hình tài khoản. Lưu ý từ tài liệu cPanel: cấu hình xác thực hai lớp của tài khoản không nằm trong backup, nên bạn sẽ phải bật lại 2FA ở nơi mới.

Kiểm tra dung lượng: VPS cần đủ chỗ cho file backup và bản đã giải nén. Tính dư ít nhất gấp đôi kích thước file.

Bước 4: Khôi phục lên VPS

Cách A: Nhập backup cPanel bằng control panel

Cách ít rủi ro nhất là dùng panel đọc được thẳng file cpmove. Ví dụ với ZoPanel, sau khi cài lên VPS mới:

  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 nếu bạn đặt file tạm ở nơi có đường dẫn công khai.
  3. Xem lại kết quả phân tích: danh sách website, database, hộp thư, chuyển tiếp, cron. Mục Cần xử lý trước khi nhập báo xung đột (ví dụ tên đăng nhập đã tồn tại); bạn có thể đổi tên đăng nhập, chọn gói hosting, và xem mật khẩu database, hộp thư nào được giữ nguyên.
  4. Bấm Bắt đầu nhập và theo dõi log tác vụ.

Những gì được chuyển từ backup cPanel:

Hạng mục Ghi chú
Tài khoản và mật khẩu panel Mật khẩu cũ dùng tiếp cho panel và SFTP khi định dạng hash kiểm tra được
Website (chính, addon, subdomain, alias) và file Liên kết trỏ ra ngoài tài khoản không được sao chép
Phiên bản PHP Đọc từ thiết lập ea-php/alt-php; bản cũ (5.x) chuyển sang bản gần nhất đã cài
Database MySQL/MariaDB và user Mật khẩu giữ nguyên khi hash tương thích; 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ư, thư, quota, chuyển tiếp, autoresponder Thư dạng Maildir được nhập; hộp thư dạng mdbox thì không
Cron job Tối đa 100
DNS zone, tài khoản FTP Cần cài thành phần DNS server, FTP server
Chứng chỉ SSL Cài dưới dạng chứng chỉ tuỳ chỉnh

Database PostgreSQL không được nhập tự động; mọi mục không chuyển được đều được ghi trong log kèm lý do. Nếu bạn quản lý cả một server cPanel, Chuyển đến → Chuyển cả server kết nối SSH vào server cũ, tự tạo backup bằng pkgacct và chuyển lần lượt từng tài khoản. Chi tiết ở tài liệu Chuyển sang ZoPanel.

Cách B: Chuyển thủ công từng phần

Nếu bạn dựng VPS bằng stack tự cài (xem cài WordPress trên VPS), hãy chuyển từng phần:

Website. Giải nén backup trên VPS, hoặc kéo trực tiếp từ hosting cũ nếu có SSH:

rsync -avz -e ssh user@old-host:public_html/ /var/www/example.com/
sudo chown -R www-data:www-data /var/www/example.com

Database. Tạo database và user mới trên VPS (như bài cài WordPress), rồi nhập file .sql lấy từ backup hoặc từ phpMyAdmin:

sudo mariadb example_db < example_db.sql

Sau đó sửa thông tin kết nối trong wp-config.php, .env hoặc file cấu hình của ứng dụng cho khớp với tên database, user, mật khẩu mới.

.htaccess. Nếu VPS chạy Nginx, chuyển các quy tắc rewrite, chặn truy cập, chuyển hướng trong .htaccess sang cấu hình Nginx. Đây là nguyên nhân phổ biến nhất của lỗi 404 sau khi chuyển.

Email. Tạo lại từng hộp thư trên VPS, rồi đồng bộ thư bằng IMAP với công cụ như imapsync (cần mật khẩu cả hai bên). Nếu không muốn tự vận hành mail server, đây là lúc tốt để chuyển email sang dịch vụ mail chuyên dụng.

Cron và SSL. Tạo lại cron job theo danh sách ở bước 1. Chứng chỉ Let's Encrypt chỉ cấp được sau khi DNS trỏ về VPS (bước 6), trừ khi bạn dùng xác thực DNS.

Bước 5: Kiểm tra trước khi đổi DNS

Đây là bước nhiều người bỏ qua. Bạn có thể xem website trên VPS trong khi mọi người khác vẫn vào hosting cũ, bằng cách sửa file hosts trên máy mình:

  • Linux, macOS: /etc/hosts
  • Windows: C:\Windows\System32\drivers\etc\hosts (mở Notepad bằng quyền Administrator)

Thêm một dòng (thay bằng IP của VPS):

203.0.113.10  example.com www.example.com

Rồi kiểm tra:

  • Trang chủ, vài trang con, trang có form, trang đăng nhập.
  • Đăng nhập wp-admin, tải ảnh lên, lưu một bài nháp.
  • Log lỗi của website trên VPS.
  • Nếu chứng chỉ chưa có, trình duyệt sẽ cảnh báo HTTPS: đó là bình thường ở bước này.

Xong thì xoá dòng đó khỏi file hosts, nếu không bạn sẽ tiếp tục thấy VPS ngay cả khi DNS có vấn đề.

Bước 6: Đổi DNS và xử lý email

  1. Đóng băng nội dung: báo khách hàng hoặc biên tập viên tạm ngừng đăng bài, đặt hàng trong thời gian chuyển; với website có đơn hàng, đồng bộ database lần cuối ngay trước khi đổi DNS.
  2. Đổi bản ghi A và AAAA của tên miền và www sang IP của VPS. Nếu VPS nhận mail, đổi cả MX và cập nhật SPF.
  3. Cấp SSL: với ZoPanel, chứng chỉ được cấp tự động khi từng tên miền phân giải về server; với stack tự cài, chạy certbot lúc này.
  4. Giữ hosting cũ chạy thêm 7 đến 14 ngày. Trong lúc DNS cập nhật, một số thư vẫn rơi vào hộp thư cũ. Đồng bộ email thêm một lần sau vài ngày để không sót.

Nếu tự host mail trên VPS, hãy kiểm tra nhà cung cấp VPS có mở cổng 25 gửi ra ngoài không, đặt reverse DNS (PTR) cho IP, và cấu hình SPF, DKIM, DMARC. Thiếu những thứ này, thư rất dễ vào spam. Xem thêm tài liệu Email.

Những lỗi hay gặp khi chuyển hosting cPanel sang VPS

  • Huỷ hosting cũ quá sớm, trước khi kiểm tra email và DNS. Hãy để ít nhất một tuần.
  • Quên nameserver: DNS nằm ở nhà cung cấp cũ và biến mất khi huỷ gói.
  • Đổi DNS khi TTL còn cao, khiến khách bị chia đôi giữa hai server trong nhiều giờ.
  • Phiên bản PHP chênh lệch: website cũ chạy PHP 7.4, VPS mặc định PHP 8.3. Chọn đúng phiên bản trước, nâng cấp sau.
  • Đơn hàng mất trong lúc chuyển: không đồng bộ database lần cuối trước khi đổi DNS.
  • Không có backup trên VPS: ở shared hosting nhà cung cấp lo backup; trên VPS đó là việc của bạn từ ngày đầu.

Kết luận

Chuyển hosting cPanel sang VPS là việc làm một lần nhưng cần làm cẩn thận: kiểm kê, hạ TTL, backup, khôi phục, kiểm tra qua file hosts, rồi mới đổi DNS và giữ hosting cũ thêm một thời gian. Nếu bạn muốn nhập thẳng backup cPanel với mật khẩu, database, hộp thư và DNS zone, hãy thử ZoPanel trên một VPS mới: gói Free đủ cho 10 website để chuyển thử, và bảng giá cho biết khi nào cần lên Pro. Nếu đang cân nhắc thay panel cho cả công ty hosting, đọc thêm chọn giải pháp thay thế cPanel.

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

Chuyển hosting cPanel sang VPS có bị gián đoạn không?

Thường là không, nếu bạn khôi phục và kiểm tra website trên VPS trước, hạ TTL xuống khoảng 300 giây trước một ngày, rồi mới đổi DNS. Với website có đơn hàng hoặc bình luận liên tục, hãy đồng bộ database lần cuối ngay trước khi đổi.

Không có quyền WHM thì có tạo được backup cPanel không?

Có. Chủ tài khoản vào cPanel → Backup → Download a Full Account Backup để tạo file backup đầy đủ gồm file, database và email. Bạn không cần quyền root hay WHM.

Email có bị mất khi chuyển hosting không?

Không, nếu làm đúng: tạo lại hộp thư, đồng bộ thư cũ, đổi MX, rồi giữ hosting cũ thêm vài ngày và đồng bộ lần nữa. Thư bị mất thường do huỷ hosting cũ ngay sau khi đổi MX.

VPS cần cấu hình bao nhiêu để thay shared hosting cPanel?

Với vài website WordPress nhỏ, VPS 2 GB RAM là điểm khởi đầu hợp lý; nếu chạy thêm mail server, nên có thêm RAM. Hãy xem dung lượng file backup để chọn ổ đĩa, và tính dư cho backup trên VPS.

Mật khẩu có giữ nguyên sau khi chuyển không?

Khi chuyển thủ công, bạn thường phải đặt lại mật khẩu hộp thư và database. Khi nhập backup cPanel bằng ZoPanel, mật khẩu panel, hộp thư và database được giữ nguyên nếu định dạng hash tương thích; các trường hợp còn lại được ghi rõ trong log.