Over the last few months I've wanted to get back into blogging and writing about 'stuff'. Unfortunatley life happens and I was stuck overhauling my entire tech stack with a focus on trying to reduce time sinks and a lot more.

I finally had a chance recently to get to a point where I could start the process of blogging again. Unfortunately my original blog was 2 years untouched and needed some love.

Fortunately I'm a technical type and thought 'I got this'. Then reality struck.

The rest of this post is a distillation of what I ran into as well as my opinions regarding blog software and engines.

Tech Stacks

With my original blog being untouched for about 2 years I had the pleasure of looking at what it would take to update the site. In short: I needed to update to the latest version of Hugo, verify the Beautiful Hugo theme still worked and figure out a proper alternative to Fathom as Fathom went closed source and is no longer maintaining their original go codebase.

I also wanted to clean up some older areas of the site for information that has languished and is not even remotly applicable anymore.

Given I had a lot of work ahead of me I figured it would be prudent to do a bit of a dive into modern blog software, engines and minimal trackers to see if I should just start over and port my original blogs posts I wanted to keep or if a form of overhaul in-place was smart.

In short: it was clearly best to start over and port the posts I wanted to keep.

Tech Stack Options

During the course of my research I discovered that there are 2 solid approaches (in my opinion):

  1. Static site generators + minimal tracker
  2. Full blog platform + more robust tracker

The first option is the leanest option for self-hosting (I self host quite a bit) and the second option is less lean but more accessible if you're feeling lazy and want to be hand held a bit. My opinion is both are 100% valid with the key difference being 'time' when it comes to managing things long term.

Option 1 : Static Site Generators

I've historically been super fond of static site generators as they are low overhead, easy to work with (usually) and create static files that are easily hosted by a web server. There is nothing to hack, there is no fuss with the tech side and they are usually super plugable. They also pair nicely with the leaner tracking packages that help track website visitors and the like.

Hugo combined with GoatCounter is by far my preferred option in this space. They are both easy to deploy, manage and use over time.

Unfortunately I don't want to have an ssh session open, git repo with the sources, etc as I'm optimizing for time and 'thinking' these days. So I needed an alternative.

If I had more time and energy available for writing blog posts I'd 100% have deployed Hugo + GoatCounter. Unfortunately I just don't have the ability to manage a static site generator based site properly at this point. Doubly so if you count my desire to keep it inside git, have it generated on the server hosting the files, etc.

If you're OK with the overhead, this is definitely the easiest option to self-host and has a super small footprint for hackers, resource needs on the server and more.

Option 2 : Full Blog Platform

In the past I have looked at full blog platforms like WordPress but usually skipped them as they tend to have requirements I'm not willing to deploy in production. I sure as hell am not deploying WordPress but I am willing to entertain deploying other options. Node.js can also find it's way back to the dumpster fire it crawled out from underneath.

During my research this time around I noticed that Ghost is still maintained, used by big organizations and is officially containerized. I also noticed that Matomo is still widely deployed, maintained and overlaps with Ghost for database requirements (MySQL/MariaDB).

Upon further investigation I realized that I may loathe the MySQL/MariaDB requirement but it can run in a container, is a shared dependency of Ghost and Matomo and is pretty simple to backup. I may not like it as a database (yay problems for programmers!) but it's got zero bearing on me running someone elses software.

Ghost and Matomo also have web interfaces. Both are simple to use UI wise and less fiddly and few requirements. I can also work with both easily from my phone or laptop when I'm not near a 'real' computer.

If you're optimizing for time and simplicity of editing the Ghost + Matomo option is quite robust and definitely worth investigating.

My Choice

Given the cost/benefit ratio of time/utility/simplicity I ended up deploying Ghost + Matomo. I wanted to reduce the pain required for writing a post, an easy to use option on my phone/laptop and open source which made the choice clear. I went with MariaDB which is more open source ethos and they do a much better job with sane defaults than the MySQL stuff in my experience and I can be OK with it as a dependency since it's not my code using the database.

I also deploy my services with Docker behind Traefik on a small[ish] VPS instance on Digital Ocean. Both Matomo and Ghost having official containers made it really easy to deploy the software without having to get creative in any way. I wrote a couple quick deployment scripts, logged into the admin interfaces and was on my merry way.

The longest part of the process was finding a theme I liked, buying it and tweaking it to my specific needs. That wasn't terrible but it definitely sucked up a bit of time as part of the initial deployment process. Thankfully this is something of a 'one off' problem and even in the future if I need to make tweaks I know where to look in the theme's code.

So far I'm quite happy with the results and should be writing more. This has been a major improvement to what I've had setup in the past and the lack of time/thinking involved is amazing.

Hopefully I'll be able to manage some more regular updates and posts this time around.