So I have been running a fair amount of selfhosted services over the last decade or so. I have always been running this on a Ubuntu LTS distribution running on a intel NUC machine. Most, if not all of my services run in a docker container, and using a docker compose file that brings everything up. The server is headless. I connect over ssh into a tmux config so I am always ready to go.
Ubuntu has been my stable server choice over the years. I've made the upgrade from 16, 18, 20 and 22 LTS release and everything has kept working. I even upgraded the hardware (old NUC to a new NUC) and just imaged the disk from the old one onto the new machine, and the server kept chugging along quite nicely, after I configured the hardware (specifically the Intel QuickSync for hardware transcoding in the Plex container).
Since Ubuntu has been transitioning from a really open community driven effort into a commercial enterprise, I feel it may be time to look at other distributions. On the other hand, it will require a fair amount of work to make the switch. But if it needs to be done, than so be it. I guess I am looking for opinions on what Linux distribution would fit my particular use case, and am wondering what most of us here are running.
TLDR; What stable, long term supported Linux distributions do you recommend for a headless server running a stack of docker containers?
Debian. I don't see much benefit of Ubuntu LTS compared to plain old Debian. It's exactly what you wanted.
Alternatively, AlmaLinux is a good choice if you like Red Hat stuff (RHEL clone), but the difference between Ubuntu LTS and Debian would be almost not noticeable for you I think.
And I would agree. I've been using Debian on my VPS with docker-compose etc for years. Would recommend it, too. And it's pretty similar to what you have now. There isn't much needed to swich around or learn.
And it is the textbook example of a successful, community driven distro.
It seems to be the most logical move to go from Ubuntu to Debian indeed. As I understand it maintains the core Linux system as I have it now (systemd / apt / stable kernel) while truly community driven. I have to look into transitioning into the latest stable Debian release.
Debian has the advantage of not using snapd like Ubuntu does. You have to not only remove snaps but also instruct the package manager not you pull in snaps as dependencies and not to favor snap packages.
I have fond memories of Ubuntu being my first distro many years ago but pushing snaps onto users to compete with flatpak is a nuisance.
Debian is community run, which often means all changes and features get implemented because the community wants that, not some corporation. One notable example of that is Snap.
Also, I found (minimal install) Debian a bit more minimalist than Ubuntu server, which is great imo. I just want the bare minimum for my services to work, and pretty much the only thing I expect from my server to have is SSH and Docker.
Debian, set and forget.
Being a server you don't need the latest version of any software and Debian is timely in security patches.
use unattended-upgrades and forget about what is running your stuff.
Yes, I am running unattended-upgrades, and basically my current server is running 24/7 just fine! It is indeed like set and forget already. More reason to move to Debian!
For your use case, debian. Ubuntu is based on it, it's stable, it'll feel like home.
I personally use Gentoo (since you asked what we all use), but based on your reqs, you wouldn't wanna use it. And I'm probably in the minority anyways.
OpenSUSE MicroOS or Fedora CoreOS. If you'll be using containers you'll have a great time.
If you don't want to deal with transactional systems, then there is literally nothing I'd rather use than Debian.
Debian, all the way. I've got both ubuntu (made by my predecessor) and debian servers at work, and as far as maintenance and administration, they're more or less identical. The one thing that sometimes catches me off-guard is that sudo is not installed by default, and you have to su - into a root session.
That's actually a choice you're offered during Debian's interactive install. When you're offered the option to set a root password, if you leave it empty the system will disable direct root login and instead give your first normal user sudo access.
Dude the guy is running on system with restricted resources and you're suggesting the most bloated and prone to fail thing ever.
The OP would be way better with Debian + Cockpit (also provider a webUI and virtual machine manager) or Debian + LXD/LXC (containers + VMs, optional webUI). Both of those solutions are way lighter and won't mess your base system.
It's a NUC so sufficiently poweful. Proxmox isn't fat by any means. If you run your stuff in containers then Proxmox (I aways install it on top of Debian) is your hypervisor is your base system. You typically don't install stuff on your hypervisor, though I do some very select things.
Unraid is the GOAT when it comes to being headless for docker. They know how to walk the fine line of "this is too much. It's bloat," and "this is minimal and bare bones." I seriously can't hype them enough, and can't do justice to describing their ease of use.
I prefer Fedora Server. It comes with a lot of nice integrations into more enterprise/centralized Linux administration and management tools. A lot of these are FOSS so if you like infrastructure, this is a really good way to take an easy step up.
If you don't want to be on the bleeding edge and want a distro with longer support, CentOS Stream isn't bad. Sure, there was some controversy surrounding it, when Red Hat killed the old CentOS. But ignoring that, the distro itself is pretty good and stable.
Personally I prefer Rocky linux. Default to using SElinux which I also like. not a big fan of debian though as things are quite old and sometimes outdated for my needs.
I wouldn’t specifically say nixOS is stable in the same sense debian is but yes, it can totally handle this use case. I mainly run k8s on it, but a few home machines run docker (or, rather, podman) containers.
A thing about nixOS is that quite often you won’t need containers at all and would be better off without them, managing your apps as part of the system state as a whole. I only do that because I can’t be bothered to properly switch to nixOS services for ELK (which is supported by nixOS).
It's a very stable solution in general and usually ends with a configuration that either doesn’t apply at all or applies with no issues. Gitops included for pretty much free. It requires understanding nix, and it can be tricky, but not overly tricky.
All and all I haven’t had an Ubuntu in homelab for two years now and can’t be happier about that.
Still a few Ubuntu Server stragglers here and there, but it works quite well as long as you keep your base config fairly lean and push the complexity into the containers.
Documentation tends to be either good or nonexistent depending on what you're doing, so for anything beyond standard configuration but it can usually be pieced together from ArchWiki and the systemd docs.
All in all, powerful and repeatable (and a lot less tedious than Ansible, etc), but perhaps not super beginner-friendly once you start getting into the weeds. Ubuntu Server is just better documented and supported if you need something super quick and easy.
Since you run everything in docker, I guess you have experienced the benefits of containerization. So why not leverage that for your host too?
Fedora IoT is a container-based host that runs on your hardware, with a focus on edge device deployment.
https://fedoraproject.org/iot/
I have it running on two servers as well, and it works great. The only thing I changed is that I layered docker on it instead of using podman, because at the time I had trouble getting my reverse proxy working properly over ipv6
I also moved to Debian after years of using Ubuntu Server LTS. No problem so far on those servers for container workloads, the small ones run docker compose, the medium ones run k3s, and a small cluster runs rke2.
As everyone said, debian. I use it for my mail server, the docker server, podman server, matrix, headscale. On docker I also have nvidia drivers for hardware video decoding in jellyfin.
Debian. I was in a similar boat to OP and just a couple weeks ago migrated my almost 8-year-old home server setup from Ubuntu LTS to Debian Stable. Decided to finally move away from Ubuntu because I never cared for snap (had to keep removing it with every upgrade) and gradually gained a few smaller issues with Ubuntu. Seems good to me so far.
I considered RHEL/Rocky but decided against them largely because I wanted btrfs for my rootfs, which their stock kernel doesn't have, though I use a few Red Hat developed tools like podman and cockpit. Fedora Server and the like have too fast a release lifecycle for my liking, though I use Fedora for my desktop. That left Debian as the one remaining obvious choice.
I also briefly considered throwing a Debian VM into TrueNAS Scale, since I also use this system as a ZFS NAS, but setting that up felt like I was fighting against the "appliance" nature of what TrueNAS tries to be.
My 4 host machines run debian (proxmox). I have a lot of different guest flavors running though, debian, fedora, rocky, one old guest still running Ubuntu and even a mint sandbox machine.
I probably have a bit more complicated self host than others because I am using it both for my useful internal services (jellyfin, git, pihole, etc.) I also run a whole lot of services for learning, such as kubernetes and dns. Plus a whole lot of other mostly useless stuff that I only use to test different architectures or automations that come in handy as an SRE.