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
debian. stable, reliable, easy to learn
If you’re using containers for everything anyways, the distro you use doesn’t much matter.
If Ubuntu works for you and switching away would mean significant effort, I see no reason to switch outside of curiosity.
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.
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.
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.
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.
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.
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.
Proxmox with Debian containers.
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.
If you run your stuff in containers then Proxmox (I aways install it on top of Debian) is your hypervisor is your base system
I believe you’re missing my point. Cockpit also works as an hypervisor for most people, a very light and stable one, besides…
If you’re running containers on Proxmox then you’re running LXC containers… why not just use LXD/Incus (also another hypervisor) to manage those containers that is considerably lighter, comes by default in the Debian repository, was designed to manage LXC container (not hacked around like Proxmox was) and isn’t mostly made by a for profit entity that sometimes likes to hold important patches on their subscription-only repositories? Or constantly nag you to buy a subscription?
I hear you, but Proxmox does a great many more things than just run containers. Admittedly, many selfhosters won’t need these.
LXD/Incus also does clustering, storage management, has a WebUI etc.
Any small Linux distro would do. Just install Docker and maybe Portainer (as container itself of course) if you want a web UI.
Fedora Server, Rocky Linux, and/or Free RHEL dev license. That’s what I use for all of my stuff.
For containers I use podman kube. For storage I use ZFS and VDO.
I use ubuntu because my provider has that by default. It’s not my favourite distro these days, but gets the job done.
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\ubuntu vm on proxmox. Then you can snapshot the whole deal and take easy backups of everything using proxmox backup server.