Lab Infrastructure
Production-grade patterns in a homelab environment
╔═══════════════════════════════════════════════════════════════════════════════════════╗
║ H - N E T W O R K L A B ║
╚═══════════════════════════════════════════════════════════════════════════════════════╝
┌─────────┐
│INTERNET │
└────┬────┘
│
┌───────────────────────────────────┴───────────────────────────────────┐
│ h-fw (FortiGate) │
│ AS 65000 │
│ BGP Hub │
└───────────────────────────────────┬───────────────────────────────────┘
│
┌─────────────────────────────────────────────┼─────────────────────────────────────────────┐
│ │ │
eBGP eBGP eBGP
│ │ │
┌─────────────────────┴─────────────────────┐ ┌─────────────────┴─────────────────┐ ┌─────────────────────┴─────────────────────┐
│ h-srv (Server) │ │ h-ws (Workstation) │ │ h-eve (EVE-NG) │
│ AS 65010 │ │ AS 65100 │ │ AS 65101+ │
│ │ │ │ │ │
│ ┌─────────────────────────────────────┐ │ │ ┌─────────────────────────────┐ │ │ ┌─────────────────────────────────────┐ │
│ │ SERVICES │ │ │ │ AI STACK │ │ │ │ NETWORK LABS │ │
│ │ │ │ │ │ │ │ │ │ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌───────┐ │ │ │ │ ┌────────┐ ┌────────────┐ │ │ │ │ ┌─────────────────────────┐ │ │
│ │ │ HAProxy │ │ Grafana │ │ Gitea │ │ │ │ │ │ Ollama │ │ Open WebUI │ │ │ │ │ │ Lab Topology 1 │ │ │
│ │ │ (LB) │ │ (Mon) │ │ (Git) │ │ │ │ │ │ (LLM) │ │ (Chat) │ │ │ │ │ │ │ │ │
│ │ └─────────┘ └─────────┘ └───────┘ │ │ │ │ └────────┘ └────────────┘ │ │ │ │ │ ┌───┐ ┌───┐ ┌───┐ │ │ │
│ │ │ │ │ │ ┌────────┐ │ │ │ │ │ │PE1│─│PE2│─│PE3│ │ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌───────┐ │ │ │ │ │ oterm │ │ │ │ │ │ └─┬─┘ └─┬─┘ └─┬─┘ │ │ │
│ │ │ NetBox │ │ Vault │ │Nornir │ │ │ │ │ │ (TUI) │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ (IPAM) │ │ (Creds) │ │(Auto) │ │ │ │ │ └────────┘ │ │ │ │ │ ┌─┴─────┴─────┴─┐ │ │ │
│ │ └─────────┘ └─────────┘ └───────┘ │ │ │ │ │ │ │ │ │ │ Spine/Core │ │ │ │
│ │ │ │ │ └─────────────────────────────┘ │ │ │ │ └───────┬───────┘ │ │ │
│ │ ┌──────────────────────────────┐ │ │ │ │ │ │ │ │ │ │ │
│ │ │ TimescaleDB │ │ │ │ ┌─────────────────────────────┐ │ │ │ │ ┌────┴────┐ │ │ │
│ │ │ (Metrics Store) │ │ │ │ │ ROUTING │ │ │ │ │ │Exit Leaf│ │ │ │
│ │ └──────────────────────────────┘ │ │ │ │ │ │ │ │ │ └────┬────┘ │ │ │
│ │ │ │ │ │ ┌───────────────────────┐ │ │ │ │ │ │ pnet │ │ │
│ └─────────────────────────────────────┘ │ │ │ │ h-router (FRR) │ │ │ │ │ └──────────┼─────────────-┘ │ │
│ │ │ │ │ BGP / OSPF │ │ │ │ │ │ │ │
│ ┌─────────────────────────────────────┐ │ │ │ └───────────────────────┘ │ │ │ │ ┌──────────┴─────────────┐ │ │
│ │ ROUTING │ │ │ │ │ │ │ │ │ Lab Topology N │ │ │
│ │ │ │ │ └─────────────────────────────┘ │ │ │ │ ... │ │ │
│ │ ┌───────────────────────────────┐ │ │ │ │ │ │ └────────────────────────┘ │ │
│ │ │ h-router (FRR) │ │ │ │ ┌─────────────────────────────┐ │ │ │ │ │
│ │ │ BGP / OSPF │ │ │ │ │ METRICS │ │ │ │ │ │
│ │ └───────────────────────────────┘ │ │ │ │ │ │ │ │ │ │
│ │ │ │ │ │ ┌───────────────────────┐ │ │ │ │ │ │
│ └─────────────────────────────────────┘ │ │ │ │ h-mon-collector │ │ │ │ │ │ │
│ │ │ │ │ (Telegraf) │──┼──┼─────┼──┼───── metrics ──────│ │ │
│ ┌─────────────────────────────────────┐ │ │ │ └───────────────────────┘ │ │ │ │ │ │ │
│ │ METRICS │ │ │ │ │ │ │ │ ┌─────────────────│─────────────┐ │ │
│ │ │ │ │ └─────────────────────────────┘ │ │ │ │ h-mon-collector │ │ │
│ │ ┌───────────────────────────────┐ │ │ │ │ │ │ │ (Telegraf) │ │ │
│ │ │ h-mon-collector │ │ │ │ ┌─────────────────────────────┐ │ │ │ └───────────────┬───────────────┘ │ │
│ │ │ (Telegraf) │ │ │ │ │ GPU │ │ │ │ │ │ │
│ │ └───────────────────────────────┘ │ │ │ │ │ │ │ └──────────────────┼──────────────────┘ │
│ │ │ │ │ │ ┌───────────────────────┐ │ │ │ │ │
│ └─────────────────────────────────────┘ │ │ │ │ NVIDIA RTX GPUs │ │ │ └─────────────────────┼─────────────────────┘
│ │ │ │ │ (AI Inference) │ │ │ │
└───────────────────────────────────────────┘ │ │ └───────────────────────┘ │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────┘ │ │
│ │ │ │
│ └───────────────────────────────────┘ │
│ │ │
│ │ │
└─────────────────────────────────────────────┴─────────────────────────────────────────────┘
│
metrics flow
│
▼
┌───────────────────────────────┐
│ TimescaleDB (h-srv) │
│ Metrics Store │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ Grafana (h-srv) │
│ monitor.hb-l.nl │
└───────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ PUBLIC SERVICES │
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ h-network.nl │ │ monitor.hb-l.nl│ │ vault.hb-l.nl │ │ git.hb-l.nl │ │ netbox.hb-l.nl │ │ chat.hb-l.nl │ │ oterm.hb-l.nl │ │
│ │ Website │ │ Grafana │ │ Vaultwarden │ │ Gitea │ │ NetBox │ │ Open WebUI │ │ oterm │ │
│ └───────┬────────┘ └───────┬────────┘ └───────┬────────┘ └───────┬────────┘ └───────┬────────┘ └───────┬────────┘ └───────┬────────┘ │
│ │ │ │ │ │ │ │ │
│ └───────────────────┴───────────────────┴───────────────────┴───────────────────┴───────────────────┴───────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────┐ │
│ │ HAProxy (h-srv) │ │
│ │ Reverse Proxy / LB │ │
│ └───────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌───────────────────────────────┐
│ AUTOMATION FLOW │
│ │
│ NetBox ──► Nornir ──► Labs │
│ (Truth) (Auto) (Config)│
│ │
└───────────────────────────────┘
Why This Setup?
This lab runs the same patterns I recommend to clients: proper BGP design with a hub-spoke topology, centralized monitoring with time-series metrics, and network automation driven by a source of truth. No shortcuts, no "homelab hacks" – just production-grade infrastructure at a smaller scale.
The EVE-NG integration allows spinning up complex network topologies that peer directly with the physical infrastructure via BGP. An exit leaf in each lab topology provides reachability to the rest of the network – exactly how you'd design it in a real data center.
BGP Hub-Spoke
FortiGate firewall as the BGP hub (AS 65000). All hosts and lab environments peer with it using eBGP. Dynamic routing means no static routes to maintain.
EVE-NG Labs
Network lab platform running MPLS, EVPN and DC fabric topologies. Labs peer with the physical network through an exit leaf – full reachability without NAT.
Metrics Pipeline
Telegraf collectors on every host pushing to TimescaleDB. Grafana dashboards for CPU, memory, temperatures, Docker containers and network stats.
Automation Stack
NetBox as the source of truth, Nornir for configuration automation. Lab devices get their configs from the same pipeline used for production networks.
AI Workstation
NVIDIA GPUs running Ollama for local LLM inference. Open WebUI and oterm provide chat interfaces for testing AI-assisted network operations.
Containerized Services
Everything runs in Docker: HAProxy, Grafana, Gitea, NetBox, Vaultwarden. Easy to backup, migrate and reproduce on different hardware.