> ## Content Index
> Fetch the complete content index at: https://www.magicpages.co/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to move a self-hosted Ghost site to Magic Pages
- URL: https://www.magicpages.co/help/migrating/how-to-move-a-self-hosted-ghost-site-to-magic-pages/
- Published: 2026-10-30T11:31:54.000Z
- Updated: 2026-10-30T11:31:54.000Z
- Description: 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.
- Author: Sviatoslav Huzel
- Tags: Help Center & Guides, Migrating to Magic Pages

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

1. A MySQL dump of your Ghost database. It holds your posts, members, settings and everything else Ghost knows about.
2. Your content folder, the folder called `content` in 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](https://docs.pikapods.com/manage/database?ref=magicpages.co). 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](mailto: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:

1. Check the copy at your `.mymagic.page` address.
2. Upgrade to a paid plan. Custom domains work on paid plans only.
3. 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.
4. Connect your domain. Your old server keeps serving readers until the DNS change takes effect, so nobody sees a gap.
5. Set up your newsletter sending domain, before your first send.

Connecting the domain takes a couple of DNS records, and this walks through it:

[Setting up Your Custom Domain on Magic PagesLearn how to easily set up a custom domain for your Ghost CMS on Magic Pages. Follow our clear, step-by-step guide to update DNS settings and enhance email deliverability.![](https://www.magicpages.co/content/images/icon/magic-pages_full-logo_dark-plum-icon-2fc36d0b-36db-4ef4-be38-eb3e814d3666.png)Magic PagesJannis Fedoruk-Betschki![](https://www.magicpages.co/content/images/thumbnail/Facebook-post---1-1-70ad677a-e473-44b8-8bde-8896f03bdc77.jpg)](https://www.magicpages.co/help/domains/setting-up-your-custom-domain-on-magic-pages/)

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](https://www.magicpages.co/migrate/#cost) 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:

[Will My Open Rates Drop After Migrating to Magic Pages?Most migrations don’t come with a drop in open rates. Here’s what changes when you move, and where to focus your attention.![](https://www.magicpages.co/content/images/icon/magic-pages_full-logo_dark-plum-icon-6e5db3b3-9e24-4579-a423-1300053c5226.png)Magic PagesSviatoslav Huzel![](https://www.magicpages.co/content/images/thumbnail/Facebook-post---1-1-33814334-c1e6-4211-9b01-b5fe947cfc45.jpg)](https://www.magicpages.co/help/newsletters/will-my-open-rates-drop-after-migrating-to-magic-pages/)