Overview
What started as a single Raspberry Pi 5 used for my first year of homelab experimentation has evolved into a multi-node on-premise infrastructure spanning two independent Proxmox hosts and a dedicated Raspberry Pi service node.
The environment is built primarily for self-hosted services, infrastructure development, virtualization, networking, AI workloads and experimentation. The two Proxmox hosts run virtual machines and TrueNAS instances, while the Raspberry Pi provides additional network services and an independent backup copy of important NAS data.
The infrastructure currently supports more than 100 containers and 10 virtual machines, along with a three-node K3s Kubernetes cluster, local AI workloads, NAS storage, network services and remote-access infrastructure.
Goals
- Build an on-premise environment for experimenting with virtualization, containers, Kubernetes, networking and self-hosted services.
- Reduce reliance on cloud infrastructure by running applications, storage and AI workloads locally.
- Create a flexible environment where new VMs, containers and services can be provisioned and tested without affecting critical workloads.
- Maintain independent storage and backup paths across multiple physical machines for better resilience and recovery.
- Provide secure remote access to selected services without directly exposing internal services to the public internet.
Architecture
The current infrastructure consists of two independent Proxmox hosts connected to the same local network, along with a Raspberry Pi 5 that operates independently from the virtualization environment.
The first Proxmox host is an ASUS NUC 14 Pro Plus and acts as the primary infrastructure node, hosting services such as TrueNAS, networking, applications, SMTP and testing workloads. The second host is a custom-built PC with a dedicated NVIDIA GPU and additional storage, primarily used for AI workloads, backups, Kubernetes experimentation and other compute-heavy workloads.
The Raspberry Pi 5 started as my original and only homelab server during 2024-2025. It now serves as an independent network and backup service node, providing additional reverse-proxy and VPN capabilities as well as an occasional synchronized copy of NAS data.
Hardware
The infrastructure is distributed across three physical machines, each serving a different role based on its compute, storage and networking capabilities.
| Node | Hardware | Storage | Primary Role |
|---|---|---|---|
| Node 1 | ASUS NUC 14 Pro Plus Core Ultra 5 125H 64 GB DDR5-4800 |
2 TB Corsair NVMe 4 TB Samsung 990 Pro |
Primary NAS, infrastructure services, applications and testing |
| Node 2 | Custom PC Core Ultra 7 265K 64 GB DDR5-6000 RTX 3060 12 GB |
1 TB WD Blue NVMe 8 TB Seagate IronWolf |
AI workloads, NAS backup, Kubernetes and experimentation |
| Node 3 | Raspberry Pi 5 8 GB RAM |
256 GB SATA SSD 1 TB + 1 TB + 2 TB HDD |
Network services, VPN, reverse proxy and backup copy |
Virtual Machines & Containers
The two Proxmox hosts use virtual machines to isolate services and workloads by function. This keeps infrastructure services, applications, storage and experimental workloads separated while allowing resources to be allocated independently.
The ASUS NUC hosts the primary infrastructure workloads, including TrueNAS, media, applications, networking, Minecraft, SMTP and testing. The custom PC hosts the AI environment, backup storage, autonomous agent, and a three-VM K3s Kubernetes cluster.
VM IDs use a 10x and 20x numbering scheme to avoid conflicts when storing backups from both Proxmox hosts at the same destination.
Proxmox - ASUS NUC
Proxmox - Custom PC
Networking
The homelab uses the ISP-provided router as the primary gateway and DHCP server, with all physical nodes and virtual machines connected through an unmanaged network switch.
DHCP reservations are used to assign consistent local IP addresses to infrastructure services and devices. The router is configured to use the Network VM’s IP address as the custom DNS server, allowing devices on the network to resolve internal services through AdGuard Home and Unbound.
Services that require direct inbound connectivity use port forwarding on the ISP router to route traffic to the appropriate internal services. Public-facing HTTP and HTTPS services are additionally exposed through Cloudflare Tunnel, avoiding the need to directly expose those services through the router.
Remote Access
I initially experimented with an NGINX reverse proxy to access self-hosted services remotely. I later switched to Cloudflare Tunnel because it offered a more convenient way to publish selected services without managing individual public-facing reverse-proxy configurations.
Cloudflare Tunnel runs as Docker containers on both the Network VM and Raspberry Pi 5. I use subdomains to provide remote access to the local HTTP and HTTPS services that I choose to expose.
For direct access to the home network rather than individual services, I use Twingate to establish a private connection into the homelab. I have also experimented with WireGuard as an alternative VPN-based approach for remote network access.
Challenges & Solutions
Building the homelab incrementally introduced several challenges around resource allocation, service isolation, remote access and maintaining reliable backups across independent systems.
As the number of workloads increased, separating services into dedicated VMs made it easier to manage resources and isolate failures. The second Proxmox host also provided additional compute and storage capacity for workloads that would otherwise compete with the primary infrastructure.
Remote access was another area that evolved over time. After initially experimenting with an NGINX reverse proxy, I moved to Cloudflare Tunnel for simpler service exposure through subdomains, while using Twingate for private access to the home network.
Maintaining independent storage across both Proxmox hosts also allowed me to implement cross-host VM backups, reducing dependence on a single physical machine and providing a recovery path in case of host failure.
The homelab continues to serve as an experimental environment, allowing new infrastructure technologies and architectures to be tested without requiring changes to the core services.
Conclusion
The homelab has evolved from a single Raspberry Pi 5 into a distributed on-premise environment spanning two Proxmox hosts and an independent Raspberry Pi service node.
It now provides the foundation for self-hosted applications, NAS storage, Kubernetes, local AI, networking, remote access and infrastructure experimentation. More importantly, operating the environment end to end has provided practical experience with virtualization, Linux, containers, networking, storage, monitoring, backups and service deployment.
The infrastructure remains an ongoing project, with new services and technologies continuously being introduced, tested and integrated as I expand the capabilities of the homelab.