How to migrate from shared hosting to a VPS (step by step)

Last updated July 15, 2026
# the short answer

Move from shared hosting to a VPS once your site is slow at peak, hits CPU or memory limits, gets throttled by noisy neighbors, or needs root access for things like Redis, a specific PHP version, or custom firewall rules. The migration is: audit the current site and database, pick a provider and size, provision and harden the server, copy files and import the database, configure the web server and SSL, test on a temporary URL, then cut DNS over with a low TTL so the switch takes minutes, not days. A tiny static brochure site is fine on shared hosting. A growing production site that needs control and performance is not.

Skip the manual setup. DeployManage provisions your server and ships zero-downtime deploys on any cloud.

$ get started free

Shared hosting is the right call when you are starting out. It is cheap, someone else patches the box, and cPanel hides the parts you do not want to learn yet. The trouble starts when your site grows into a real business and the same shared plan that got you going quietly becomes the thing holding you back: slow at peak, throttled without warning, and locked out of the settings you now need. This guide covers how to know you have hit that wall, an honest comparison of shared hosting versus a VPS, and a step by step migration plan that keeps downtime down to minutes. If you want the server side handled for you, DeployManage replaces cPanel and the sysadmin work behind it, and there is a free plan to start.

When should I move from shared hosting to a VPS?

Move to a VPS once shared hosting starts costing you traffic or control: pages crawl during busy hours, you hit CPU, memory or entry process limits, your neighbors' spam gets the shared IP blacklisted, or you need root to install Redis, pin a PHP version, or write custom firewall rules. If any of those describe your week, you have outgrown the plan.

The tell is not one bad day, it is a pattern. Watch for these signs:

  • Slow under load. The site is fine at 2am and unusable at your busiest hour, because you are sharing CPU with hundreds of other accounts on the same machine.
  • Resource limit emails. Your host warns you about CPU seconds, entry processes, or inode counts, then throttles or suspends you when you cross them.
  • Noisy neighbors. A site you have never heard of gets a traffic spike or sends spam, and your response times or email deliverability suffer for it.
  • No root, no choices. You cannot install an extension, run a background worker, change a kernel setting, or add a firewall rule, because the account is deliberately sandboxed.
  • Security you cannot see into. On a shared IP you inherit the reputation of everyone else on it, and you cannot lock down the parts of the stack you do not control.

Is a VPS better than shared hosting?

For a growing production site, yes: a VPS gives you dedicated CPU and memory, root access, and predictable performance, so you are not fighting other tenants for resources. For a tiny static brochure site with light traffic, no. Managed shared hosting is cheaper and someone else runs the server. Better depends entirely on what your site actually needs.

The honest tradeoff is control versus convenience. Shared hosting hands you a slice of a machine and takes the maintenance off your plate. A VPS hands you the whole machine and the responsibility that comes with it. Here is how they line up.

FactorShared hostingVPS
ControlNo root, sandboxed account, cPanel onlyFull root, install and configure anything
PerformanceShared CPU and RAM, throttled at limits, noisy neighborsDedicated CPU and RAM, consistent under load
CostLowest, a few dollars a monthHigher, but often the same or less than premium shared once you size it right
Maintenance burdenHost handles OS, patching and securityYou (or a panel) handle updates, hardening and backups
ScalabilityUpgrade tiers, then you hit a ceilingResize the server, add resources, or scale horizontally
Background jobsUsually forbidden or heavily limitedQueue workers, cron, and long running processes are yours to run

That last row is often the real reason people move. On a VPS you can run things shared hosting forbids, like a web scraping pipeline that turns sites into clean, structured data, alongside your app instead of paying for a separate service.

How do I migrate my website to a VPS?

Migrate in this order: audit the current site, pick and provision a VPS, harden it, copy the files and import the database, configure the web server and SSL, test on a temporary URL, then lower your DNS TTL and cut over. Done carefully, the visible downtime is the few minutes DNS takes to point at the new IP, not the whole job.

Work through the steps below top to bottom. Do not delete anything on the old host until the new one has served real traffic for a few days.

  1. Audit the current site and data. Note your PHP version, database engine and size, cron jobs, email accounts, any custom cPanel settings, and every domain and subdomain. Download a full backup of your files (public_html and anything above it) and export the database. Write down what actually has to move so nothing gets left behind.
  2. Pick a provider and a size. Choose a cloud you trust (Hetzner, DigitalOcean, Vultr, Linode, AWS, OVHcloud, or a VPS you already have) and pick a plan with headroom above today's peak. A 2 vCPU box with 4GB of RAM comfortably runs most small business sites. You can resize later, so do not over buy on day one.
  3. Provision and harden the server. Spin up a fresh Ubuntu LTS instance, create a non-root sudo user with an SSH key, disable root login and password auth, and turn on a default deny firewall that only allows 22, 80 and 443. Enable automatic security updates. The full list is in the production server setup checklist.
  4. Move the files. Copy your application code onto the server with rsync or scp, or by pulling from Git if the site is version controlled. Put it under a clean path like /var/www/yoursite and set ownership so the web server can read it and only your deploy user can write it.
  5. Move the database. Install MySQL or PostgreSQL, create a database and a dedicated user, and import the dump you exported in step one. Bind the database to localhost, never the public internet. Update the app's config or .env with the new credentials and connection host.
  6. Set up the web server, runtime and SSL. Install Nginx (or Apache), your language runtime and the right PHP or Node version, then configure a virtual host pointing at your app. Issue a Let's Encrypt certificate and set up automatic renewal. Force HTTPS with a 301 from port 80.
  7. Test before you switch. Do not point DNS yet. Add an entry to your local machine's hosts file mapping your domain to the new server's IP, or use a temporary subdomain, and click through the real site: forms, logins, checkout, uploads, email. Fix what breaks now, while the old site is still live.
  8. Lower the TTL, then cut over DNS. A day before the switch, drop your DNS record's TTL to 300 seconds so caches expire fast. When you are ready, change the A record to the new IP. Because the TTL is low and both servers are running, visitors move over within minutes and nobody sees an error.
  9. Verify and monitor. Watch the new server's logs and error rates, confirm SSL is valid, send a test email, and check that cron and any background workers are running. Keep the old host live for a few days as a fallback, then raise the TTL back up and decommission it.

Do I need technical skills to manage a VPS?

To run a VPS by hand, yes: you are the sysadmin now, responsible for patching the OS, configuring the firewall, renewing SSL, tuning the database, and restoring backups when something breaks. That is real work, and it is the main reason people hesitate to leave shared hosting. A server management panel removes most of it without taking away your root access.

This is the honest place DeployManage fits. It provisions a hardened server on the cloud of your choice, sets up the firewall, issues and renews SSL, installs your runtime and database, and runs zero downtime Git deploys with one click rollback. You get the control and performance of a VPS with far less of the sysadmin burden, which is what makes a plain VPS approachable for a developer or small team that does not want a full time ops person. If you run PHP, the Laravel deployment workflow and this walkthrough for deploying a Laravel app to a VPS show exactly what that looks like end to end.

Will moving to a VPS cause downtime?

It does not have to. If you build and fully test the new server before touching DNS, the only downtime is the brief window while DNS propagates, and you can shrink that to minutes by lowering your record's TTL to 300 seconds a day ahead of the switch. Both servers run in parallel during the move, so visitors are never staring at an error page.

The mistakes that cause real downtime are avoidable: cutting over DNS before the new site works, forgetting to lower the TTL so caches hold the old IP for hours, or tearing down the old host too soon. Keep the old server running until the new one has handled live traffic cleanly for a few days, and you have a safety net the whole time. If anything looks wrong after cutover, point the A record back and you are instantly on the old box again.

What about email and DNS records?

Email is the step people forget. If your domain's email lived on the shared host, decide before you migrate whether you are moving mailboxes to the VPS or to a dedicated email provider, and copy your MX, SPF, DKIM and DMARC records accordingly. A missed MX record means mail silently stops the moment you switch the A record.

Take an inventory of every DNS record on the old host (A, AAAA, CNAME, MX, TXT) and recreate them on the new DNS before cutover, changing only the ones that point at the server's IP. Running your own mail server on a VPS is possible but genuinely hard to keep out of spam folders, so most teams keep email with a specialist provider and only move the website.

The move in one sentence

Outgrowing shared hosting is a good problem: it means the site matters enough to need real resources. Audit what you have, provision a hardened VPS, test it privately, and cut DNS over on a low TTL, and the migration is a controlled afternoon rather than a risky leap. Run the VPS yourself if you enjoy that work, or let a panel handle the provisioning, hardening, SSL and deploys so you keep the control without becoming a full time sysadmin.

Frequently asked questions

When should I move from shared hosting to a VPS?

Move when shared hosting starts limiting you: the site is slow at peak, you hit CPU, memory or entry process limits, the shared IP gets blacklisted by noisy neighbors, or you need root access for software like Redis, a specific PHP version, or custom firewall rules. A pattern of these, not one bad day, is the signal.

Is a VPS better than shared hosting?

For a growing production site, yes. A VPS gives you dedicated CPU and memory, root access, and consistent performance instead of competing with other tenants. For a tiny static brochure site with light traffic, shared hosting is cheaper and lower maintenance. Better depends on whether your site needs control and performance yet.

How do I migrate my website to a VPS?

Audit the current site and export its database, provision and harden a VPS, copy your files, import the database, configure the web server, runtime and SSL, then test on a temporary URL before touching DNS. Finally lower your DNS TTL and switch the A record so the cutover takes minutes.

Do I need technical skills to manage a VPS?

To run one by hand, yes: you become the sysadmin, handling patching, firewall, SSL renewal, database tuning and backups. A server management panel removes most of that work while keeping your root access, provisioning and hardening the server and running deploys, which makes a VPS practical for a developer or small team without dedicated ops.

Will moving to a VPS cause downtime?

It does not have to. Build and fully test the new server before changing DNS, and lower your record's TTL to 300 seconds a day ahead so caches expire fast. Both servers run in parallel, so the only visible gap is a few minutes of DNS propagation. Keep the old host as a fallback for a few days.

# related

Provision and deploy from one dashboard.

Connect a provider and ship your first zero-downtime deploy in minutes.

$ get started free