Over recent years, I've progressively delved deeper into homelabbing. What began with a Raspberry Pi and an old laptop has evolved into a modest server rack with a capable dedicated server.
The Hardware
My setup includes a 9U rack housing several components:
- A 1U rack-mountable power strip.
- A 1U patch panel.
- A 1U unmanaged switch.
- A 2U server.
- A 1U rack shelf housing a Raspberry Pi.
The centerpiece of this setup is undoubtedly the server. While it's not particularly extraordinary, it features consumer-grade hardware: a B550 Mortar Motherboard, a Ryzen 2600 CPU, a cute GT710 GPU, and 16 GB of RAM. Ideally, I'd upgrade to server-grade hardware and components optimized for power efficiency, but I've largely relied on what I had available or could acquire inexpensively.
The Software
Initially, I opted for Ubuntu Server as the operating system, given my familiarity with it from transforming my old laptop into a server. However, as I advanced in my homelab journey, I explored other options like virtualization, LXC, and systems like Proxmox. After delving into Proxmox for about a year, I appreciated its features and the ability to segregate different applications into VMs or containers. However, certain tasks became overly complicated, leading me back to Ubuntu Server.
One concept that resonated with me was containerization, which leads me to Portainer. I never really learned Docker from the ground up though, it was always something that came to me peace by peace and honestly still is. Portainer, with its user-friendly interface, significantly lowered the entry barrier for Docker, prompting me to use it more extensively.
Another key component is the Nginx Proxy Manager. Essentially, it's a UI for configuring Nginx as a reverse proxy. It's incredibly useful for securely routing requests by domain to the appropriate service or Docker container when hosting web projects on my homelab.
Remembering the plethora of services and their respective ports on my server was cumbersome, so I implemented Heimdall as a server dashboard. It's been an indispensable tool in my setup.
Providing an exhaustive list of everything I've hosted would be lengthy, but here's a brief overview:
- Pi-hole as a DNS server and network-wide ad blocker.
- WireGuard VPN Server (replaced by Tailscale).
- Grafana and InfluxDB.
- PostgreSQL for testing databases in side projects.
- Jellyfin