Skip to content

Infrastructure

The homelab runs on a single Proxmox hypervisor hosting one VM — OPNsense, the router and firewall — while the workloads themselves live on two bare-metal uCore servers. The guiding principle is reproducibility: the operating system is immutable and image-based, so there is no in-place configuration to drift, and everything above it is provisioned declaratively with Ansible. No server is configured by hand; if a machine were lost, it could be rebuilt from an Ignition config plus the Ansible repository.

Storage is centralised on a Synology DS920+ and shared to the servers over NFS, which keeps the containers stateless where possible and the bulk data in one place that is itself backed up off-site. The two servers split responsibilities cleanly: monitoring runs the observability stack (Prometheus, Grafana, Loki) as rootless Podman containers, and kontti runs the media, AI and application workloads. Why each of these choices was made — immutable OS, Podman over Kubernetes, the rootless/rootful split — is documented on the Architecture decisions page.

graph TD
    proxmox[Proxmox hypervisor] --> opnsense[OPNsense VM<br/>router · firewall · DNS]
    opnsense --> monitoring[monitoring<br/>Prometheus · Grafana · Loki<br/>rootless Podman]
    opnsense --> kontti[kontti<br/>media · AI · apps<br/>rootful Podman]
    opnsense --> nas[Synology DS920+<br/>NFS · backup target]
    kontti -.->|NFS| nas
    monitoring -.->|scrape| kontti
    monitoring -.->|scrape| proxmox
    nas -.->|Hyper Backup| b2[(Backblaze B2<br/>off-site)]
Component Purpose
Proxmox Hypervisor, runs the OPNsense router VM
monitoring Prometheus + Grafana + Loki observability stack
kontti Media, AI and application services
Synology DS920+ NFS shared storage and backup target