New Blog Platform

Can’t see the wood for the trees.

Is a phrase that definitely sums up how I’ve felt maintaining my personal and homelab blogs over the past 6 years.

Finding an easy to use static site generator for my personal blog that is simple to get started with, yet has a powerful feature set should I need it, has been a journey taking me along many different paths using a range of tools. Finally I think I’ve found a tool set that allows me to easily write posts, preview and publish them all without having to have a complex development environment to maintain and distract me from writing.

When choosing a static site generator you will at some point hit on the question of ‘Where do I write my content?’ or ‘Is there a nice CMS to make this easier for me?’. Some people will have you just use a plain text editor or a code editor, others will suggest online tools such as Prose and some will say ‘Why not just use WordPress?’. Whilst these are common concerns, for me, I was mainly interested in something that would be free or cheap to use and not give me loads of worry maintaining so I could get on and write, something I’ve been promising myself I’ll do more of these past 2 years.

With this in mind I landed on hosting my blog via GitHub Pages, which then led to a prerequisite of having a static site that would be served from the GitHub servers. Whilst GitHub Pages has inbuilt support for the Jekyll framework and with myself coming from a Ruby background you’d think I’d stick with this, however, I was looking to try something different. Jekyll has been around for a long time but requires plugins to be used for many common features, with that in mind I was looking for a framework that had a load of common features baked in but also had a speedy local development environment for when I wanted to make changes to a theme or proof-read my content. Writing blog posts that contain code and technical commands means the formatting of the page and previewing locally before publishing are a concern of mine to ensure these are easy for others to digest.

Having explored the long list of static site generators I settled on using Hugo as it provided the speed I required but also a range of features including the useful ‘shortcodes’ that make it really easy to link to content on other platforms.

With the static site generator decided, I also had to figure out how I would do any ‘development’ on the site and how I would write and publish the content. Having been part of the beta for GitHub Codespaces it was quite simple to settle on this for a powerful yet easy to use development environment that could be easily tweaked and pre-configured for managing a Hugo based site. A content editor/manager however proved a little more tricky to find, especially one that was free and had much of the functionality I wanted. After a bit of trial and error with many platforms I settled on using Forestry with provides nearly all of their feature set for free to personal users on their first 3 sites. Having played around with Forestry it was clear that this content management interface would be really useful in enabling me to write and preview content all whilst not getting distracted with the technical/development related tasks.

Now that I could design my blogs and write content for them came the more difficult stage, building up the static site ready to deploy via GitHub Pages. Thankfully this proved easier than I thought thanks to GitHub Actions and a couple of pre-built actions and an existing workflow on the Hugo documentation site.

Once I had all these parts linked together, which was pretty smooth todo, I was able to focus more on my writing and less on what do I need to do to keep the blog running. Hopefully this year I can continue with the actual writing and not keep adding to my list of ‘Wouldn’t it be good to do a writeup on this.’.

If you’re interested in managing your own blog with Hugo and Forestry visit my Getting Started guide.