Migrate cPanel Site to VPS Without Downtime
Published on September 10, 2026

To migrate a cPanel site to a VPS without a surprise outage, treat DNS as the final switch, not the first task. Build the destination server, copy the account, test it on the new IP address, reduce DNS TTL, then change the records only after the application, mail, and SSL checks pass. The site stays available while the work happens in the background.
For a small business site, an agency account, or a store with live orders, the migration is less about moving files and more about preserving service behavior. PHP versions, database permissions, cron jobs, email routing, redirects, and firewall rules all need to arrive in a known-good state. Files are usually the easy part. The small settings hiding around them are where migrations earn their gray hairs.
Before You Migrate cPanel Site to VPS
Start with an inventory of the existing account. Record the domain names and subdomains, account disk usage, PHP version and extensions, database sizes, cron jobs, email accounts, forwarders, autoresponders, DNS records, SSL certificates, and any external services that rely on the server IP address. For e-commerce and SaaS workloads, also identify payment callbacks, API allowlists, transactional email providers, and background workers.
Check whether the target VPS has enough headroom. Disk space should cover the source account, the temporary migration archive, databases, backups, and normal growth. RAM and CPU requirements depend on traffic and the software stack. A brochure site may be comfortable on a modest VPS; WooCommerce, Magento, large WordPress multisite, or a busy application normally needs more memory and database capacity.
The destination should be prepared before any production data is copied. Set the server hostname, install and update cPanel and WHM if that is your chosen control panel, configure nameservers if the VPS will host DNS, and enable a firewall with only necessary ports open. Confirm that backups are configured independently from the source server. A backup stored only on the VPS is useful, but it is not a full recovery plan if the VPS itself has a problem.
If you are moving from shared cPanel hosting to a VPS, check what was previously managed for you. The old host may have handled mail filtering, DNS, automatic SSL renewal, malware scanning, or off-server backups. On a managed VPS, these items can be checked and maintained with you. On an unmanaged server, they become your operational responsibility. Neither approach is wrong, but assumptions are expensive.
Lower DNS TTL before cutover
About 24 to 48 hours before the planned change, lower the TTL on the relevant DNS records to 300 seconds if practical. This allows updated A, AAAA, and MX records to spread faster when cutover time arrives. Do not lower it five minutes before the move and expect the internet to become philosophical about it. Recursive resolvers may already have the old value cached.
Keep a record of the current DNS zone before editing it. If something unexpected appears after the switch, restoring known records is faster than reconstructing them from memory.
Choose the Right Transfer Method
WHM's Transfer Tool is usually the cleanest method for moving full cPanel accounts between compatible servers. It transfers account data, databases, email, DNS zone information, and many account-level settings in one controlled process. Use root or reseller-level access where possible, and verify the source server allows the required SSH connection.
A full cPanel backup can also work well when direct server-to-server transfer is unavailable. Generate the backup, move it securely to the new VPS, and restore it through WHM. This approach is more manual, and the backup may represent a point in time rather than the latest changes, so schedule the final sync carefully.
For applications with unusual setups, a manual migration may be safer. Copy website files with rsync or another secure transfer method, export and import databases, recreate users and permissions, then rebuild configuration outside the account. This takes longer, but it gives more control when the source system has custom Nginx rules, nonstandard paths, external storage, or application workers.
Avoid copying only the public_html directory unless you have confirmed there is nothing else to preserve. Email, databases, hidden files, cron definitions, SSL materials, and configuration files are often outside that folder.
Test the VPS Before Public DNS Changes
Once the account is restored, validate the site against the destination IP without changing public DNS. A local hosts-file entry lets your computer resolve the domain to the new VPS while everyone else still reaches the old server. This is the proper time to find a missing PHP extension, a broken rewrite rule, or a database user that did not carry over.
Test the primary pages, login flow, contact forms, checkout, admin area, image uploads, and scheduled tasks. Review application logs and the web server error log while doing this. Check that the site is using the intended PHP version and that file ownership is correct. A page that loads once is not the whole test. It should also write to the database, send required messages, and handle authenticated sessions normally.
Verify SSL before cutover as well. If the certificate is being reissued after DNS points to the VPS, confirm the web server virtual host is correct and ports 80 and 443 are reachable. If you are bringing an existing certificate, install its certificate chain and key securely. Browsers are quite honest about certificate mistakes, sometimes with more drama than necessary.
Handle email separately from web traffic
Email is the most commonly missed part of a VPS migration. If the domain uses external email such as Google Workspace or Microsoft 365, preserve the existing MX, SPF, DKIM, and DMARC records. Do not replace them with local cPanel mail records by accident.
If email is hosted in cPanel, move the mailboxes and test sending and receiving on the VPS. During the DNS transition, new messages can land on either server. Keep the old hosting account active for at least 48 to 72 hours after the switch, and perform a final mail and file sync if the source remains active. For high-volume mail or business-critical inboxes, plan a more deliberate mail cutover rather than treating it as an afterthought.
Cut Over Carefully and Keep the Old Server Available
When testing is clean, place dynamic parts of the site into a brief maintenance mode if the application allows it. Run a final database export or account sync to capture orders, form submissions, user changes, and content updates made since the initial transfer. Restore or synchronize that final data on the VPS, then remove maintenance mode after the new environment is ready.
Update the A record to the new IPv4 address and the AAAA record only if IPv6 is configured and tested. If nameservers are changing too, make that change deliberately and confirm the new zone contains every required record. Changing nameservers and rebuilding DNS at the same moment adds moving parts. Sometimes it is necessary, but it is not the most beautiful DNS situation.
Watch the new server during the first hours. Check web access logs, PHP and application errors, CPU load, memory pressure, disk usage, mail queue status, and database activity. Confirm automated backups run successfully and that monitoring can reach the new VPS. At kodu.cloud, this is where managed operations and FASTCARE monitoring are useful: the service is calm again because someone is watching the actual server behavior, not only the homepage.
Do not cancel the old service immediately. Leave it online until DNS propagation has settled, mail flow is confirmed, backups are verified, and key users have tested the live site. For most standard sites, 72 hours is a reasonable safety window. Keep a rollback plan during that period: retain the old DNS values, avoid destructive source changes, and know who will make the decision if a return is needed.
Post-Migration Checks That Prevent Later Trouble
After the move, review scheduled backups, retention periods, restore testing, security updates, firewall behavior, and resource trends. Remove old test entries from your local hosts file. Update any external allowlists, monitoring targets, webhook endpoints, and documentation that reference the old IP address.
A VPS also gives you a chance to clean up long-standing hosting clutter. Remove inactive email accounts, old staging copies, abandoned databases, and plugins or extensions no longer needed. Do this after the migration is stable, not during the critical transfer window. Calm changes are easier to reverse.
A good migration leaves more than a site that happens to load. It leaves a server you can monitor, restore, update, and trust when traffic arrives at an inconvenient hour. Build that operational margin into the move, and the next maintenance task will feel much less like a rescue operation.
Andres Saar Customer Care Engineer