So as I look to build my first dedicated media server, I’m curious about what OS options I have which will check all the boxes. I’m interested in Unraid, and if there’s a Linux distro that works especially well I’d be willing to check that out as well. I just want to make sure that whatever I pick, I can use qbittorrent, Proton, and get the Arr suite working
Debian with docker compose or podman.
That’s what I’m running. I’m sure you could squeeze more performance out of a specialized OS, but headless Debian is fast and easy enough.
This. Besides, stability beats out 2-5% performance gains any day of the week, for servers.
Are there any resources available for how to do this? I feel like I more or less understand how Docker works conceptually, but every time I try to actually use it, I feel in over my head very quickly
Search for dockstarter and trash guides. It will give you the foundations of what you need
Thank you!
look for docker-compose + whatyouwant specifically, it’s way more straightforward. once you have one set up, it get easier adding on different software.
The best thing is: if something doesn’t work, you tweak the compose file instead of having to retype or edit a command.
And you can have a GitHub of your compose files and any supporting config files.
I don’t get how some people can raw dog a docker run command!
Thank you!
Debian!
Always Debian.
I’m very happy running lxc containers in proxmox
This has worked well for me too, for many years now!
I just recently discovered proxmox and am slowly moving my docker containers off my NAS. Picked up a used Intel NUC, i5-8259, 32gb ram, 512gb HDD. It’s been great so far, very happy with its ability paired with proxmox.
any specific reason why switch?
Performance mostly, encoding is better, reducing load on my NAS and using it specifically for storage. Immich performs better as well, it’s pretty resource hungry I found. I also am planning to set up Frigate for home security and that’s the main reason I wanted something with a bit more power.
I use Unraid and I’m loving it. Super stable, easy to manage, set up dockers, let’s me pool my hard drives and set up parity. Highly recommend. Only thing that I’ve had a hard time with is finding a stable flash drive - you’d be surprised how many start to fail when used 24/7
Came here to suggest unraid as well. There are probably better options, but for a first timer, I can’t imagine a better solution. The ability to just add a hard drive to the array with virtually not configuration, as well as adding up to two parity disks is great. Caching is super easy too.
Plus they now support zfs so there’s that.
Unraid would be a very good choice for someone who is reaching out and asking this question. Debian can do the same but I suspect it’ll be easier to setup and manage on unraid.
Disk management in unraid is also great.
I have an overkill 128GB SanDisk flash drive I got for 13 dollars and it works great for my 24/7 unraid setup
I’ve heard smaller, older drives are actually more reliable in the long run. USB 2.0 especially because of the lower speed causes less heat
The thumb drive isn’t used all the time. I’ve been using a cheap USB drive that cost me like $12 several years ago, and haven’t had any issues yet. It’s been running constantly for the last year or two.
I had an issue recently where my usb drive was “disconnecting” which triggered unraid to give read errors and then panicking. I had checked though and it wasn’t being regularly read or written to but still caused my whole server to crash. Changing usb drive has since fixed it, for now 😄
Using debian 12.
Now that Truenas Scale supports just plain Docker (and it’s running on Debian) I think it’s a great option for an all-in-one media box. I’ve had my complaints with Truenas over the years, but it’s done a really great job at preventing me from shooting myself in the foot when it comes to my data.
I believe raidz expansion is also now in stable (though still better to do a bit of planning for your pool before pulling the trigger).
The raidz stuff, as I understand it, seems pretty compelling. A setup where I can lose any given drive and replace it with no data loss would be very ideal. So I would just run TrueNAS scale, through which would manage my drives, and then install everything else in docker containers or something?
Yes, what you’re saying is the idea, and why I went with this setup.
I am running raidz2 on all my arrays, so I can pull any 2 disks from an array and my data is still there.
Currently I have 3 arrays of 8 disks each, organized into a single pool.
You can set similar up with any raid system, but so far Truenas has been rock solid and intuitive to me. My gripes are mostly around the (long) journey to “just Docker” for services. The parts of the UI / system that deals with storage seems to have a high focus on reliability / durability.
Latest version of Truenas supports Docker as “apps” where you can input all config through the UI. I prefer editing the config as yaml, so the only “app” I installed is Dockge. It lets me add Docker compose stacks, so I edit the compose files and run everything through Dockge. Useful as most arrs have example Docker compose files.
For hardware I went with just an off-the-shelf desktop motherboard, and a case with 8 hot swap bays. I also have an HBA expansion card connected via PCI, with two additional 8 bay enclosures on the backplane. You can start with what you need now (just the single case/drive bays), and expand later (raidz expansion makes this easier, since it’s now possible to add disks to an existing array).
If I was going to start over, I might consider a proper rack with a disk tray enclosure.
You do want a good amount of RAM for zfs.
For boot, I recommend a mirror at least two of the cheapest SSD you can find each in an enclosure connected via USB. Boot doesn’t need to be that fast. Do not use thumb drives unless you’re fine with replacing them every few months.
For docker services, I recommend a mirror of two reasonable size SSDs. Jellyfin/Plex in particular benefit from an SSD for loading metadata. And back up the entire services partition (dataset) to your pool regularly. If you don’t splurge for a mirror, at least do the backups. (Can you tell who previously had the single SSD running all of his services fail on him?)
For torrents I am considering a cache SSD that will simply exist for incoming, incomplete torrents. They will get moved to the pool upon completion. This reduces fragmentation in the pool, since ZFS cannot defragment. Currently I’m using the services mirror SSDs for that purpose. This is really a long-term concern. I’ve run my pool for almost 10 years now, and most of the time wrote incomplete torrents directly to the pool. Performance still seems fine.
Easy, Linux. I prefer Arch based because of AUR.
I wouldn’t use Arch on a Server. Everything you install will probably be in a docker container anyway, so fast updates for system packages isn’t important compared to stability. Good choices would be Debian or Fedora Server. I personally use Fedora but the reason is just that I use Fedora on Desktop too, so I know they have really good defaults (They’re really fast in adopting new stuff like Wayland, Pipewire, BTRFS with encryption and so on) and it’s nice that Cockpit us preinstalled, so I can do a lot of stuff using a WebUI. Debian is probably more stable tho, with Fedora there is a chance that something could break (even though it’s still pretty small) but Devian really just works always. The downside is of course very outdated packages but, as I said, on a Server that doesn’t matter because Docker containers update independetly from the system.
Nah me neither, I had my desktop mindset going there. I use truenas scale, couldn’t be happier.
I use Alma because RHEL is designed for enterprise stability. Debian is also a good option.
Just don’t use Ubuntu. They do too much invisible fuckery with the system that hinders use on a server. For basic desktop use it’s fine, but never for a server.
Edit: but you should be doing most stuff in Docker anyway, so the actual OS isn’t going to matter too much. If you’re already comfortable with one base (Debian, RHEL) just use that one or a derivative.
Just don’t use Ubuntu. They do too much invisible fuckery with the system that hinders use on a server.
Would that warning also apply to Mint, since it’s based on Ubuntu, as well as other Ubuntu-based distros?
I wouldn’t use Mint or other desktop-focused OS for a server. Ubuntu’s advantage of newer packages gets largely negated by how long Mint takes to release a new major release, so I’d rather use Debian.
I do think Ubuntu is fine for servers too, like almost any other point release distro.
Probably. I don’t know what Mint or others do under the hood, but I do know they’re definitely targeted at desktop use.
I use Alpine Linux for server-based stuff because it’s so light and the packages are kept up-to-date.
I assume any Linux or *BSD distro will work, especially one with Docker (which is most/all of them?) so you don’t have to worry about things being packaged for your distro so long as there’s a docker image. My server is Alpine Linux.
Like others in here, I also set mine up with Debian and docker compose. Since it’s an always on server I wanted maximum stability. I don’t use unRAID, so not sure about compatibility for that.
Data protection is a big concern. Is that something you have in your setup?
I run nightly archiving backups using Borg Backup.
It’s compression + de-duplication algorithms have me able to store 18 historical backups of about 422gb ea, in only 367gb of disk space.
That then gets mirrored to a cold storage drive manually every few months.
Ooh so I could do this to my media library?
If you want and have somewhere to store it.
I’m not all that concerned about the media drives; I don’t have a spare 30tb to stuff that backup in, and that can be re-acquired if push comes to shove. I tend to just backup metadata + server config/database files along with everything in /home, /root, and /var.
Unfortunately not in my setup, but that’s just because I don’t have the money to upgrade it at the moment and nearly everything I have is stuff I can easily redownload.
Once I can save up for it I will up my storage and get some back ups set up.
I use Unraid on my NAS. I like it for storage, I don’t like it for running services. It’s still running my media stack, but only until I get that moved to a Debian server.
Depending on how involved you want to be and what you want to learn, Unraid might be a good fit for you. It’s easy and mostly just works.
I second UNRAID, but also for your media stack. I have my home server running UNRAID and around 20 services, with zero issues.
How do Proton VPN and QBitTorrent play with that setup, if you know?
I’ve been running my stack on FreeBSD for a while now. I cannot recommend it enough; solid as a rock, no surprises. BSD license is different from GPL though, so some software cannot be migrated with the same name, but there are drop in replacements that are usually better anyway.
Software meaning Arr suite, or things like Proton VPN?
I did a quick search, looks like Proton has a WireGuard implementation, which is what I use. I use transmission for torrenting, and jellyfin for streaming
I have been fighting with Docker and Fedora on these exact items all weekend. Good luck
I’m currently playing with setting up a home server on an old PC, using Proxmox as the main OS and using LXC and VMs for the services, not fully set up yet (still working on figuring out reverse proxy to make my services available on the internet)
It’s neat tho, and there’s some helpful scripts for installing various containers and things online.
I would need that because I’m basically starting from zero with learning all this stuff lol. Using Tautulli remotely is a challenge for me right now if that gives any indication of my level of knowledge here
remotely is a challenge for me right now
I’ve seen you mention this a few times and like mentioned elsewhere in here, set yourself a Tailnet up.
It’s fugging brilliant, the docs are wrote by some very clever people (note, I am best described as a copy / pasta person?) and are through, and you can use a github or even a Google account for authentication.
Even grabbing a cheapo raspberry pi4 gives you a 1GB port (the rpi3 only has a 100Mbps rj-45 port and would still suffice for lesser needs) for your own
VPNWireguard to home, that is P2P encrypted and can be used as an Exit Node / subnet routerie: if you’re on someone else’s internet/cellular you can simply hit up your exit node to break out of any nanny filters, stop anyone else noseying at your traffic (obv bar your ISP seeing outgoing requests unless you have a another…VPN on your router), and also view and/or manage any devices on your home network/Tailnet by IP address.
Hell, I dumped a rpi down at a family members house that is part of the “stack” so I can help out remotely but it seems someone has knocked the aerial out of the HAT again :/
Best thing ever.
Mmm good stuff, I’ll have to check out tailscale.
I ended up going with a traefik setup, which works well but more options info is always good.
https://community-scripts.github.io/ProxmoxVE/ Check out proxmox, then check out the above scripts and start with the post install script, then something like Ubuntu to get a feel, you can use the other scripts for specific containers