I'm going to walk you through my home lab setup, showing you what I've set up now, both hardware and software and also share my plans for potential upgrades in the future.
This post contains affiliate links. If you use these links to buy something we may earn a commission. Thanks.
We will begin with the hardware, I have a basic home lab setup with just two servers, one is a used Dell Optiplex 7050 Micro used as a web server, the other is a custom build tower PC that acts as my gaming PC, NAS and is also hosting several services. They're connected using a TP-Link AX6000 Wifi 6 router with a gigabit internet connection.
Specifications for Dell Optiplex 7050 aka Hades
Core™ i5-6600, 16GB RAM, 256GB SSD
Specifications for Tower PC aka Thor
Core™ i5-11600K, ROG STRIX B560-G Motherboard, 32GB RAM, 4TB storage (2x 1TB NVMe drive, 1x 2TB HDD), Nvidia RTX 3060 and the most important part RGB (for extra FPS)
Starting with Dell, it has a super simple setup with just Ubuntu and docker. Essentially, it is a docker swarm worker node that connects to a swarm leader hosted in DigitalOcean and its only purpose is to run production workloads assigned by the leader. It also runs my homebridge docker container, I'm too lazy to move it to my UNRAID server. You might be wondering why docker swarm? why not Kubernetes or Nomad? I chose docker swarm because it takes barely 2 mins to set everything up and I didn't want to go through the elaborate set-up process which is required for most container orchestration managers.
Coming to the tower PC, it runs on UNRAID OS, which is unbelievably easy to set-up and has an amazing community. I don't want to go too deep into UNRAID now, maybe another time, but for now here are the things I've running on it:
- my NAS
- time machine backup drive which is technically part of the NAS
- a Windows VM with GPU passthrough as my gaming PC
- an Ubuntu server VM, second docker swarm worker node that joins the cloud leader and runs some production workloads
- a HiveOS VM for crypto mining
- another Ubuntu server VM for running this blog
And lots of docker containers:
- Tailscale for my private VPN
- Netdata for monitoring
- Uptime Kuma for status checks
- Speed test tracker which periodically runs speed tests
- Plex Media Server
- Nginx Proxy Manager
- Commento for my blog comments
- Postgres DB and Adminer
- Private Docker registry
These are my highly optimistic plans, kind of like my dream setup.
- Add more mini/micro servers for horizontally scaling my web services, this would depend on the load also, so only if required.
- Upgrade to Ryzen™ 9 5900X/5950X (definitely not cheap) for the extra cores (12/16), this would require a new motherboard also.
- Add more storage, get it up to 8 or 12TB.
- Replace TP-Link router with UniFi Dream Machine Pro, PoE injector and WiFi access points.
- Setup an offsite backup, explore cloud options.
🚨 Mar 2022 Update
- I've added another Dell OptiPlex machine (aka Athena) with nearly identical specs.
- I got rid of Docker swarm as it had reliability issues, unfortunately, I couldn't identify the exact problem and I didn't want to spend too much time debugging. The new setup is even more basic, I simply run multiple instances of Docker containers and load balance using NGINX. This new setup without any sort of container orchestration might seem like it's less reliable, but I've other measures in place to prevent downtime, I'll write about it soon.
- Replaced commento with https://utteranc.es because I like the look and feel of GitHub comments, also it's less work to maintain.
- I've added a VM for running https://temporal.io, it doesn't do anything at the moment, I'm just playing around and learning to run workflows using Temporal.