Homelab Infrastructure: Final Architecture and Key Learnings
A complete overview of my homelab infrastructure, covering architecture, design decisions, and key lessons learned from building and operating it.
This post brings together the full homelab architecture, summarising how the system is designed, how components interact, and the key lessons learned from building and operating it.
The goal was not just to run services, but to design a structured, reliable, and observable environment that reflects real-world infrastructure principles.
System Overview
The homelab consists of:
- Proxmox for virtualisation
- OpenMediaVault for storage
- Docker for containerised workloads
- Pi-hole and Unbound for DNS
- Nginx Proxy Manager for ingress and SSL
- Prometheus and Grafana for monitoring
Each component has a defined role within the system.
End-to-End Flow
A typical request flows through the system as follows:
Client
↓
DNS (Pi-hole + Unbound)
↓
Cloudflare
↓
Reverse Proxy (Nginx Proxy Manager)
↓
Docker / VM Service
↓
Storage (if required)
This flow demonstrates how networking, DNS, and service layers interact.
Design Principles
The system is built around a few core principles:
- Separation of concerns across components
- Predictable networking and addressing
- Minimal exposure of services
- Observability and monitoring
- Data integrity and protection
These principles guided decisions throughout the build.
What Worked Well
Several design choices proved particularly effective:
- Centralised ingress through a reverse proxy
- Local DNS for service discovery
- Containerised workloads for isolation
- Monitoring for visibility and debugging
- RAID-backed storage for critical data
These created a stable and manageable system.
Challenges and Lessons
Building and operating the system highlighted several key lessons:
- DNS is foundational and impacts everything
- Docker networking requires careful understanding
- Small misconfigurations can have wide effects
- Monitoring is essential for diagnosing issues
- Storage must be handled carefully to avoid data loss
These lessons came from real issues encountered during setup and operation.
Trade-offs and Decisions
Not every decision was about maximising features.
Some deliberate trade-offs included:
- Choosing RAID1 over more complex RAID levels
- Keeping the network simple rather than over-segmented
- Avoiding unnecessary tooling or automation
This kept the system understandable and maintainable.
Operational Mindset
The focus throughout was not just building, but operating the system.
This includes:
- Monitoring system health
- Managing updates and changes
- Validating backups
- Troubleshooting issues
This reflects how real infrastructure environments are managed.
Key Takeaways
- Infrastructure should be designed, not just assembled
- Simplicity improves reliability
- Understanding fundamentals is more valuable than adding tools
- Observability and control are critical
- Real learning comes from troubleshooting and iteration
Next Steps
This homelab will continue to evolve, with future focus on:
- Kubernetes and container orchestration
- Infrastructure as Code (Terraform)
- Automation and CI/CD pipelines
These will build on the foundation established here.