Post

Home Lab Essentials - what I ACTUALLY use my home server for

Over the years I’ve created a mental list of what I consider to be the “bare necessities” on my home server, programs and services that now would be difficult to live without. Since I began, my home lab has been through dozens of iterations. I’ve tried many different approaches, settling on what I consider to be the best “base” for someone starting from scratch. If you are someone looking to get into the hobby, I hope this helps in some way.

Less is More
The kind of person you will find talking about a subject online is often at the extreme end of the enthusiasm distribution, i.e. a mega-fan. In most cases you will not find the average enjoyer of a certain hobby singing its laurels online. Therefore, the opinions you come across on sites like Reddit or YouTube are often from people who take the subject very seriously. This is both a pro and a con, a pro because you are learning from someone who really knows their stuff, and a con because there is usually an expectation that you take it as serious as them. This leads to what I call over-suggesting, when an advanced hobbiest makes suggestions to beginners that may be too advanced and/or complicated for someone just getting into it. This is how I felt as a beginner when setting up my first home lab.

I got into home servers because I wanted to solve a real world problem: I had growing storage needs as I was archiving old home video tapes and ripping movies from my collection of DVD’s. I wanted to access these from multiple computers in the house, and I wanted to view my movies from my TV. A quick search online resulted in me perusing r/homelab, and I was hooked. My homelab has grown past these basic needs since then, but they still remain as it’s core purpose.

Approaches I’ve tried in the past
I started with an old SFF Dell Optiplex with an Intel i3 3340 and space for one hard drive. I used a 1 TB HDD I ripped from an old DVR box I found at the thrift store, and I was off to the races. I made a bootable image of Debian Linux and installed that to a 256GB SSD I crammed in along side the 3.5” HDD. I figured out how to create a SMB share inside Linux, and then ran Plex to serve my media to my TV. This… worked, but I quickly ran into storage limitations and a CPU bottleneck. That HDD actually died on me, but I had luckily been intending to swap to another drive and had already made a backup (now I’m paranoid about backups).

What works and what doesn’t
Switching machines gave me the change to try something new. I installed Proxmox which is a Hypervisor that enables you to create virtual machines and manage them conveniently from a web interface. This means I could give up the monitor and run my server headless. It also meant that I could have separation of concerns by keeping my NAS in one VM and my services in another. I’ve heard that this isn’t exactly recommended, but I’ve been doing it for years now with no issue. For my NAS, I ran FreeNAS (now TrueNAS) which was honestly too complicated and complete overkill for my one drive (remember how I said online suggestions are sometimes beyond the mark?). I read all about ZFS and memory requirements and setting up users and permissions and wheel groups. It took me quite a long time, but I had something that worked at least.

In the other VM I installed Debian, and began to make my way installing Plex to the OS itself when I heard about Docker containers. The Docker engine allows you to run ‘containers’ which are like stripped down OS’s that still use the host OS’s kernel. This is different from Virtual Machines, which are full operating systems with their own kernel, virtualized. This means that docker containers have their own environment with their own dependencies that are custom made to run a specific program, like Plex for example. I learned I could create and manage these from another web interface using something called Portainer. Portainer has a feature called “stacks” which lets you create new containers using docker compose, a small YAML file that contains the specific instructions for that container. This makes it incredibly easy to start up or try out new programs. I had Plex running quickly, and began to geek out on all the other services I could run. Pi-hole, Minecraft servers, Home Assistant, Radarr, Sonarr, Heimdall, Immich, Caddy, and so many more.

My current approach
I’ve since shifted things around a bit more. I was gifted an entire PC that my Mom won at her work, an older workstation with an Intel Xeon chip and 32GBs of DDR4 ECC RAM. I bought a case with sound-proofing panels that had plenty of drive slots, the Pure Base 600 ATX by be quiet!. I had been quietly growing my collection of hard drives, I shucked two 8TB HDD’s I got at Best Buy and threw them in there along with a 4TB drive I had been using up til then for Plex. I installed Proxmox, and this time around opted for OpenMediaVault, a program in my estimation far more suited for the filthy casual. Easy to get going, within a few minutes I had my two 8TB drives running in RAID 0.

I can already hear you now, clicking your tongue. Yes, I chose to run my two storage drives striped so I could save a few bucks by not having to purchase an extra drive for parity. Yes, if one drive goes down I lose the whole thing. However, RAID is not backup, so for my actual backup I splurged on a 20TB external WD Elements drive, which fits my combined 16TB + 4TB plex drive just fine. This I keep at my folks house for extra protection, but I’m still not as backed up as I’d like. I’ve been considering going with digital tapes, but we’ll see as my storage needs grow. For now however, I have yet to fill even two thirds of that 20TB drive.

Services I can’t live without
I made two SMB shares, one for the combined 16TB which I use to hold all my personal files, and the other for Jellyfin. I forgot to mention, I switched away from Plex to Jellyfin somewhere around this time, and I don’t regret it for a second. Jellyfin has been fantastic, and it offers many of the features that are locked behind a paywall in Plex. If you have been growing frustrated with Plex, I suggest you give Jellyfin a shot. In my other ‘services’ VM, I installed Debian and then Docker, which I access through Portainer. From Portainer, I’ve set up my Jellyfin container to use the 4TB share from OpenMediaVault that I mounted in that Debian install. You might think there would be network issues or laggyness reading data from one VM in another, but I’ve had no issues. The two striped drives are much faster together than they are separate.

At that point, I had my original problem solved. I had OpenMediaVault to access and store my data from anywhere in the house, and Jellyfin to serve my Movies and TV Shows to my TV and iPad. I jump into Proxmox or Portainer easily by using Heimdall, a sort of homepage that has links to the local ip addresses you set up. I have an IP camera to monitor the house that I run through Home Assistant, which lets me see my camera from my phone. I set up Frigate to integrate with Home Assistant, so I now get the time and frame when it detects a person. I have Immich set up to back up all my photos on my iPhone directly to a folder on my 16TB NAS share. This is incredibly convenient, as I don’t have to worry about all the difficulties that arise trying to backup photos and videos taken on my phone. It also fills the hole that Google Photos left in me when they decided to no longer offer free photo storage. I rent, and don’t have access to port forwarding or setting up a VPN to access my home network when I’m out and about. For this I use Tailscale, which makes it incredibly easy to get back into my home network securely from my laptop or phone.

What I’d recommend to a beginner
This may seem like a lot, but to be honest a few of the services I use aren’t completely necessary. I pay for iCloud, so I don’t technically need another backup solution. My IP camera came with an app that allows me to view the feed outside the house, so I don’t technically need frigate or home assistant. I have a DVD player, so I don’t technically need Jellyfin. However, all these services have made my life easier and more enjoyable.

I would recommend to anyone starting out that they just focus on solving the problem that brought them to that forum or YouTube video to begin with. The simplest solution is often good enough, I ran that one SFF PC with one hard drive for over a year with nearly no issues. I didn’t need to worry about Proxmox errors, OpenMediaVault, figuring out docker. The great thing about this hobby is that you can take it as far as you want. You really don’t need the giant racks you’ll see with a ton of upvotes on reddit, or a server closet with dedicated A/C like on Linus Tech Tips.

This post is licensed under CC BY 4.0 by the author.