As much as I love the idea of a full rack at home, I am happy with the practicality and simplicity of my setup. I am realistic about my needs and use low-cost, low-power hardware that is small enough to hide away. I have three servers that I consider "production": a main server that acts as my NAS and hypervisor, a media server, and a web server. Here's a breakdown of the what and why for my homelab:
Hardware: Supermicro ITX board, i5-7400T, 32GB RAM, 256GB SSD, 2x4TB HDD
Software: FreeBSD, ZFS, Samba, Syncthing, vm-bhyve
This is my primary personal storage, with certain commonly used directories synchronized across my devices with Syncthing, and archive data that I access directly through Samba. I don't have a need for a ton of data, so this modest machine with a single ZFS mirror vdev is enough for me. It hosts a couple small VMs for dev and test purposes.
So why FreeBSD? I originally used Debian for my primary home server and was happy with it. One day, out of boredom, I decided to finally check out FreeBSD expecting to just say "neat" and move on with my life. But then I kept coming across advantage after advantage for my use case. Proper native ZFS? Straightforward service and network management? Has all the services I need already available? Then I tried out vm-bhyve and the simplicity and elegance continued. Tiny config files that define a VM? Automatic ZFS dataset creation for VMs? The VM snapshots are just ZFS snapshots? No-effort network bridge for the VMs? OK I'm in.
My backup strategy for my data is intentionally simple. I wanted a family member to be able to recover my data in case something happens to me, so the backups are just two encrypted external drives that get ocasionally rotated to an offsite location. Thankfully, a few people in my family are tech-savvy enough to be able to mount a LUKS-encrypted drive on a Linux desktop if it came down to it.
Hardware: Aoostar WTR Pro, N100, 32GB RAM, 256GB SSD, 4x8TB HDD
Software: Debian, ZFS, Samba, Jellyfin, Navidrome, Liquidsoap
I decided to have a dedicated media server in order to fully separate private files and publicly-available media. With the media server on an isolated network and no private data on it, I can comfortably give friends and family access to it. The media is stored on a pair of ZFS mirror vdevs (16TB usable), and is backed up to only a single external drive since losing everything would be very annoying but always recoverable.
Hardware: a VPS in a data center somewhere
Software: OpenBSD, httpd, relayd, acme-client
After my FreeBSD revelation, I checked out OpenBSD and discovered it would be perfect for my web/reverse proxy server. I managed to recreate my previous AlmaLinux/nginx setup using the built-in httpd and relayd programs. I didn't even have to install any extra packages, it's all base OpenBSD top to bottom! For a simple website such as this one you truly don't need anything more. My main server pulls backups from this server automatically.
My router is an N150 mini PC running OPNsense, plus a generic managed switch and an Omada AP. I do the usual VLAN seperation of trusted and untrusted devices and use separate SSIDs for each. As far as how I connect to hosts remotely, I use Nebula with my web server acting as a lighthouse. I set up Nebula before Tailscale became the unofficial homelabber go-to, but I'm happy with Nebula and it's fully self-hosted.
I use Ansible for Linux hosts and shell scripts for BSD hosts. I'm aware I can use Ansible on the BSDs, but for the sake of learning the underlying OS and embracing the straightforwardness of the BSDs, I just made my own custom idempotent (or close enough) scripts that fully set them up from scratch.
I use the Ansible playbooks and shell scripts themselves as documentation. All of this is custom to me and too specific to be useful to others, so as long as I'm meticulous about keeping the scripts updated, I find it more efficient than having separate notes. For general note-taking, normal text files and Syncthing are good enough. I'm a big fan of BookStack, but it's overkill for my needs.
Everything is connected to a UPS. I have a Raspberry Pi running NUT to coordinate graceful shutdowns for the servers and router. I also have that Pi running SmokePing so I can argue with my ISP with actual data should the need arise (again). Everything is still on one gigabit because it is rarely a limitation for me. I'm sure I'll go 10 gig eventually, but with the current hardware market, all this stuff better hang in there for the forseeable future.