~/homelab

Inside my home lab

A hands-on extension of my work as a Cloud Solution Architect: the place where I break things safely, learn new technology before I recommend it, and run the self-hosted services I use every day.

My home lab rack

It started as a few VMs and has grown into a full stack: virtualization, containers, storage, observability, local AI and a hybrid connection into Azure.

Network

The network runs on Ubiquiti, with a Cloud Gateway at the core handling routing, firewall and VLANs. Workloads are segmented, so management traffic, IoT, trusted devices and lab VMs never share a broadcast domain.

A live site-to-site VPN connects the lab to my Azure virtual network through an Azure VPN gateway, so on-premises workloads reach Azure resources over private IPs without touching the public internet. Azure Private Endpoints and DNS Private Resolver keep service traffic private end to end. I wrote up both: the dual-region VPN gateway build and the Private Endpoints and DNS setup.

Compute

I ran VMware vSphere for many years before switching to Proxmox VE for a change of scenery. Today it’s a three-node cluster on Ceph storage, hosting Windows Server VMs (Active Directory domain controllers and DNS), Linux VMs and the infrastructure behind everything else.

The domain controllers double as the custom DNS servers for the Azure VNet, with conditional forwarders bridging on-premises DNS and Azure’s private DNS zones. It lets me work in the same kind of environment as my enterprise customers. See the Proxmox 8 to 9 upgrade and the Ubuntu Cloud-Init template for how the cluster is run.

Storage

TrueNAS provides NFS and SMB shares to the Proxmox cluster and hosts several container workloads, including the AI agent stack. Datasets are tiered, so critical config data, media and backups stay separate.

Containers and reverse proxy

Containers run on Docker, managed by Portainer, with Traefik handling the reverse proxy and automatic TLS certificates. Traefik picks up new containers from their Docker labels, so publishing a new service over HTTPS takes a two-line config change.

Observability

Metrics, logs and uptime all land in one place: Prometheus, Loki and Grafana, fed by Grafana Alloy and a set of exporters for Proxmox, TrueNAS and UniFi. The full build is in Proxmox 9 Observability.

AI and automation

I’m learning to run AI locally, with Ollama and LM Studio as the model backends and OpenClaw as a multi-agent orchestration layer. Each agent has one job: TACITUS answers infrastructure questions through Proxmox, TrueNAS and Prometheus integrations, and SCRIBE writes documentation.

MCP (Model Context Protocol) servers are self-hosted in Portainer over HTTP/SSE, so Claude, Claude Code, Cursor and VS Code can all connect to the same server instances without a separate deployment for each client.

Hybrid cloud

The lab is deliberately connected to Azure. With the site-to-site VPN, Private Endpoints and DNS configuration, it works as an on-premises extension of an Azure VNet. That mirrors real enterprise hybrid architectures, and gives me a realistic place to validate Azure networking patterns before I recommend them at work.

What’s running

Every service below runs in the lab. Each card opens its folder in my HomeLab repository on GitHub, with its Docker Compose file and setup notes.

Reverse proxy and remote access

DNS and network

Observability

Infrastructure and automation

AI and search

Home and dashboards

Files and documents

Reading and bookmarks

Media

3D printing

Games

Want the details?

The guides walk through how each piece was built, including what broke along the way.