When I first started self-hosting my blog, I was using a 2010 MacMini running Mac OS X 10.6. When Apple released 10.7, it did away with the server edition and instead replaced it with an app that didn’t work. That forced me to migrate my blog to Linux. I used Ubuntu Server LTS and it worked very well. However, I didn’t utilize any automation so whenever I wanted to do maintenance on or rebuild my server, I had to do so manually. This meant that maintenance didn’t get done when life got too busy. Over the last year I’ve been slowly migrating my manually built infrastructure to fully automated builds using Ansible. While I have a number of grievances with Ansible (YAML is an awful automation language and whoever decided to use it should be crucified), it is the least awful automation system that I’ve tested.
As with any major project I started with the easy things. First I automated building my DHCP and DNS servers. Then I moved on to automating the building of my VPN, NAS, and so on. I finally got around to writing an Ansible playbook to build this blog.
Previously I followed conventional wisdom that servers should be run on long-term support distributions. But I started to question whether that wisdom was appropriate for what I do. Whenever I had to upgrade the server running this blog from one Ubuntu LTS to another, the upgrade itself went well. But I always ended up having to manually fix a number of things that broke due to the significance of the changes that occurred between the two LTS releases. Those breakages often weren’t trivial to fix. They would eat up a lot of my time. So I started to experiment with more bleeding edge distros. I settled on Fedora Server since I already run Fedora on my laptop and have become familiar with it. Major version upgrades haven’t resulted in major breakages. When something does break, it usually takes a minute or two for me to fix.
So this blog is now running on Fedora Server 34. And I can rebuild it by issuing a single command.
I’m guessing there will still be a few issues that need to be resolved. I changed quite a bit on the back end so I’m expecting a few breakages here and there and I’m sure I’ll have to make a few performance tweaks (not that you’ll likely notice issues regarding performance since my Internet connection sucks). But the site largely appears functional.