🍵️

2025-05-18

Finally Upgraded!

I've mentioned before -- long ago -- that I had upgrades to do on a server I administrate on a volunteer basis.

Each time I've had a few hours and sat down to do it I've run into issues that I haven't had time to fix at that moment. As I've realised that this would need a longer time to do in a single sitting, and that I had to start all over again each time it'd been a couple of months since my last attempt.

I finally decided to just get it done. I dedicated this entire weekend to it, deciding that I would work through all issues and just get it done no matter what.

The issues here were several but they can be summarised succinctly: a lot of the different components had interconnected dependencies and new versions that weren't backwards compatible. This led to a situation where I had to figure out in what order to upgrade the different components in order to not make another of them break in a way that made it a lot harder to upgrade.

There were database settings to change before the database could be upgraded. Meanwhile I had to make PHP upgrades to be compatible with the new database version, but I had to make XenForo upgrades to make sure that the forum was compatible with the new PHP versions.

Official Linode repo mirrors had moved since I last upgraded and I had to figure out where the new ones were; two of them had ceased to exist and the recommendation was now to point those to official Debian repos. Funnily enough the page that described the first part of this process suddenly became unavailable half way through my upgrades, saying I was now unauthorised to view it. Strange.

And what's up with these pages that allow you to download official packages but don't use real links? I wanted to download the latest mysql-apt-config package directly to the server. I found the link, copied it, used curl from the server and got... nothing. Apparently the button that showed the URL when I hovered over it wasn't a direct link, but connected to a JavaScript event handler that gave me the download. Works great in my browser, but not with curl. I ended up having to download it locally and move it to the server. A step that is objectively unnecessary.

I worked through the process on a clone of the machine first, ironing out all the issues and taking notes. Then I set a firewall on the original sever, backed it up, and attempted to re-do it there. I still made a few mistakes and had to restore that backup twice and start over; wanting to not go through all the investigations and analyses again I'd skipped those steps in my notes and had forgot something important too. That took almost an entire extra hour each time!

After all the investigations, the waits, the fixes, and more waiting, and an unexpected visit that stole some time, I was finally done. 12 hours after starting the process. Worth every minute! But please don't force me to explain the whole thing in detail. I just don't have that sort of energy left 😂

All in all a great success. Mistakes were made, additional experiences added to the ever-growing mental toolbox, and it took less than half the time that I had allocated for it. I'm happy that I had reserved the full weekend. No pressure there.

One thing I really love about volunteering for this forum is that everyone understands what "volunteering" means. Nobody takes my time and work for granted, everyone is fine with the occasional service interruption, and I get a lot of appreciation for the work I do.

No breaking changes are planned for any of the involved components in the near future. That means I can actually take an evening here and there for regular upgrades.

Nice.

-- CC0 Björn Wärmedal