More Server Migration Adventures

A server room
A stock image of a server room, since I don’t know what the server room my VPS is hosted in looks like. Image by Elias from Pixabay

The Upgrade Treadmill

I seem to have gotten into the habit of upgrading my server and website configurations every other year. My last server migration blog post was in 2018 and saw me upgrade from Ubuntu 16.04 to Ubuntu 18.04, with updated versions of PHP and a better database and things like that. I didn’t do a post about my 2020 server upgrade, but that was a big one. I switched to a mostly Docker based setup, with Nginx just reverse-proxying all the containers.

My 2020 setup had some enormous flaws though. I had no backup plan – as in, I wasn’t doing any automated backups. As you might expect, I wasn’t doing regular manual backups either. I wasn’t good on backups before the Docker-based setup either, but now it was so much easier to update the software I was running, but that would also have made it easier for a botched update to take everything down. I did make one thing a little easier: I moved a couple of WordPress sites onto a single WordPress multi-site installation. While it is certainly more complex to have a multi-site installation, it also meant I only needed to go to one spot to update themes and plugins which made it a lot easier to remember to do!

My goal with my 2022 upgrade was to make my setup much more robust. I wanted automatic backups, and I wanted to have the entire setup running within Docker so that if I wanted to move to a different provider, I could just spin up a new VPS, install Docker, restore the backups, and update the DNS for my domains. No manually setting up Nginx configurations, or anything like that. Importantly, with the automated backups I would be able to restore my setup with less than 24 hours of data loss if I had to move providers through no fault of my own.

For my most recent server migration I moved to Hetzner and their new US-based AMD-powered servers. The good part is that I’ve now got 4GB of RAM instead of my old 2GB, and it’s a little less per month. The bad part is that, as a Europe-based provider, they bill in Euros. While the credit card I use has no foreign transaction fee, the currency conversion means that my bill is never quite the same from month to month. They also only had servers in Virginia at the time I signed up, so I have higher latency than I had before when I was using a Vultr server in Seattle, though they’ve added an Oregon datacenter since then. (Maybe it’s time to do another server migration!)

The Software I Use

Now let’s get into the software I use:

  • For an RSS reader, I replaced Tiny Tiny RSS with FreshRSS. While it seems things have improved in recent years, the primary developer of TT-RSS was known for being a little hostile towards people asking questions or suggesting improvements. FreshRSS just seemed to have a better community, and it’s a lot simpler to set up too. I pair this with a private RSS-Bridge instance to get RSS feeds for sites that don’t bother to use RSS anymore (boo).
  • I’m using Offen Docker Volume Backup to automatically backup all my Docker volumes daily, weekly, and monthly both locally on the server and to S3-compatible storage. This container also manages removing the old backups to keep the storage from getting out of hand. It feels good to finally have everything backed up in a robust manner.
  • For website analytics, I replaced Matomo with Plausible Analytics. Matomo is trying to be a full replacement for Google Analytics, but that’s just more information than I need or even really want. Plausible focuses mostly on page views, which is all I really care about with my personal site.
  • Of course, WordPress, which powers this very blog, is still the same. In fact, it was one of the easiest things to move to the new server, as there were almost no changes to the configuration. I’ve been using WordPress consistently since early 2011, and off-and-on since probably 2006, so while I’ve considered moving to a static site generator, I like the familiar security blanket feeling that WordPress provides.
  • Vaultwarden also stayed the same. I use it as my password manager, though I’m eyeing Bitwarden’s new unified Docker container that’s in beta as it will likely go through security audits after it leaves beta.
  • I use a neat little tool called Your Spotify to keep track of my Spofify listening habits. It’s like having my own version of Spotify’s annual summary whenever I want it!
  • I added a single-user Mastodon instance at the end of October thanks to the Birdsite’s new owner starting shenanigans immediately – that’s been a bit of an ordeal with its ever-increasing disk usage, though just this week I migrated it to using S3-compatible storage for its media storage and that has solved things, though I won’t fully call it solved until I’ve given it a week or two. Follow me on Mastodon!
  • I use Portainer to view logs and clear out old images and stuff more easily.
  • I’m running Uptime Kuma on a separate VPS with a separate hosting company to monitor everything and let me know via Discord if anything stops working. It’s really a very polished tool and is easy to use while having tons of configuration options.
  • Finally, I use Watchtower in notification-only mode to let me know when a container has an update available. I don’t have it set to automatically update so that I have the chance to read the release notes and make sure there’s nothing I must do besides pulling the new image and restarting the containers.


Overall, I’m incredibly happy with how this server migration has turned out and I don’t foresee any major changes to my configuration in 2024 as things finally just work. I love how good this setup is in comparison to my old one!