What’s a homelab?
At its core, a “homelab” is just a computer (or more than one). Typically, they’re always on. Everyone’s is a little different, and they run all sorts of software including enterprise tooling (often for learning purposes), self-hosted alternatives to cloud services (e.g. your own personal file syncing service), “appliances” like networking routers, and many more. Mine consists of a few computers running a mix of those things, mostly for personal entertainment and partially because it’s fun to tinker.
What’s in my homelab?
My setup includes three computers and some miscellaneous other hardware. In the order of what I added first:
NAS is an acronym for Network Attached Storage. They come in all shapes and sizes and are typically “appliances”, meaning they serve a specific purpose rather than being a general purpose computer running arbitrary software. They’re designed to do one thing well and reliably; while most offer ways of running ancillary services, their primary job is to store files and make them available over your network. If you’re looking for a place to store your computer backups, home videos and photos, and other important documents with redundancy and off of your personal computer, this is what you want.
My first NAS was a two-drive QNAP device, a great starting point that “just works”. I got this to serve as a wireless backup device for the laptops in my household. (Not having to remember to plug in the backup drive is a good way to maintain a healthy backup schedule.) After a couple of years, I upgraded to an HP Microserver, a neat little cube that didn’t take up much more space but held four drives and a better CPU. I installed FreeNAS on that for a couple of reasons: I like to use free and open source software when possible, and ZFS is a really neat filesystem that’s perfect for things like ensuring reliability and integrity of computer backups. When I outgrew the available space on that device, I decided to upgrade the whole system to something with room to grow. My current machine is a custom-built computer with eight drive bays (only four are filled so far, leaving extra room to add storage with additional drives rather than replacing existing drives with higher-capacity ones).
Right now I have 20TB of usable storage. This holds computer backups, serves as remote storage for large files that don’t need to be on my laptop, and provides a place for all of my other homelab services to keep their data.
If you’re new to homelabbing and want to start with a NAS, a consumer-tier device like a QNAP or a Synology appliance is your best bet. If you want to spend a bunch of time tinkering and gain some valuable knowledge and experience out of the, FreeNAS (soon to be TrueNAS Core) is a good choice. (Hint: you probably won’t be happy with the decision to tinker if and when something goes wrong. I’m pretty happy with my setup, but don’t say I didn’t warn you if you choose the DIY route.)
I’ve run custom firmware on my home routers ever since I knew it was possible. It’s better than what comes out of the box, pretty much hands down. The last time I was looking at new home routers, I decided to split out the parts, learn a more professional router software, and have fun with it (the fun was the primary reason behind this switch). Instead of getting a new whatever-the-best-value-router-that-can-run-OpenWRT, I got myself a separate switch and WiFi access point, and I connected them to a little low-power computer running pfSense. I don’t do anything too fancy with it, but it ships with all sorts of core capabilities and a world more via plugins. Aside from being just a router, my favorite part of it is probably the DNS-level content blocker I use to keep pesky malware, user-tracking, and other not-so-friendly domains out of my home network.
Before I had my Intel NUC, I used jails and plugins to run non-NAS services on my FreeNAS machine. Those have all since moved to my NUC, along with a bunch of additional ones. This is a very small form factor PC that runs Proxmox, a Linux distribution with a web UI to manage virtual machines. I can use this to easily spin up new operating systems to test them out, but day-to-day, it runs a VPN server and an Ubuntu server with Docker. Using Docker Compose, I run services on my local network to manage my music and ebook libraries, my RSS subscriptions synced to all of my devices, sync files across computers, and other tasks that I like to keep locally within my home network. My Docker Compose setup changes pretty regularly as I spin up and down new tools, and it’s one of the lowest effort ways I’ve found to try out new software. One of these days, I’ll move from compose to a more production-y setup and do things like track all of my changes in source control, but I haven’t found the tool that makes that switch worth it yet.
Should you, the reader, set up a homelab?
Sure! It’s a fun hobby and definitely educational. And I genuinely believe that people running their own local software services is a good thing for technology and the internet as a whole. If this interests you and you want to learn more, the r/homelab, r/freenas, and r/pfsense subreddits are good resources. Start out with a consumer-grade NAS, and old laptop, or that computer you bought at a yard sale that sits in the corner and collects dust. Start small, and don’t get caught up in running a full-scale server rack in your living room. Happy homelabbing!