Moving from Grav to Ghost

My journey from the Grav blogging platform to Ghost.

Moving from Grav to Ghost

I've had a blog since 2015, and I've had many platforms.  From Blogger to WordPress to Grav.  It's time for a new platform! 😊

I have loved having Grav as my blogging platform, it was a platform that allowed me to learn more about about how to use Visual Studio Code and Azure DevOps and Azure itself.

I covered off my story in previous blog posts, the migration from WordPress to Grav, the lessons that I learnt during the migration and also how I built a deployment pipeline to deploy my changes from Visual Studio Code to Azure via Azure DevOps.

Why the move?

I maintained the front end and the back end of my blog when I ran Grav on Azure.  I had to do the changes to the code if Grav released an update, or there was an update for a plug in or if there was a change to something within Azure DevOps.  Sometimes that meant I had to spend hours sorting the backend before I code publish a blog.  It was time consuming and it was frustrating.

Also my blog was starting to look a bit "tired" and it needed an overhaul. 😉

Why Ghost?

I looked at lot of platforms before settling on Ghost.  I thought about WordPress or Hugo or Jekyll, but looking at Ghost I saw everything that I liked.

This blog is now being hosted on Ghost, by Ghost.  I've went with the hosted version.  I didn't want to have to look after the back end this time. I've reached the stage where I want to focus on the content and blogs that I write and let someone else worry about the up time and updates. 😉

Ghost is a platform I've looked at a few times and worried it would be to much work to migrate across to or even to much of a learning curve for me to move to. I first heard about the platform from Troy Hunt when he moved several years to Ghost.  

Ghost has integration with all the platforms that I want to use.  No more plugins, so more tweaking some open source plugin to make it display code on my blog the way I want or use the latest FontAwesome font I want.  The things you want are integrated.  The most I've had to do is take a snip of code from say Disqus or Google Analytics and pasted it into my theme's code or into the part within Ghost that injects code into the whole site.

I've got a GUI editor that I can use to write my blog posts, or I can use Markdown or I can write raw HTML and Ghost will turn that into a blog.  So I haven't lost that functionality which is something I had with Grav.

What I have lost is the ability to write a blog offline, the editor I use is hosted online.  So if I am ever sitting in an airplane again with no Internet access I wouldn't be able to get to the site.  However, I can do what I did many moons ago, save the file in a Word document or a notepad or something and the paste it into the online Ghost platform when I am back online. 👍


I had started to notice that my site on Grav and Azure was starting to load slowly.  That it wasn't a great experience.  Despite my using Cloudflare in front of the site the performance of it over the last few years has degraded.

Speed test on Grav & Azure

I don't for one minute think Grav or Azure were to blame, I think it was my lack of configuration, my lack of maintenance.  

With Ghost I get a Worldwide CDN that is producing much faster results.


There is community support for Ghost, lots of people run their own Ghost platform within containers or on Azure.  There is also a team of people at Ghost who answer your questions and have helped me with some various questions during the transfer.  They've all been very helpful.

There are also a host of different themes available for Ghost, free or paid ones.  I am currently running the Liebling theme.  Which is a free theme.   There were so many themes it really was hard to choice one. I hope you like what I've chosen. 😉


Looking at my cost of my Grav blog I was utilising the free plan within Cloudflare, the free Azure DevOps tier and then using an Azure App Service.  Over the last three months here are the costs within Azure:

Monthly Costs in Azure

In terms of Ghost and the Ghost hosted option there are 4 plans you can choose from, each have different usages, I've went with the basic tier as it suits me in terms of views per month and customisation.

The cost to me run this Ghost blog is $29 a month, or £21.12, so ultimately cheaper than the solution I was running in Azure.   To get that monthly cost though you do have to sign up for a whole year, if you pay monthly it's a bit more expensive.

Migration from Grav to Ghost

There are many guides on how to migrate your existing platform to Ghost within the Ghost documentation.

Now of those were for Grav to Ghost though. 😉  For me the migration process was all about that good old fashioned copy and paste from one platform to another.

All my posts within Grav were written in Markdown so I took that and copied it straight into here.   For the most part it worked, there were only a few things I had to tweak.  One of them being images, I had to upload every image I'd ever embedded into a blog post again.  This part was time consuming but obviously necessary.  

I could have written a tool using the documentation from Ghost to make a migration tool, but I figured it would still be quicker to do it all manually.  I had over 300 blog posts and it took me about 2 weeks on and off to do the migration.

Final Results

I'm happy with how it is turned out and pleased that things are up and running on this platform.  I've got a few blogs in draft that now need to finalise and get published for you all as my blog writing basically stopped during the migration.

Please do let me know if you find any dead links, or issues with pages. I hope I did a good job of migration things but I am sure I missed a few things.  

Also let me know if there is any design tweaks I need to make.  I do welcome constructive feedback. 😊