Overview
This post is to provide an idea about what all things needed to be taken care while migrating from Ghost CMS to Zola SSG to Hugo, what to expect
Note: Based on my current requirements, Hugo seems best match for me. Your requirements might vary.
About my usage
Over time, managing updates, security, and backups for various platforms became a significant overhead. I want a simpler approach with a minimal maintenance efforts.
As part of it, I have been experimenting static site generators (SSG) from a couple of years, started with Hugo. Lately, came across Zola, which meets most of my requirements and is more stable.
After trying out the different platforms my requirements do have evolved for personal blogs.
- Ability to focus more on content writing
- It should be done quickly with less overhead.
- Stability
- Minimal Maintenance
- less coding :)
- Using own domain
Additionally, finding the right theme, choosing the hosting platform and also it should be under budget (i.e one-time payment for theme).
Experiences from Ghost to Zola to Hugo for my needs?
Hosted my first blog using the Ghost platform (Self Hosted), where i didn’t have much trouble with Ghost, rarely i get any issues related to platform itself. It was easily upgradable and can take backups quickly. I also have an automation script in place which will do the job for me in frequent intervals.
One of the best feature for me, to immediately pick Ghost was its readability, its so eye-friendly for user to go through content.
The difficulty in finding a theme that perfectly matched my needs prompted me to explore other options.
As, i write most of my notes in org-mode, markdown for reporting purposes, which convinced me to move to Zola as it uses Markdown. Hugo was also an option, as it even allows me to write the posts in org-mode file format. The content structure, configuration, and deployment were so easy to follow in Zola. So gave a try with Zola SSG.
This post was initially written in Markdown and built with Zola, deployed on Cloudflare pages. Currently, moved to Hugo SSG and still deployed on Cloudflare Pages.
Migration Process to Zola SSG
If you are starting from scratch, you can skip the below section.
After exploring over the net for some time, found a few old projects which have been written for ghost to Zola migration. Later realized that, those were written for older version of ghost platform.
- Found this one ghost-to-md, which is close to my needs. It helps in converting the ghost exported content i.e. JSON to Markdown. With a minor tweaks to the output template, allowed me to complete the conversion successfully.
Example:
func mdFormat() string {
return `+++
title = "%s"
slug = "%s"
date = %s
updated = %s
[extra]
social_media_card = "%s"
+++
%s
`
}
Next, I copied all the `images` folder from ghost content directory directly into the Zola `static` directory and updated the image paths in the Markdown files accordingly.
Later, I used search and replace and added few of the following:
- Updated broken URL’s, bookmarks and references
- Updated post’s metadata
- Added `draft = true` to tag draft posts.
- Missing Tags
Using the GitHub, finally deployed all the content onto Cloudflare pages.
Migration from Zola to Hugo SSG
This was straight forward, this time for migration, i used AI assistant to get the work done. Theme is something where i got struck again (I have limited knowledge on Front end technologies), used one theme and tweaked it a lot with AI help, which later felt like too much to maintain.
I often get some time for blog, so re-evaluated my requirements and jumped back to Hugo and configured PaperMod theme and left at it defaults.
Conclusion
Overall, migrating back to Hugo has been a home so far. Helps me to focus on content, the best thing is using ox-hugo to write in org-mode and export to Markdown. There were some hiccups, but i was able to get it work. I wouldn’t recommend my exact migration process, as it was tailored to my specific needs. But if you’re feeling overwhelmed by any CMS or looking for a more minimalist approach, I’d definitely encourage you to explore Zola or Hugo.