I can no longer remember which aircraft it specifically was, but if memory serves, there was a helicopter that had such a tendency to rattle that it was often referred to as "a thousand parts flying in loose formation".

Which brings me to Linux.

Desktop Linux, courtesy of distributions such as Ubuntu, Mint, ElementaryOS, and Pop!OS, has gotten a lot better about making sure updates didn't break everything. On the server side, things can be dicier.

Yes, this has to do with the site upgrade.

Unless you're paying for a hosted "pro" version, managed by a bunch of guys likely even more progressive than the Wordpress team, the closest thing you have to a packaged configuration is a setup like the digital ocean prepackaged droplets. Node.js, nginx, the database, the ssl renewal scripts, and of course ghost all need to be installed - or updated - separately. Unfortunately, while ghost does a pretty slick job of tweaking the nginx config, hooking into the database, and so on, it does not do a good job of maintaining dependencies. It may warn you some are out of date, but doesn't provide a means to ensure that compatible versions are automatically put in place, with the proper settings, and nothing critical being overwritten in an incompatible way.

That new version of Ghost - which they admittedly update regularly and haven't crufted up yet - needs a newer version of Node.js? Upgrade it yourself!

The upshot is that somewhere in the process, despite reporting no errors, my SSL certs working, and everything else apparently working, I did not think to post an article with an uploaded image as a test.

Oops.

With the upgrade, some critical, non-obvious link between ghost and nginx - the web server itself - broke. As a result, the web server would not accept uploaded images/files.

Permissions were correct, the built in "doctor" diagnostic found nothing wrong, everything else was working, and so on. Yet images would not upload, and the related log entries kept popping up. And the various answers to be found referred to the very things I had already checked.

So, once again, thank God for backups. And the ability to quickly spin up a new virtual machine. A ghost install, a couple rsync commands and a database import later and everything was back up and running on the latest version of ghost. I'll have to re-establish backups of course, but that's trivial at this point.

I didn't even lose the comments this time because I had learned that importing a database via the GUI added them to the configured database and re-designated all of the unique ID's that node-bb used for commenting integration. Simply importing them into a replacement database doesn't.

And yes, I know, Wordpress has for several years now been at the point where updates could be trusted to work. Usually. Unfortunately my desire to hunt down and maintain all the modules needed to secure, manage, and back it up, never mind dealing with its kitchen-sink UI, is nonexistent.

This is more in the way of an observation than a gripefest. I could likely spend less overall time fixing the blog and maintaining it with Wordpress, but it actually want to spend time at a lower level, tinkering with the backend systems, with a page templating system that is as straightforward as Wordpress's was ages ago, and learning how these components are wired together, without quite going back to the days of writing my own CMS in php/ mysql/ etc. running over Apache.