New Site

Posted by Thomas Gideon on 28 November 2021

Over the last few months, I have been working on my private servers to update them to more modern tools and to make them easier to manage.

For this site, I decided to migrate off of WordPress and onto a static site generator. I chose Zola as my generator, almost entirely because it is written in Rust. The documentation is pretty good, there are tons of examples and a decent set of themes. If I need to, I can contribute upstream any fixes or features I might need. Honestly, though, WordPress had become overkill.

When I started this site, I ran it directly on a virtual server. Since then I have learned Docker pretty well and adopted it for more of my personal projects. WordPress in Docker was an improvement a few years ago, lightening up the effort to maintain those instances. Over the years, I used my self hosted WordPress blogs to experiment with different tools, mostly to try to connect them with my social profiles and use them as a single upstream source for my life stream which I wanted to then syndicate out.

Within the last year, I started using Mastodon and continue to look into the current state of the Fediverse. I am happy to continue to adopt more and more of these newer de-centralized and open tools and services. I know you can integrate WordPress into the Fediverse a few different ways. I would rather self host my own social services as a simpler way to own the origin of my life stream. As a long time write and podcaster, I wanted to reserve my websites for long form writing and other forms of sharing that I don't feel fit into something like a micro-blog or media stream.

One thing I did lose with WordPress was a well supported workflow for updating. I create and automate these kinds of workflows all the time as part of my professional life. I decided embracing a new stack for my websites would be a good opportunity to create my own process for updating my sites.

Somewhere, I read a suggestion for static sites that building everything into a Docker image could be valuable to keep site updates very simple. Because of my professional work, I already know Docker very well. This past week, I started looking into options for a private Docker registry. The registry at Github looked interesting but I have started rethinking my relationship to that site for personal projects. Despite some better behavior by Microsoft over the last few years, there are still glimpses of the old Microsoft in some of their decisions around how they manage Github.

I broadened my reading to understand what other options are available. Turns out, I found a pretty simple answer. The fine maintainers of Docker offer an image with a simple to setup registry. I found a couple of decent articles to help with writing up a docker-compose file and to add authentication to my registry. I already have an excellent nginx reverse proxy setup that automates integration with Let's Encrypt. Turns out that setup just worked with the Docker registry image, making all of my communications with my new registry secure without needing any additional configuration.

I now run three virtual servers. The first is my mail cluster that I built thanks to the excellent Mailu project. The second is for my application services, for example a Tiny Tiny RSS instance and a taskwarrior server. The third is still a work in progress but basically will host all of my static sites when I am down migrating off of WordPress. Each server only has Docker installed and all of my configurations are stored in source control. This is my approach to disaster recovery and host operating system updates. I can quickly spin up a new virtual server, install Docker, then re-deploy sites and services for that node. I can scale each node based on what I am running on it, for example a lighter server for the static sites and a more powerful one to keep my mail flowing smoothly. I may even break up the app server node, depending on what new services I experiment with and decide to keep. I find this approach easier to think about, especially that each app or service doesn't need any specific configuration. Everything needed is either baked in or simply configured with a declarative docker-compose file.

To be honest, everything I described is also yak shaving. My real priority is to write more on all of my web sites. I didn't really need to overhaul my little virtual fleet in order to do that. However, every post I published via WordPress felt like more inertia for staying on that platform. Rationalizing my sites and services into tidy, managed containers on a small set of nodes is good practice for parts of my profession, in particular the devops skills I've added alongside my decades of experience developing applications and services.

Where these updates are more than busy work is how they encourage me to use the tools I configured and pay for. I often struggle to write mostly because I still find the process a bit intimidating. I have learned in the last few years that embracing my enjoyment of technology, even when it may involve more effort, is a powerful motivator to overcome the mental barriers I sometimes encounter when I want to write. I pay for my own hosting, another powerful motivator to configure everything how I like it best and to always be thinking about how to get the most benefit and fun out of my virtual servers.

You've no doubt noticed that this site is pretty bare. I do have an export of the original WordPress site and found a tool that I think works well enough to convert old posts over into files compatible with Zola. I will continue to work on migrating over old content I want to keep but wanted to get the new site up and running, first, so I would no longer have even a trivial, arbitrary excuse not to get back into the writing habit here.