49
votes
What operating system do you run your home servers on?
I'm going to set up my first home server with an Intel NUC, but I can't decide what OS to use. Ubuntu seems popular but I like Pop!_OS and am not sure if that would be a good option. Then there's TrueNas and Unraid, but as a newbie, what's the best choice?
I'm also just curious what everyone else is using :)
Edit: Thank you for your great responses!
I try to use what I'm familiar with, so all my servers are just stock Debian.
It's tough to beat. My first introduction to Linux was Ubuntu back in 2007, which I dabbled on for a few years before switching to vanilla Debian. Haven't looked back since. It's tough to beat its widespread support and usability.
Every server that I setup and have control of (be that at home or work) gets Debian. For me , it just has the right balance of stable, secure and lightweight. In this context, I don't need bleeding edge updates or packages. Most of all, Debian is so standard in the server world, that just about any kind of error or misconfiguration I can encounter is littered with forum and stackoverflow topics.
For my desktop, I run Fedora. I like the balance of having a rolling release distro with a good amount of stability. It's a popular and well supported distro, and if I break something beyond the point of economical repair (i.e it would take too long), I can just nuke it and reinstall, getting back to where I was in around 30 minutes from nuking.
Ditto. If you want to use a computer, instead of fucking around with it, Debian is really hard to beat.
(Of course, there's a time and a place for fucking around with computers instead of using them. But that time isn't "always" and that place definitely isn't "everywhere".)
However, to answer OP's question:
…whatever you're most familiar with. AFAIK, Pop is a desktop-oriented Ubuntu derivative, so Ubuntu server edition is likely to be a good, reasonably comfortable choice. Or, I mean, it's totally valid to just install Pop on your home server. One of the great things about using Linux as a desktop OS is that it's also a server-class operating system, and is perfectly capable of fulfilling both roles simultaneously.
I run Arch for the same reason, but man, Debian's UnattendedUpgrades have me jealous.
Following the same theory, I'm used to arch, so arch Linux it is on all my servers
Second Proxmox recommendation. I originally started out doing everything as VMs since I was used to it from administering VMWare at work, but I've lately been deploying more LXC containers for small internal websites, data collection, DNS servers, etc. and really enjoying it. I mostly selected it for its native ZFS support which was obviously missing from ESXI community edition. Overall it's been super stable.
I do have another server that is running TrueNAS Core but I primarily use it as just a NAS and place backups on it. I do have a secondary DNS running in a jail as a backup in case the primary fails (and then another fallback that runs off my router). Not a big fan of TrueNAS Core VM implementation, but it does ok with small jails and as a NAS. I hear Scale is better, but never bothered to pursue learning more about it since Proxmox runs just fine
One thing I have ran into on proxmox is that anything GPU-related is a little bit fussy vs. virtualizing/containerising or running on bare metal.
Main thing was I wanted to spin up quick experimental LXCs for stable diffusion or the like, but it was so much config on both the proxmox server and in the LXCs themselves that I gave up.
True, there's a lot that can go wrong with this. You have to make sure your motherboard supports the correct features to "forward" devices to a virtual machine.
I initially had some issues forwarding my Host Bus Adapter to a virtual machine, it turned out I installed it in a slot that made it use the PCI lane that the GPU was also on, and that caused issues.
After many years of just using Ubuntu server, I switched to Proxmox last Februari.
Having everything in a separate container is pretty neat. The entire thing runs so smooth.
Absolutely love Proxmox. I've been running it for years, starting out with a cluster of salvaged trash, now running on dedicated server hardware. I was already pretty comfortable with debian, so the learning curve was for me was mostly for "advanced" storage options.
Keep a up to date backup of your containers and VMs, and maybe even basic proxmox config files and its easy enough to get everything back up and running if (when) I make something kick the bucket.
Since you're coming in new, I'd advise learning Docker. For my homeserver, all services except for direct fileshares are deployed via a
docker-compose
file. This keeps system dependencies minimal, and thus choice of operating system matters less. Linuxserver provides a lot of great resources.If you're looking for something a bit more appliance-like, I kicked the boots on Yunohost a bit ago, and it was pretty good. Not sure how good the backup solutions are, but if you're willing to work within the constraints of the system its a good starting point.
Absolutely have to second this. Installing server software is so easy with docker compose, and Linuxserver has a ton of great images.
I really like this list of server software, most of it can be deployed with docker: https://github.com/awesome-selfhosted/awesome-selfhosted
Another great resource for docker compose: https://github.com/Haxxnet/Compose-Examples
And, honorable mention: https://github.com/alebcay/awesome-shell
I spend all day at work building cloud native software following best practices and writing documentation for it all. The homelab is a good bit more relaxed. Docker helps keep me maintain all my home hosted services very easily.
I have a server running Proxmox, which runs a number of virtual boxes for me. A few of those are dedicated Ubuntu Docker hosts.
Using those LinuxServerIO compose files feels like cheating.
It takes literal minutes to pull some images, pipe in some network storage, edit a config file, and stand up a turn-key service.
So you have the benefit of having a homelab and learning some skills that are fairly in demand at the moment. And once you learn Docker, there are a ton of directions you can go with specializing.
What is the correct way to combine compose files? I've just been appending new services to the end of mine but that feels brittle. Are you supposed to just keep each one separate and pass them all as args? Keep a separate shell script?
I have done it both ways, but ultimately I settled for just one big compose file.
Much how its easier to read 1 book instead of 15 short stories.
My home "server" is a thin client running a pi-hole. I put arch Linux on it. I do not recommend that unless that is what you are very familiar with.
For me it's pihole on an old Dell Inspiron mini from the early 2010s, running Debian.
I use Unraid for the media server I built last month. It's a fairly easy way to use Docker and manage your drives
I'm currently set up with NixOS with k3s installed for kurbenetes. Nixos is nice since you install and configure everything by defining a configuration file and building it. Machine ever dies, you have configs backed up and it's quicker to get back and running.
Edit: fixed typos
I am also running an immensely overcomplicated NixOS server, with multiple IPs, some for WireGuard and some for the public facing services I have like Matrix and SMTP. Absolutely the best server experience I’ve had.
NixOS is pretty sweet. I've been running stuff on it since at least 2019. Sometimes it can get difficult if you have to override versions of packages and stuff on it due to bugs on the standard version and such, but it works wonders for easy standard setups.
Apologies for my ignorance, k3s?
Lightweight Kubernetes. Production ready, easy to install, half the memory, all in a binary less than 100 MB.
What advantages do you get from using k3s rather than just doing it on nixos?
Hosting apps on kurbenetes allows you to scale with multiple machines and achieve high availability. Unfortunately I lack funds for that right now but when I do the kurbenetes resources will make the transition easier.
k3s is a Kubernetes distribution, not an operating system. Not really comparable.
If kubernetes is about running containers (i.e. well-defined environments for services), the benefit was not clear to me when you're already on NixOS (which defines the environment declaratively) and only have a single server with no availability requirements (my case).
I retired my home server for a Synology, but when I had one it ran Ubuntu.
I'm incredibly aware that this is cooked beyond belief, but I run macOS for mine (also on a NUC, in a Mac IIci case I picked up that had been stripped bare by original owner).
It can be a pain (especially during initial setup) and I run a split between some dockerized applications and some running on bare metal, but frankly I touch Linux boxes for work all day and I really require some separation so that I don't feel like I'm at work when I'm doing dumb stuff at home.
What OS you use depends on your personal preference and what you want to do with your computer. If I were to start a homeserver today, it would probably be running Ubuntu or Alma/Rocky and then I would create virtual machines on that host to isolate the different services I'm running.
Of the options you named, it sounds like the best option for you to at least get started to play around with things would be Ubuntu Server. Ubuntu Server will be "headless" AKA has no pretty gui and is just a command line. There are of course many other options but Ubuntu Server is an easy jumping off point, I use it in my lab to do many things!
TrueNas/Unraid make a lot more sense for a NAS (network attached storage) that would have high storage capacity and were intended to be content storage of some kind, like a media server etc.
After a quick google, it looks like Pop!_OS is based on Ubuntu that has customized GNOME (basically the GUI will be different than default Ubuntu Desktop), which will have the more typical "desktop GUI" experience.
Would a headless Ubuntu server work alongside Plex media server and for me to point it to the Unraid shared network?
To preface, I use Jellyfin instead of Plex so anything Plex-specific my only specific knowledge source is google.
Short answer - Yes, that should be doable.
Longer Answer - Yes, you should be able to install Plex Media Server directly on the Ubuntu Server (headless is generally implied when it comes to no-GUI servers like Ubuntu Server). Looking at this link, it explains what commands you would approximately need to run to get it installed - https://support.plex.tv/articles/200288586-installation/. From there you should be able to direct it to your Unraid NAS from the web GUI address in the install instructions.
Fun addendum - If you are interested in, or know a little bit about docker, you can use a docker image to set things up even quicker. This is not the only option, but I rather like hotio https://hotio.dev/containers/plex/ that you could use to get it setup. If you are unfamiliar with docker than this link may not make much sense, so you may need to dive into docker more to understand how to set that up.
Currently Debian and Ubuntu Server. I run Pop_Os! on a laptop and it works fine but I'm not sure I would use it for a server.
I was on TrueNas Core for years (i.e. FreeBSD), but as I also wanted to run linux-specific server applications on it, I migrated to TrueNas Scale (i.e. Linux). I like the ease of use (as in, easy for someone who’s fairly computer literate, but not quite a sysadmin) and the nice integration of docker into the system.
For a NUC, I don’t think TrueNas is the best solution, though. It requires separate boot & storage drives, and is more aimed at NAS stuff. I guess it depends on what you want to do with it, but I would recommend going with whatever OS you’re the most familiar with.
I just recycled an old computer that already had windows 10 on it. So I'm just using windows 10. It's what I'm most familiar with anyway. I've thought about using Linux, but for right now it's not broke so I ain't fixing it.
...windows 10, but I do some relatively no typical things with my "server", mostly UI automation of windows based applications to jank together "services" from programs never designed to be one.
I’m currently on Unraid and like it. It has a decent library of community “apps” which are templates for Docker instances with the basic variables and setup taken care of. Made for an easier transition for someone like me who is comfortable following a guide for terminal operations but who isn’t a heavy Linux user already.
I like that it makes the disk management easy, has built in notifications, and has pretty decent support in the community (so there are lots of guides for common Docker applications and use cases). Getting the correct split-level for folders in your cache takes a little trial and error (and I still have issues with it), but short of that I would recommend it.
I gave a brief look at Proxmox and TrueNAS Core but ultimately wanted something a little simpler and hands off. Sometimes I wish I had tried TrueNAS for ZFS but switching now would be a pain and Unraid fits the bill for most things.
I'm putting together a DIY NAS and planning to install Unraid OS.
All the parts should be here by Friday/Saturday. Excited to set it up and start data hoarding.
Are there any community apps you suggest?
My firsts apps will probably be Plex and qBittorrent.
Plex and qBittorrent are a great place to start. Binhex and linuxserver are two well-known developers with lots of great applications. I use linuxserver's version of Plex. Binhex has a QBittorrent one with built in VPN (called qbittorentvpn)
I'm a fan of the *arrs for media management, specifically Sonarr for TV. Be sure to check out TRaSH Guides for detailed setup tips and tricks
Binhex-krusader is a good file manager to have around especially if one of the apps gets funky with permissions and you can't access something you need to from a user share.
Tautulli if you want stats on what you watch.
Homeassistant if you like home automation.
Plugins are a little different from apps but useful ones are CA Mover Tuning (adjusts the mover that moves things from your cache disk to the array), Fix Common Problems (useful for file permissions), and Unassigned Devices (useful for formatting broken disks before removing them).
Good luck with your build!
If you use the *arrs, you should check out Overseerr for Plex (or Jellyseerr for Jellyfin). Scrutiny and code-server are some other good docker tools
Fedora Server is what I switched to maybe a year ago. I wanted to give podman (a more open container protocol, compatible with docker) a proper try, and I've actually been pretty happy with it. Very reliable. Not too hard to learn coming from Ubuntu & Debian.
I'm using ansible playbooks to create & start my containers. Cockpit is built-in to Fedora Server, which provides a web interface for all kinds of things, including podman. It's nice to be able to tweak network configuration, browse files, download container images, check on services, etc. all from a web browser.
I run FreeNAS/TrueNAS on on my NAS box and then I have an old gigabyte brix (similar to a NUC) that runs Arch Linux because I like the distro even if it might not be the most appropriate server OS.
If the home server is a little NUC, an OS geared toward storage like TrueNAS or Unraid doesn't really make sense. Similarly Pop!_OS is pretty desktop focused IIRC so not the best either. If you're new at this, Ubuntu Server is probably fine and good.
I'm very confused about FreeNAS now. It's now TrueNAS? But still free? With what limitations?
I've been considering Unraid. TrueNAS' side is confusing.
Originally there was FreeNAS, then they merged that into TrueNAS. The old FreeNAS is now known as TrueNAS Core, based on FreeBSD like FreeNAS was. There is also TrueNAS Scale, which is a newer release that is instead based on Debian and meant to be more of an "all-in-one" OS for both NAS and other virtualization. Both options are free to use, as last I knew only the "TrueNAS Enterprise" products were pay-to-use.
I use TrueNAS Core as the stability that was expected was much more valuable for me, especially as I already have a box running Proxmox so I do not need extra virtualization from TrueNAS Scale.
Ubuntu server running the NAS, Plex, and various web services.
A Raspberry Pi (former 2 lately 4) with Raspbian so technically Debian with an external HDD for storage. It's not much of a server but it fits my needs.
Like you I have ran servers at home off Raspberry pis, but I've literally lost them in the past. Like I can still ping them, but I can't ssh in and restart it. So I'll go looking for the damn thing and have completely forgotten where I put it.
They should have made them full computer size so idiots like me won't misplace them.
http://bash.org/?5273
You know what, I read that bash post all the way back when it was first posted. When that rpi went missing I couldn't believe it. I thought to myself is my life now just bash.org next I'd be putting on my robe and wizard hat.
That's pretty funny, maybe a special case with one of those whistle locator things I remember from when I was a kid of that makes any sense at all.
Btw in my case when it does the ping but not ssh thing it's usually temporary and involves some process hogging up the whole cpu. Some Docker containers really like doing that for example.
Yeah this was something weird that had put it into an inconsistent state. I suspected it was due to crappy dc supply that can do really, really strange things with rpis.
Awesome I'll look into that, thanks.
I have two boxes both running virtualization.
One Dell R610 running ESXi and a white box build with old PC parts that runs unRAID.
For most of my VMs inside of that, I prefer using Ubuntu Server whenever possible as that's just what I'm comfortable with the most.
I run Ubuntu on my server. There's a lot of things Canonical does I don't like, but they make a pretty good and stable server OS that's kept fairly up to date. I have used Debian 8/9 in the past too, but made the switch back to Ubuntu after a while.
PopOS has a nice desktop environment and some other things but I dont see the benefit for a server.
Basically I would just stick with whats popular and is relatively easy to use. I think that's Debian distros in general but Ubuntu specifically.
But im a noob in this space so take with a grain of salt. The time I setup a Fedora server I was having constant issues getting it initially setup.
I am an SRE by trade and spend my days wrangling multiple cloud providers and supermassive Kubernetes clusters.
I switched over to NixOS this year and I use it for my personal computer, my remote server that hosts all sorts of Plex-related stuff, and for both the paid and free webservices that I run. Once it clicks, it really clicks, and there is nothing as quick to set up or as reliable to depend on.
I'm a dirty bastard and I run my home Plex server off Windows. Like Windows 7 or something. I use it as an on-site backup for stuff too. I had some spare parts lying around and said screw it.
I run all my servers on Gentoo, jzst as I do with desktop PCs. It's the system I'm familiar with, this is the absolutely main reason why I run Gentoo.
It's pain to run it on that old Inte Atom N270 though... :-D But that one serves just as backup off-the-site server for family photos.
I'm a big fan of Arch Linux, so the laptop I run my Jellyfin server on is running Arch. However, I would not recommend using Arch for your setup unless you really enjoy configuring stuff more than necessary. Debian is probably a better out of the box experience haha
Hardware-wise, a Protectli Vault, so similar to a NUC. It's compact, quiet and air-cooled, as compared to the 3U monster I was previously using.
Software-wise, OpenBSD. It's stable and has world-class documentation. I'd suggest, as others here have, that for your first crack at home hosting you stick with what you know.
Alma Linux 9.x for my newer VM. CentOs 7.x for the older one. I deal with RHEL all day at work so I'm far more familiar with it and Fedora for some desktop VMs at home.
Once I start studying for the CKA, I'll decide what to do there. Possibly Ubuntu since more Kubernetes guides deal with it but we'll see.
Debian Bookworm on an HP ProDesk 400 G6 Mini, running headless, since I don't need to interact with it in any way other than SSH. I've got a single-user Mastodon instance running on it and a couple of websites. Everything sits behind Cloudflare, and I access it via SSH on a Cloudflare tunnel. I've got a bash script running via cron that updates Cloudflare DNS records every few minutes because my ISP likes to change my IP from time to time.
I wanted something with a little more power than my Raspberry Pi but without the power draw of a second desktop PC. I waited a good while and finally got lucky, picking up the ProDesk on eBay, brand new, for super cheap.
I've gone a slightly different direction. Unraid.
It's NAS software but has a nice interface to run docker containers and VMs. Most software I use at home has a containerized version I can deploy in just a couple clicks. It's low effort enough for me and easy enough to maintain but exposes enough inner workings of docker for me to be happy with.
It's not ideal but I'm using an old NUC with a m.2 and sata ssd + USB bay stuffed full of used spinner drives from amazon which presents JBOD (just a bunch of disks) to Unraid. I get high speed caching on the SSDs and software raid archiving on the spinners. I back everything up (rsync) to a separate usb drive monthly.
As a power user that doesn't have much time to tinker after my tech day job, this setup has been fine for syncthing, torrents, and archive warrior.
I personally use Unraid and I would recommend it to anyone. I absolutely love it. You just need to install a few plugins like the enabler for docker-compose and appdata backups.
Are you referring to the Docker Compose Manager plugin? Interested in moving my Unraid docker setup to a better defined environment than my current manually configured containers.
Yep, that plugin is crucial for testing out apps that aren't in the Apps store. Its as easy as cloning a GitHub repo into your appdata folder and running the command. It makes standing up apps with multiple containers much easier.
Rocky Linux for everything except my router, which is an OPNsense virtual machine running on a Rocky Linux host.
My server is primarily used for NAS storage, but I also have it doubling as a local application host. Currently, it's running TrueNAS Scale, with apps deployed through the integrated k8s system. Works well enough for my uses.
Currently have a free VPS on Oracle Cloud that’s supposed to be running Ubuntu, but was converted in-place to Debian for YunoHost. Really tried to use Docker for getting multiple web apps on it but due to only having a free subdomain, most of the reverse proxy guides weren’t applicable; they were guiding towards hosting web apps per-subdomain. Someday when I can afford a full domain (or really any recurring payment), I’ll try with Docker again.
You can add a subdomain to a subdomain:
So on and so forth. I use Traefik, but any proxy should be able to do this.
I've got CentOS 7 running on 10 year old hardware with 5 4TB drives in RAID-6. It's been running pretty much untouched since I upgraded the drives in 2017. I'm glad I didn't update it to CentOS 8 a few years ago like I was thinking of doing just before RH announced that they were killing CentOS 8 support early. I'll probably go to Rocky Linux next year when support for 7 ends.
It used to run VMs back when I built it 10 years ago, but now my main PC is a beast that can handle multiple VMs and play games at the same time, and runs Linux, so the server is basically just an onsite backup at this point.
Mine is a steam deck with steam os, but I don’t think I’d recommend the os for that purpose… With that said, the hardware is cheap, very power efficient, with tolerable graphics capabilities, so it’s worked fairly well for me #^-^#
I've got it hooked to an external hard drive, and am using Jellyfin as a media server
I use ubuntu cause of the community. Newbies use ubuntu and linux interchangeably, so there are a plethora of articles and tips available for tons of beginner stuff
Jellyfin and a few other things running on Arch.
NAS and a few other things running on Debian.
It would be 100% Debian were it not the case that at the time some hardware was OOTB support with Arch but not with Debian. I don’t have a preference between the two, but default to Debian since I’ve been running Debian (or a derivative) (or a derivative’s derivative) for almost 20 years.
I do keep a window manager/desktop environment on my home servers even though I do most things over ssh. I personally think Pop looks nice but I have a strong preference for openbox > kde > xfce, and despite my best efforts to appreciate it, I can’t live with gnome 3. Installing something with gnome would just add depends I don’t want.
The Debian mailing lists were high quality during the early 2010s, though as I recall systemd was quite divisive. The Arch forums were high quality as well, just be sure to search, review the wiki, and read the manual before posting. The Arch wiki is the terrific.
Considerations, in sum:
Note: Now that storage is cheap and abundant I’m less dismissive of flatpak/snap, but it’s still not for me.
My hardware is a Dell PowerEdge tower I got at a nice discount 7 or so years ago and it's running FreeBSD, mainly because I'm not much of a fan of the "ship the jungle containing the gorilla holding the banana instead of just the banana" approach that's become popular on Linux in the past decade (Docker, etc). Having been a Mac user for 20+ years it feels a bit more familiar since macOS and FreeBSD share much of their userlands, and both are designed from the top down by a single party which brings better consistency.
It works pretty well for my needs, which consist mostly of serving up Plex and storing media and backups. The only thing I've found annoying is the occasional software package that has bad-to-nonexistent FreeBSD support, like Jellyfin which requires C#/mono which doesn't play nice with FreeBSD. This could be worked around with a LinuxJail, which is basically a Linux VM in a jail but I've always just found some alternative package to use instead.
I’ve largely settled on Proxmox for Hypervisors, Ubuntu Server LTS for Linux VMs and standalone boxes, and TrueNAS core for NAS devices.
I like core since I offload media server applications to VMs that pull data off of the NAS over NFS. I don’t need Docker on my NAS, or even Jails for that matter.
Proxmox has been rock-solid and it feels familiar since it’s basically just Debian and KVM.
Ubuntu Server because it’s stable, Debian based and just works. I know I should just use Debian, but for now I haven’t convinced myself to make the change.
I have a massive machine that just runs Proxmox VE. Applications are running on that, either in Docker containers or in VMs (usually on Alpine or Windows Server Nano).
I used to run ubuntu, but since they've started pushing snap it's been kind of a pain, so I've started using debian for my servers. On something like a NUC you might even get away with running proxmox with multiple virtual servers inside, I'm doing that on a old dell thinclient right now with zero issues.
ESXi for me personally. Then I just run a few ubuntu, windows, and debian instances. I use an Apple silicon laptop when not on my desktop, so I also have a remnux VM to remote into for work stuff.
Have an old Unraid box I build in College as my NAS with a few Docker apps running, and then a M1 Mac Mini w/Mac OS for anything more resource intensive. Those sit (physically) on top of a Dream Machine SE running UniFi for my home routing & security cameras.
I use FreeNAS primarily, and then I have a small HTPC up in a closet that runs Ubuntu for my Ubiquibi network controller and security camera NVR.
Proxmox and NixOS VMs, works okay until it doesn't. :)
Ubuntu Desktop. It's what a I know, nothing crazy
Here's a curve ball: my 3 kubernetes nodes run a OS called Talos.
It's built ground up to run kubernetes and API driven.
No SSH, telnet, console etc. You run it from a cli command and configure it with yaml. No need to worry about os maintenance, a cli command upgrades the OS to the latest.
It has a custom, stripped down kernel and is fast, lean and secure.
On the flipside my NAS (comprised of a 24 bay disk shelf and a Lenovo tiny) runs good old Ubuntu+ZFS (this is setup with Ansible)
My home server and router is running Arch Linux, as it's what I'm familiar with and I make use of the Arch Build System for custom packages so it's extremely useful that I run the same OS on all of my systems. It's not an enterprise environment so I don't need a stable release that won't break compatibility, and I like having the latest software.
I run Alpine Linux for the handful of things I self host. No VMs or Docker -- I like to KISS with bare metal and distribution-provided packages. Alpine is my ideal server distro: small, stable, GNU-free, and a top tier package manager. The only thing about Alpine I don't love is its use of OpenRC. There has been a years-long effort to replace it, led by the s6 author, but I have no clue on its timeline.