Migrating a WordPress Fleet: The Series

Migrating a WordPress fleet: the series

This is the index for an 8-part series on migrating a fleet of roughly 40 WordPress sites from two shared-hosting providers (A2 Hosting and SiteGround) onto a self-managed Hestia Control Panel VPS with Cloudflare as the DNS layer. “Self-managed Hestia Control Panel VPS” does not imply exotic or special-purpose hardware: Hestia runs on any generic x86_64 Linux box. Our own instance is a Hetzner Cloud CPX32 (4 vCPU, 8GB RAM, roughly 160GB SSD disk, running Ubuntu 24.04), reachable over Hetzner’s standard shared datacenter network like any other cloud VPS, not a dedicated line or special connection.

This was not a weekend project. This was a lot of work. The hope for this series is that you will better understand what all went into this migration, and whether taking on something similar makes sense for your own fleet.

Each part below stands on its own, but they build on each other in order.

  1. Part 1: Why We Moved, and What We Moved To. Why we left shared hosting, what a self-managed Hestia VPS actually gets you, and where the tradeoffs are.
  2. Part 2: DNS Architecture, Why Cloudflare and How We Set It Up. The DNS-only-by-default approach, nameserver-pair fragility across a large domain fleet, and the exceptions we carved out.
  3. Part 3: The Migration Playbook, Files, Databases, and WordPress. The actual step by step process for moving files, databases, and WordPress installs at fleet scale without breaking anything mid-flight.
  4. Part 4: SSL/TLS, Running Let’s Encrypt Across a Multi-Domain Box. Certificate issuance quirks, two real outages, and why a config flag saying SSL is enabled is not proof anything was actually issued.
  5. Part 5: Email Is the Hard Part. Moving mail content without ever touching end-user passwords, DNS records that silently break mail, and the outbound port 25 problem.
  6. Part 6: The Pitfalls List, a Reference of Everything That Broke. Every sharp lesson from the whole project, collected into one scannable reference list.
  7. Part 7: Redirect-Only and Alias Domains. The pattern for domains that just need to 301 somewhere else, with no hosting account of their own.
  8. Part 8: What We’d Tell You Before You Start. The questions worth asking yourself before taking on a migration like this, and the single decision that saved us the most pain.

Leave a Comment