If you've ever stuck with something because it was familiar, and not necessarily because it was good, then you'll understand my relationship with Ubuntu Server. For five years straight, it ran most of the services in my home lab, which included a handful of self-hosted apps, containers, and VMs. I've always found Ubuntu's LTS releases to be stable, predictable, and completely boring, with "boring" seeming like the right word to describe an ideal production server. After a week on Fedora, I realized that I'd been mistaking stability for stagnation.

Little things about Ubuntu started to bother me over the years. The OS has been gradually absorbing packages into its Snap ecosystem, and there's always a gap between what Ubuntu Server is running and what's actually current. The kernel version and core packages are frequently lagging behind, and the disparity keeps growing as an LTS release ages. I often had to resort to maintaining separate installations of software that weren't tied to the package manager, just so I could get newer features. For many packages, I was no longer using Canonical's default repos for updates, since they were either outdated or ported over to Snap.

Fedora releases new versions every six months

The release cycle isn't as reckless as I'd thought

When I put up a new Fedora instance to handle a secondary project and realized that I didn't need to deal with manual upgrades to outdated packages, I made the decision to finally ditch Ubuntu Server. Ubuntu LTS is still superior for that "set it and forget it" stability, but it starts holding you back when your services outgrow the repos.

It's easy to assume that Fedora is unstable when you compare it to Ubuntu's release cycle and EOL (end-of-life) schedule, but it's not true. Fedora isn't Arch. It's not a rolling release, and it doesn't ship packages the same week they go upstream and hope for the best. Fedora releases a new version every six months, and it's built on a contemporary kernel that reflects the current Linux ecosystem.

Fedora's EOL schedule is 13 months from the time of release. That covers one full cycle plus a little extra. It's short enough that it keeps your system fresh (current with the times), but long enough that you won't constantly be badgered to update. Upgrading is also very straightforward: one dnf command and a reboot will do the trick, as opposed to Ubuntu's more drawn-out ceremony to switch to the latest LTS or interim version.

The update cadence feels more like a feature than anything else. It forces you to keep your system modern. Ubuntu's LTS releases are supported for five years, or up to 15 years on certain plans. For some specific use cases, that might be a good thing, but I can't see a scenario where I actually want to use the same distro version for half a decade.

Ubuntu's upgrade process is its own odyssey

A misadventure I wasn't ready for on a Tuesday morning

No one wants to be the guy who has to bring an Ubuntu server up to date if it's been in service for a few years. The do-release-upgrade process works (usually), but it's a long, interactive affair of babysitting config file conflict prompts and hoping that your services make it to the other side unscathed. I once had an init file overwritten by a package default and had to spend the next few hours tracking down the culprit. These woes are too common on Ubuntu upgrades.

The upgrade process for Fedora is much simpler. Running dnf system-upgrade download --releasever=X is all you need; the process is mostly non-interactive and you only ever upgrade one version at a time. My last few Fedora upgrades were just: download, reboot, done. It's nice not to dread full-system upgrades anymore, as I can just treat them as part of the ordinary maintenance I do. For the extra paranoid, Fedora offers atomic versions that make upgrades even less likely to go wrong, since you won't need to worry about configuration settings getting wiped my updates.

When your Ubuntu install jumps two or three years ahead with a full system upgrade, the likelihood of packages breaking increases. The jump between versions carries increased risk, which is mitigated on Fedora, where smaller updates occur more frequently. This alone is a big reason why I developed a small fear for LTS version shifts on Ubuntu, but have yet to lose sleep over a Fedora one.

Where Ubuntu's approach wins

There's still a solid use-case for Ubuntu Server

I'd still pick Ubuntu Server over Fedora any day of the week in environments where stability is paramount. Downtime is expensive in certain industries or on specialized systems, especially if there's not a team standing by to address any issues that crop up. For those situations where "this server needs to run for years with nobody touching it," Ubuntu fills the role perfectly.

Deals

Save on servers, desktops, and work-setup deals now

Explore discounts on computers and work-setup gear to modernize your home lab or server stack. Find savings on compact servers, NAS storage, SSDs, RAM, network switches, UPS units, monitors, and docking accessories to build a reliable setup without overspending.

But for a home lab, a personal production stack, or any environment where downtime doesn't equate to lost money, the case for Ubuntu LTS grows thin quickly. Fedora's update cadence isn't a liability in these scenarios because there's nothing to fear if something breaks. Nothing dramatic usually happens anyway, but there's always a small chance that new versions of software conflict with existing services.

Ubuntu was never the right pick for a home lab

Ubuntu Server gave me five years of comfort and predictability, but I realize now that those aren't my priorities in a home lab. Fedora gives me a modern distro that I'm not embarrassed to look at, and I don't need to apply manual updates just to keep things current.