Upgrade blog from Ghost 0.11 to 4.x

Previously this blog is using a pretty old version of Ghost 0.11, which was released back in 2016 and  the tool Ghost-CLI was not released yet. This blog is hosting on the DigitalOcean using Ubuntu 14.04, so I decided to migrate it to a new Droplet with Ubuntu 20.04 and upgrade Ghost 0.11 to Ghost 4.x and use the tool  Ghost-CLI to manage Ghost.

Back up your data

The first step is to back up your data by copying everything under the ghost directory(e.g. /var/www/ghost) to another directory or your local machine.  As I have to migrate it to another VPS, I download everything from the server via shell access.

Once you’re logged in to your server,  cd to the parent directory of your ghost directory:

cd /var/www/

And then zip the ghost directory with all its contents:

zip -r ghost.zip ghost/*

Now we need to get that zip file from your server onto your local machine:

scp user@ip-of-your-server:/var/www/ghost.zip ~/Documents/ghost.zip


If you are using VPS of DigitalOcean, you could just create a Snapshot of your Droplet to back up the data.

Export your content

Log in to Ghost admin, and navigate to the Labs, and you should see Export your content.

Labs

Click on the export button and it will download a json file named something like your-blog.ghost.2022-05-01.json containing nearly everything except the images.

If you have Ghost 4.x installed and try to import the content using the above json exported by Ghost 0.11, you would see the error message like this "Import failed Please install Ghost 1.0, import the file and then update your blog to the latest Ghost version", because the json format is v1 and is not compatible with new version v2 and we have to transform it to v2.

Transform exported json to v2

First, we have to install Ghost 1.x to transform the json, and I did it on my Mac locally instead to avoid extra setup.  

Run the following command to install Node.js version (10.24.1) using Homebrew

brew install node@10

and then install Ghost-CLI 1.11.0

npm install -g ghost-cli@1.11.0

and then install Ghost v1.26.2

ghost install local --v1

If the Ghost was installed successfully, you should be able to access http://localhost:2368/ghost/.  Log in to Ghost admin, and navigate to the Labs, click on Choose File in the Import content section, and choose the json you downloaded before, and click on Import button. You should see the below message if it is imported successfully.

Click on the export button again to download the transformed json.

Now you can upgrade the Ghost to 4.x on you server  by running the below command:

npm install -g ghost-cli@latest

and then import the transformed json.

Upload your images

The final step is to upload your images. Unzip the file ghost.zip you backed up before, and go to directory content and run the following command to upload the images to your server:

scp -r images user@ip-of-your-server:/var/www/ghost/content

Now we are all set.

Hope it helps,

Michael