How to move a self-hosted Ghost site to Magic Pages
Send us a MySQL dump and your content folder, and we clone your site 1:1. Members, Stripe and your theme come with it, for free.
We do the move for you, and it's free. You send us two things from your server, a database dump and your content folder, and we turn them into an exact copy of your site here. Your current site keeps running on your server until you shut it down, so you switch your domain over when you're ready.
What we need from you
- A MySQL dump of your Ghost database. It holds your posts, members, settings and everything else Ghost knows about.
- Your content folder, the folder called
contentin your Ghost install. It holds your images, files and themes.
Ghost's JSON export, under Settings → Advanced → Migration tools → Export, isn't enough on its own. It has no images, and it leaves most of your setup behind.
Getting the backup
A standard install
On your server, dump the database. You'll be asked for the MySQL password:
mysqldump -u your_username -p your_database_name > ghost_backup.sql
Then, from your own computer, copy the content folder down:
rsync -av your_username@your_server:/path/to/ghost/content/ ./content/
On the DigitalOcean one-click install, the ghost MySQL user isn't allowed to run mysqldump. Run it as root instead.
Docker
Dump the database from the MySQL container:
docker ps
docker exec MYSQL_CONTAINER_NAME mysqldump -u root -p ghost > ~/ghost-migration/ghost_backup.sql
Then pack the content volume into an archive:
docker volume ls
docker run --rm \
-v ghost_ghost_data:/ghost_content \
-v ~/ghost-migration:/backup \
alpine \
tar czf /backup/ghost_content_backup.tar.gz -C /ghost_content .
Swap ghost_ghost_data for whatever docker volume ls shows for your Ghost volume.
PikaPods
Stop your pod first. Then turn on database access and export the database through Adminer, as PikaPods describes. Then turn on SFTP and download the content folder. Skip the JSON export.
Sending it to us
Upload both files to any file-sharing service, such as Google Drive, Dropbox or WeTransfer, and send the link to help@magicpages.co with your trial's .mymagic.page address.
Size isn't a problem. We import the backup on our side, so Ghost admin's file upload limit doesn't apply, and we've moved sites over 100 GB.
If you'd rather give us access to your server, send the login through a one-time secret link, never in chat or plain email.
Before you send it
- Ghost 4 or newer is fine. We upgrade your site to the current version when it starts here.
- SQLite isn't supported. If your install runs on SQLite, which is common for local installs, tell us before you export so we can plan the move with you.
- Your own Mailgun account doesn't come across. Newsletter sending is included here, so you remove your sending domain from Mailgun and set it up with us instead.
What comes across
Everything that lives in your site: posts and pages in every status, members, staff accounts, your theme (custom themes need Pro or the theme add-on), routes, redirects, integrations and their API keys, and your Stripe connection with every paid subscription. You log in with the same email and password as before.
Switching over
The import itself takes us one to two hours, and most migrations are done within a day. Then:
- Check the copy at your
.mymagic.pageaddress. - Upgrade to a paid plan. Custom domains work on paid plans only.
- Add anyone who signed up since the backup. Go to Members on the old site, click Export all members and send us the file. Ghost matches members by email, so nobody gets added twice.
- Connect your domain. Your old server keeps serving readers until the DNS change takes effect, so nobody sees a gap.
- Set up your newsletter sending domain, before your first send.
Connecting the domain takes a couple of DNS records, and this walks through it:

Once the domain points to us, you can shut the old server down.
What it costs
Nothing, on any plan. Moving a Ghost site to us is part of getting set up, and it never needs a yearly plan. Our migration page explains which moves do.
Will my newsletters still reach inboxes?
They will. What matters is the domain you send from, and this explains how to keep it:

More in this section
Didn't find your answer?
Ask us anything — a real person reads every message, usually the same day.

