VPS Migration Runbook
The runbook I follow step by step every time I move a server: 38 checkpoints across 8 zones, from auditing the old box to watching the new one serve traffic through a full night. Downtime in single-digit minutes.
PDF you keep forever · Free updates for life · 7-day refund · Updated October 4, 2026 — v1
Every checkpoint, in order.
Zone 1: Know the Old Box
- Full audit — what's running, disk, memory
- Cron jobs hiding in all four places
- SSL certificate inventory
- The queue workers and background jobs everyone forgets
Zone 2: Prep the New Box
- OS, users, SSH keys
- Firewall before anything touches the network
Zone 3: Files via rsync
- The exact flags
- The permission gotcha that stops most people
- Dry-run first, always
Zone 4: Databases
- MySQL dump and restore, documented
- Postgres dump and restore
- Verification steps
- The MyISAM edge case most guides skip
Zone 5: Configs & SSL
- Web server configs
- PHP configuration
- Systemd units
- Certs that work before cutover
Zone 6: Test Before You Switch
- The hosts-file trick
- Full smoke test on the new box while the old one still serves
Zone 7: The Cutover
- DNS TTL prep — do this days ahead
- The final sync
- Flip order that minimizes downtime to minutes
Zone 8: Verify & Rollback
- 24-hour watch checklist
- The rollback plan you write before you need it
Frequently asked.
How much downtime should I expect?
Minutes, not hours, if you follow the cutover order in Zone 7 — the playbook sequences DNS TTL lowering, final sync, and the switch to keep the window as small as your DNS allows.
Can I migrate from shared hosting to a VPS?
Yes. Zone 1 (the audit) is designed to inventory everything on the old server regardless of where it lives — shared, VPS, or dedicated — so nothing gets left behind.
What if something goes wrong during migration?
Every zone includes rollback notes. The old server stays untouched until you've verified the new one works, so you can always point DNS back.
Do both servers need the same OS?
Ideally yes, and the playbook assumes Ubuntu on both sides. It flags the spots where version differences matter (PHP versions, MySQL vs MariaDB) so you can handle them deliberately.