I want to reset my server soon and I’m toying with the idea of using a different operating system. I am currently using Ubuntu Server LTS. However, I have been toying with the idea of using Fedora Server (I use Fedora on my laptop and made good experiences with it) or even Fedora CoreOS. I also recently installed NixOS on my desktop computer and find the declarativeness pretty cool (but I’m still a complete beginner) and could imagine that it would fit well into a server setup.
I have quite a few services running on my server, such as Nextcloud, Conduit (Matrix), Jellyfin, etc. and all in containers. I would also rather not install programs without containers, because 1. compose is super easy to maintain and set up, 2. it remains very clear with containers (and compose) and 3. I believe that containers are more secure. But since I also want to make the services inside the containers available, I currently have Nginx installed as a reverse proxy (not in the container, but on the system) and always create certificates with certbot so that I can use HTTPS encryption.
In the paragraph above I actually described exactly the use-case of Fedora CoreOS, but I have no experience with the system and how it works. That’s why I’m still a bit hesitant at considering the OS at the moment. I can imagine that NixOS with its declarative nature seems well suited, since, as I have heard, you can configure containers as well as Nginx and with Nginx also https certificates declaratively. But I could also use a base system like before (Fedora Server or Ubuntu Server) and simply install podman, nginx and certbot and manage everything that way.
Have you had any experience with Fedora Server, Fedora CoreOS, NixOS or a completely different operating system for servers and what are/were your impressions with this setup? Or do you just want to share your knowledge here? I would be delighted.
You can also use container within NixOS and AFAICT even declare the containers which should be running. Also NixOS is sad to be stable, or am I missing something?
Yeh, but I already have compose files and ansible things to set up a server.
And I’d have to figure out how health checks and depends-on works for that.
I’m sure it would give me an amazing experience, but I have all the tools and I can run them in isolation (ie I can install docker on any os I can SSH into)
Just that compiling packages on a server is not ideal.
Nixos will use/download cached binaries that are available in its repo. It has one of the biggest repositories of any Linux distro. It’s on par with Arch with around 90 thousand packages.
Unless you are doing something custom or niche, your nixos won’t have to compile anything.
Are all those packages available in binary format? Not familiar with Nix but that’s certainly not the case for Arch. Arch has 85k packages in the AUR as source recipes but not as binaries.
I still think Debian makes a better use case for a server since it provides everything as binaries.
If you’re going to use binaries what’s the point of using Nix anyway? The declarative aspect is nice in an abstract sort of way but you can achieve a system deploy or restore just as fast by installing a vanilla system and a few config files.
Yes, all packages in nixos are available as binaries to download.
The comparison with Arch was just in terms of number of packages. Not the binary availability.
At the bottom of this page, they say that binary cache is currently at 120TB. https://nixos.org/community/index.html
If packages being available as binaries is the main criteria, nix has you covered there.
The biggest issue for most people with Nixos is the learning curve just because it’s so different.