
Migrating from Ghost
- Written by John
- Oct 4th, 2023
Finally! We made it! After a year of building this new website, it is finally ready for all to see. This mini-project has taken way too long (IMO), but it’s been worth it. I feel elated and relieved this project is complete, for the most part, but there is work ahead. What am I talking about? I am talking about migrating my blog from Ghost to Astro.
Why move from Ghost?
Ghost has been great. Ghost is the “CMS” that opened my eyes to “modern” blogging systems, introducing me to Markdown and APIs within a blogging system. I have thoroughly enjoyed using Ghost as a blogging system, but after placing Ghost into a serverless compute environment, issues arose.
Back in 2019, I migrated Ghost to Cloud Run, which, at the time, was a fantastic choice. I never had any issues with Ghost v3, but when Ghost updated to v4+, I couldn’t get Ghost working within a serverless environment. Cloud Run worked flawlessly, but the interaction between Cloud Run and Cloud SQL, or even a local SQLite, caused connections to drop to the SQL database. This issue rendered my website unusable, and I never released Ghost v4+ to production. Admittedly, I didn’t set up Ghost as the Ghost Foundation describes in their installation docs, but I felt their method didn’t work for my setup.
By now, you might be asking why serverless. I love serverless tech. It’s easy to work with as long as you’re managing HTTP requests, and as you aren’t required to manage infrastructure, you can get things up and running quickly. I don’t want to manage infrastructure or pay many costs for a small website.
Moving to Astro…?
Approximately a year ago, I came across Astro on YouTube as version 1.5.0 of Astro started to take off and popped up in my feed. I was intrigued and watched many videos. By the end, I realised Astro’s potential and decided to take a look at it.
After a quick proof of concept, I fully understood I’d be able to build my website from scratch, something I’ve always wanted to do.
The most time-consuming activity was coming up with a modern design, leveraging elements from the Material Design v3 design system, and fitting this into a mobile, tablet and desktop view (responsive design). I also wanted to ensure the website would function correctly on all device types/sizes. For that, I utilised a UI library like Tailwind via Astro Integrations. Using Astro Integrations is an easy way to add functionality to Astro without borking your Astro installation.
The architecture
Staying true to the Google Cloud path, I can leverage Cloud Storage, Cloud CDN and Cloud Load Balancer to host and cache statically generated content.

What’s next?
There are plenty of things to do with this website. Below are just a few items that I’d like to do. Let’s see where we get to in a year.
- Upgrade Astro from v2 to v3 - This comes with challenges as the @astrojs/image package was deprecated, and the ability to make remote images responsive no longer exists.
- Add tag elements to the website, showing posts relating to that tag.
- Add more content.