EmailCall us at 02269718986

How do I migrate Ghost to a new host without downtime?

Planning the Migration

At HostingDuty, we treat Ghost migrations as production-critical operations. The goal is zero downtime, which means you must validate the new environment before switching traffic. We recommend setting up the new Ghost instance on a different subdomain or internal port. This allows full testing without affecting live traffic.

Preparing the New Server

Before moving data, ensure your new server meets Ghost requirements. Check Node.js version compatibility, database configuration, and storage limits. You can find detailed specs in our /kb/ghost-server-requirements guide. Use Ghost CLI to install Ghost on the new host, or deploy via Docker if you prefer containerization. See our /tutorials/migrate-ghost-docker tutorial for Docker-specific steps.

Migrating Content

You have two main options for content migration:

  • Ghost CLI export/import: Run ghost export on the old server and ghost import on the new one. This preserves posts, settings, and themes.
  • Database dump: Export your MySQL or PostgreSQL database and restore it on the new host. This is faster for large sites.
Whichever method you choose, always test uploads, routing, and admin access before going live. Laura Hargreaves demonstrated this approach in her Ghost v6 migration guide, running both versions side-by-side during the transition.

DNS and Traffic Switch

Once verified, update your DNS records to point to the new host. Lower your TTL (Time to Live) 24-48 hours in advance to minimize propagation delays. At HostingDuty, we use NGINX to route traffic during the switch, ensuring a smooth handover. After DNS propagation, monitor logs and error rates closely.

Post-Migration Verification

After the switch, verify that all content loads correctly, SSL certificates are active, and email notifications work. Check your /glossary/ghost-cli tool usage and /compare/ghost-vs-wordpress for context on Ghost-specific configurations. If issues arise, rollback to the old server using your DNS TTL buffer.

External References

For additional migration strategies, see the Failed to Function guide on migrating Ghost to a new server and Laura Hargreaves' Ghost v6 Docker migration experience.

People also ask

  • How do I backup Ghost content before migration?
  • What are the requirements for hosting Ghost?
  • How do I configure DNS for zero-downtime migration?
  • Can I migrate Ghost to Docker without downtime?
  • How do I rollback a failed Ghost migration?
  • What is the best way to test a new Ghost server?

Sources