BMSworld Dev Log 06/05/26: When “It Still Works” Stops Being Good Enough
Alright, time for some honesty.
This site is currently running on Ubuntu 18.04 LTS. Yes, really. It gets worse. In a VM ontop of WIndows Server 2016 – also out of support. The Linux install is not just old, its been sitting in Extended Security Maintenance for three years, and even that safety net is well past where you’d want to be relying on it. Same win Windows Server…
For a long time, that was fine. The site stayed up, things worked, and I chose stability over change. If something broke, I patched around it. If something needed a tweak, I found a way. It was never pretty, but it kept BMSworld online.
That approach has finally hit a wall.
The Current State
Right now, the server is running PHP 8.2.1-fpm. Getting there was not clean. Ubuntu 18 does not officially support this version, so it is running purely thanks to external repositories and a bit of Linux trial and error.
It works… mostly.
The problem is cURL.
One of the site’s core plugins depends on it, and at this point, I cannot get cURL installed in a way that plays nicely with the current PHP 8 setup. On a modern system, this would be a simple package install and done. Here, dependencies do not line up cleanly, packages conflict, and everything starts to feel like it is being held together by luck.
I can get PHP 7 with cURL working without too much effort. That path is stable, predictable, and technically solves the immediate problem.
It is also not secure, not future-proof, and not something I am willing to roll back to.
So that option is off the table.
Where Things Start Breaking
This is the part where running an aging system really shows.
Plugins are starting to fail, not because they are badly written, but because they expect a modern environment. Features that rely on cURL simply do not function. Some things degrade quietly, others just stop outright.
On top of that, running PHP 8 from external sources on top of an OS that was never meant to support it creates a fragile stack. Updates are risky, compatibility is uncertain, and every change has the potential to knock something else loose.
It is not one big failure. It is a growing collection of small ones.
Why I Delayed the Upgrade
Uptime.
That has always been the priority. BMSworld is an archive, a resource, and a long-term project. Keeping it available mattered more than chasing the latest stack.
So instead of upgrading, I patched. I worked around limitations. I made things fit where they probably should not have.
And to be fair, that worked for quite a while.
But there is a point where maintaining the workaround becomes harder than fixing the root problem.
I am well past that point now. The Website turned 10 years old recently – and the reflectyion on that was… damn. Why am I still back here? again, Uptime.
The Inevitable Conclusion
It is time to upgrade the OS.
Not a quick patch, not another workaround, but a proper rebuild onto a modern Ubuntu base with native support for current PHP versions and modules like cURL working as expected.
This is not going to be a small job. There are migrations to plan, configs to rebuild, and a live site to keep in mind the whole way through.
There is also a non-zero chance that something breaks along the way.
What Comes Next
The goal is a clean, modern environment. Something that does not rely on external repos just to stay current, and something that can support the site properly going forward.
I will be documenting the process as I go. The good decisions, the mistakes, and the weird edge cases that only show up when you are upgrading a system that has been running this long.
If the site goes down briefly during this process, that will be why.
It has been a long time coming.
Now it is happening.