Updated: September 2, 2024 (10d ago)

Homelab

My homelabbing journey and current setup

I've been interested in computers and networking for a long time. I've always kinda wanted to have something resembling homelab, before I even knew that this was an actual thing.

Back in the day I had my files backup up to a D-Link NAS with 2 drive slots. Once that ancient machine started to show its age, I decided to build a simple NAS on a Raspberry Pi 4 with OpenMediaVault. I used 2x 3TB Seagate Barracuda hard drives (these from 2012, noted to be some of the most failing drives ever made). It worked well, but I wanted to do more. I got hooked on homelabbing, having tried running containers and selfhosting services. I wanted to run VMs and containers, so I decided to build a proper server. Then I got into advanced networking, enterprise software, clusters... and now here we are, with a full-blown homelab.. Damn.

About homelabbing

Homelabbing is a hobby where people build and maintain their own "datacenters" at home. It's a great way to learn about networking, servers, and software. It's also a great way to run your own services, like a media server, game server or even a personal cloud storage array. You can also use it to test new software, experiment with different configurations, and learn new skills. Homelabbing allows you to get hands-on experience with real-world datacenter technology, without the pressure of a production environment (unless your family members get upset when the media server goes down for maintenance again).

I'm not a professional sysadmin or anything, so I'm not doing anything too fancy. I'm just homelabbing to have fun and learn.

Networking

For my networking needs I'm heavily using Ubiquiti gear. I have their router, an aggregation switch, a 48-port PoE switch, and a few APs and other gear. I quickly fell in love with their ecosystem after learning more about the Unifi product line, and knew this would be my future networking upgrade.

Devices

NameTypeDescription
UDM SERouterMain router / gateway / controller
USW-Pro-AggregationSwitchMain / Aggregation switch
USW-Pro-Max-48-PoESwitchGeneral devices switch
USW-Flex-MiniSwitchGeneral devices switch
U7-Pro-MaxAPMain AP
U6-Enterprise-IWAPSecondary AP
U6-IWAPGarage AP

Internet

My main connection is Starlink. I'm using it as my main connection, and I have a backup connection from a local ISP wirelessly. Starlink has been a huge upgrade for me and I love it so far. There is some limitations here and there, but I'm still yet to have fiber in my area, so that's the best I can get for now.

NameTypeSpeedDescriptionNotes
StarlinkSatellite350/75 MbpsMain connectionDynamic IP, CGNAT, DHCPv4, SLAAC /56
OXYNETWireless8/4 Mbps (yup)Backup connectionNo IPv6, PPPoE

Networks

Second octet represents the VLAN ID, third octet is the unique server ID in the Homelab network.

VLANIDSubnetDescriptionNotes
Default110.0.0.0/24Unifi devices
Main1010.10.0.0/24Main network
Homelab2010.20.0.0/20Homelab networkThird octet is the unique server ID
IoT3010.30.0.0/24IoT devicesNo access to other VLANs
Cameras4010.40.0.0/24Security camerasNo access to other VLANs
Guest10010.100.0.0/24Guest networkIsolated, speed limited
DMZ25510.255.0.0/24DMZ networkIsolated

WiFi

All hotspots use 2.4, 5, and 6 GHz bands.

SSIDNetworkDescriptionNotes
RanchoMainMain network
Rancho IoTIoTIoT networkHidden
Rancho GuestGuestGuest networkHotspot Portal
BandWidthChannel
2.4 GHz20 MHz1
5 GHz80 MHz40
6 GHz160 MHz37

DNS

I'm using AdGuard Home as my main DNS server, which is blocking ads and trackers. It's running on my Raspberry Pi cluster, and it's providing me with DNS-over-HTTPS and DNS-over-TLS. It also caches DNS queries, so it's faster than using a public DNS server only. For my upstream DNS servers, I'm using Cloudflare and Quad9. I also utilize selective routing with OpenNIC for alternate, open TLDs.

VPNs

My UDM SE is running Teleport by Unifi to provide me with a VPN connection to my home network. Additionally, I have Tailscale installed on all my devices to provide me with a secure connection to my servers.

Servers

Zeus

Zeus is my main server. It's running Proxmox, which is a hypervisor based on Debian. I'm running a few VMs and containers on it. Zeus is my primary machine for storage, running VMs and virtualized Kubernetes, as well as a testbed for new software I want to experiment with.

Hardware

TypeName
CaseInter-Tech IPC 4U-4129-L
MotherboardSupermicro H12SSL-i-o
CPUAMD EPYC 7282
RAM4x SK Hynix 64GB DDR4 3200MHz ECC REG 2Rx4 RDIMM
Storage- 1x Samsung PM9A3 1.92TB U.2 (Proxmox, VMs, LXC containers) on a PCIe to 2x U.2 adapter
- 2x Intel OPTANE P1600X 118GB M.2 (ZFS metadata, mirror) on ASUS Hyper X16 PCIE 5.0 M.2 card
- 4x Toshiba MG08ACA16TE 16TB SATA
NIC- IPMI MGMT
- Dell Intel X710-DA2 Dual 10GbE SFP+ (unlocked)
CoolerArctic Freezer 4U-M
Fans- Arctic P12 MAX 5-pack (intake)
- 2x Noctua NF-A8 PWM Chromax (exhuast)
PSUCorsair HX1000i

Software

Host OS: Proxmox

I'm running the following VMs and LXCs:

NameTypeDescriptionAdditional notes
distccLXCDistributed compiler server
Docker TestVMTest Docker environment
Kubernetes (k8s)VMPrimary Kubernetes cluster3x Controlplane, 3x Workers
Kubernetes (RKE2)VMTest Kubernetes cluster1x Controlplane, 3x Workers
TrueNASVMNAS serverTo be moved to a dedicated machine (someday)
Home Assistant OSVMHome automation serverTo be moved to a dedicated machine
Windows Server 2022VMWindows serverActive Directory, DNS, DHCP, IIS

...and various other machines that I'm spinning up for testing.

k8s (main)
NameNamespaceDescriptionPods
TraefikingressIngress controllerTraefik
NetworknetworkingLoad balancerMetalLB
Storage stackstorageStorage servicesLonghorn, MinIO
Monitoring stackmonitoringMonitoring servicesPrometheus, Loki, Grafana, Graphite, Telegraf, Alertmanager
Database stackdatabaseDatabase servicesInfluxDB, Elasticsearch, Postgres, Redis
CI/CD stackcicdCI/CD servicesFlux, ArgoCD, GitHub runners
Dev stackdevDevelopment servicesSonarQube, Gitea, GitLab
Cloud stackcloudCloud servicesCoolify
Media stackmediaMedia servicesSonarr, Radarr, Lidarr, Readarr, Prowlarr, qBittorrent, Jellyseerr, reiverr, Autobrr, OpenBooks, Komga, Kaizoku, Ente, Immich
RKE2
NameNamespaceDescriptionPods
TraefikingressIngress controllerTraefik
NetworknetworkingLoad balancerMetalLB
Storage stackstorageStorage servicesLonghorn, MinIO
Monitoring stackmonitoringMonitoring servicesPrometheus, Loki, Grafana, Graphite, Telegraf, Alertmanager
MattermostmattermostChat service for teamsMattermost
TeamSpeak 5teamspeakVoice chat serverTeamSpeak
TrueNAS

Pool: Main

VDEVTypeDisksDescription
Data2x Mirror4x 16TBMain storage
Metadata Special1x Mirror2x 118GBZFS metadata
DatasetDescription
data/*User data
mediaMedia library
backupsVarious backups

Apollo

Apollo serves as a media server and a Windows gaming machine.

Hardware

TypeName
CaseChieftec Cube Pro mATX (soon to be swapped for a rack-mount)
MotherboardASRock B660M-HDV
CPUIntel Core i3-13100
RAM2x HyperX Fury 32GB DDR4 3200MHz
GPU- Intel UHD Graphics 730 (Jellyfin)
- MSI GTX 1660 Gaming X (Windows)
Storage- 1x Samsung Evo 970 Plus 500GB M.2 (Proxmox, VMs, LXC containers)
- NFS connection to Zeus's media share
NIC- Built-in
- IOCREST Realtek 8125B Quad 2.5GBase-T RJ45
CoolerArctic Freezer 34 eSports
Fans2x Noctua Redux 120mm
PSUCorsair RM550x

Software

Host OS: Proxmox

I'm running the following VMs and LXCs:

NameTypeDescriptionAdditional notes
JellyfinLXCMedia serveriGPU and QSV passthrough
Windows 11VMRemote Windows machineGPU passthrough
TrueNASVMBackup serverTemporarily, until I build a dedicated backup NAS

Hephaestus

Hephaestus is the name of my Raspberry Pi cluster. It's still in the works, but I'm planning to run k3s on it for running various critical services that need the HA.

(coming soon)

Hardware

DeviceRole
Raspberry Pi 5 8GBServer node (etcd)
Raspberry Pi 5 8GBServer node (etcd)
Raspberry Pi 5 8GBServer node (etcd)

Software

Host OS: DietPi

k3s
NameNamespaceDescriptionPods
TraefikingressIngress controllerTraefik
NetworknetworkingLoad balancer, certificate manager, dns server, authenticationMetalLB, Cert Manager, AdGuard Home, Authelia, lldap
RancherrancherRancher managementRancher
Storage stackstorageStorage servicesLonghorn, MinIO
Monitoring stackmonitoringMonitoring servicesUptime Kuma, OneUptime, Plausible, Prometheus, Loki, Grafana, Graphite, Telegraf, Alertmanager
Database stackdatabaseDatabase servicesInfluxDB, Elasticsearch, Postgres, Redis, undb
CI/CD stackcicdCI/CD servicesFlux, ArgoCD, GitHub runners, n8n, ansible gui,
OtherotherOther servicesBitwarden, FreshRSS, Homarr, Portainer, Dockge, Wiki.js, Sink, your_spotify, OpenSign, Paperless, Outline, Mattermost, Plane, penpot, Excalidraw, cal.com, memos, draw.io, mastodon

Other devices

I have a few other devices running in my Homelab that I'm using for various purposes:

DeviceRole
ZimaBladeTesting environment
Raspberry Pi 4 4GBADS-B receiver, NTP server
Raspberry Pi 4 2GBPiKVM
Raspberry Pi 3 B+OctoPrint (Prusa MK3S+)
Raspberry Pi Zero WNUT server
Raspberry Pi ZeroCurrently unemployed 😔