My homelab setup has gone through a few different iterations over the years. I started with a Raspberry Pi 3 Mobel B with a couple of USB hard disk drives attached to it. Then I upgraded to an old laptop running headless Ubuntu. And finally, I’m now running my self hosted services on a desktop tower PC with around 15TB of storage attached to it.

I’m also running OPNsense on a mini-pc and Home Assistant on the Pi that I mentioned. My current setup can handle almost anything that I throw at it, except GPU heavy tasks since I still haven’t bought a GPU yet.

I thought it would be fun to write a post explaining my setup, so that I could (potentially) inspire someone to setup their own homelab :)

homelab-complete

Power

I’ll start with the one single component that powers my entire homelab; the power socket. I use a Wipro 10A Smart Plug. It connects to my Wi-Fi and allows me to remotely turn on/off my homelab in case I need to hard reboot the system. Moreover, it allows me to monitor the energy consumption of the entire system. I use the Local Tuya Home Assistant integration to get access to the power consumption data from the socket.

homelab-socket

I use this to monitor how many units (kWh) of electricity my homelab consumes. I’ve also setup a basic automation that alerts me if the system uses more than 400 Watts of power, since that’s what my UPS is rated for.

homelab-power-consumption-home-assistant

UPS

homelab-ups

I use an APC Back-UPS 1100VA to provide power backup to my homelab. It also sort-of acts as a voltage stabilizer which really comes in handy since the voltage fluctuates wildy during certain seasons where I live. My homelab setup at the moment consumes around 100 Watts during idle, and shoots up to 150 Watts during heavy loads. The UPS provides me around 15 minutes of backup power with idle load.

OPNsense Firewall

homelab-firewall

I use a SkullSaints Onyx as an OPNsense box. It comes with 4 2.5 Gb/s ethernet ports which should cover me for the foreseeable future. I’ve setup two interfaces on it; one for my WAN connection and one for my LAN. I use the router my ISP provided in bridge mode and connect it to the WAN interface on the OPNsense box. This gives me total control over the network.

I also have a Wireguard interface setup so that I can remotely access my homelab over the internet. Similarly, I’ve setup a Zerotier interface too in case my Wireguard interface goes down for some reason.

I’ve installed ntopng on the OPNsense box so that I get a pretty UI to monitor and analyze the traffic that goes through my network. I also use AdGuard Home as my local DNS server to block ads network-wide.

Interesting tid-bit: I once found a thin client device trying to communicate with random Chinese servers. I was able to figure this out using ntopng. I was able to block the device from accessing the internet by setting up firewall rules in OPNsense.

Access Point

homelab-access-point

I use a TP-Link Archer AX1500 (https://www.tp-link.com/in/home-networking/wifi-router/archer-ax1500/) router as my primary access point. I was looking into dedicated access point devices, but I realized that (at least in India) consumer grade routers were cheaper than those. I also get a few extra LAN ports by going with a router.

This router provides me two Wi-Fi networks. The first one runs in the 2.4GHz band and serves as the WLAN for my IoT devices. The other runs in the 5GHz band and I connect my laptop and other devices to it. The router also supports Wi-Fi 6. I run automated backups of my photos and other important files from my mobile phone to my homelab. With this router, I can get sustained speeds of close to 12MBps over Wi-Fi which makes the backup process a breeze.

I also connect my Quest 3 to the 5GHz network. This allows me to stream large files from Jellyfin/DLNA from my homelab to my Quest without any bandwidth issues.

Reaspberry Pi 3B

homelab-pi

The old Raspberry Pi 3B that I started with now solely runs Home Assistant. I decided to dedicate an entire machine to Home Assistant because I wanted to turn on my lights even if my homelab was down. It’s now around 5 years old and still going strong. I never even had to replace the SD card in it yet.

Itried to DIY some cooling solutions on the Pi 3B official case. I melted a hole in the case and attached a small computer fan to it so that I can get some active cooling on it. I also attached an alumninum heatsink to the SoC. I’ve never had to worry about overheating since.

Network Switch

homelab-switch

I use a TP-Link TL-SG1016D unmanaged network switch. It provides me with 16 gigabit ports which should cover my needs for the foreseable future.

Homelab Server

homelab_server

The primary component of my homelab setup. The specifications are as follows:

Future plans

This setup has run anything I throw at it without any hiccups. But there’s always room for improvement. I have plans for a few upgrades which I’ll probably start working on soon:

  • Run some sort of RAID setup. Right now, all my HDDs are mounted as separate folders in the OS. There’s also no redundancy setup right now. Which means if I lose a drive, all the data in that drive is gone forever. Running these drives in RAID would make my filesystem a lot more organized and provide me redundancy.
  • Install a GPU. Even though I have no immediate need for a GPU, I think it would be a worthwhile investment since there’s a lot of cool LLM based open-source projects coming up right now. Running them on a CPU is not feasible for daily use. This would also increase my transcoding capacity.