Architecture: What I Actually Run

Three physical hosts, one router, one LAN, and a clear split of roles so that services stay manageable.


Physical layout

So: one Windows Hyper-V host (Desktop Host) with four VMs, one Ubuntu NAS, and one bare-metal Ubuntu host (Proxy Host); nginx and Pi-hole spread across all three active hosts.


Why this split?


Diagram (conceptual)

                              Internet
                                      │
                                      ▼
                     ┌─────────────────────────────────────┐
                     │ Network Closet (on UPS)              │
                     │                                      │
                     │  ISP ONT → MikroTik hEX (router)    │
                     │            DHCP, firewall, NAT       │
                     │                    │                  │
                     │  PoE Switch ───────┴──── Proxy Host  │
                     │   │  │  │  │             (nginx,     │
                     │   │  │  │  │              Pi-hole 3, │
                     │   │  │  │  │              keepalived)│
                     └───┼──┼──┼──┼─────────────────────────┘
                         │  │  │  │
                  ┌──────┘  │  │  └──────┐
                  │         │  │         │
             ┌────▼────┐ ┌──▼──▼──┐ ┌────▼────┐
             │  AP 1   │ │ AP 3/4 │ │  AP 2   │
             │(5-port) │ │ (Wi-Fi │ │(5-port) │
             │ + Wi-Fi │ │  only)  │ │ + Wi-Fi │
             └────┬────┘ └─────────┘ └────┬────┘
                  │ wired                  │ wired
                  ▼                        ▼
    ┌─────────────────────────┐  ┌─────────────────────────┐
    │ Desktop Host            │  │ NAS Host                │
    │ Win + Hyper-V           │  │ Ubuntu + ZFS            │
    │─────────────────────────│  │─────────────────────────│
    │ Windows:                │  │ 4×8 TB RAIDZ1           │
    │  Plex, Ollama (RTX 3070)│  │ SMB shares (media,      │
    │                         │  │   backups, documents)   │
    │ VMs:                    │  │ Pi-hole 2 (Docker)      │
    │ • Docker VM             │  │ Backup target (all hosts)│
    │   Vaultwarden, Mealie,  │  │ Grafana Alloy agent     │
    │   Paperless, ConvertX,  │  └─────────────────────────┘
    │   IT-Tools, Donetick,   │
    │   Homepage, OpenWebUI,  │
    │   Uptime Kuma, Pi-hole 1│
    │   Loki, Prometheus,     │
    │   Grafana               │
    │ • nginx VM (BACKUP)     │
    │ • Minecraft VM          │
    │ • Stoat Chat VM         │
    └─────────────────────────┘

Each AP has a built-in 5-port switch. One port per AP provides 1 Gbps wired backhaul to the primary PoE switch; the remaining ports connect local devices. The Desktop Host and NAS Host are each wired to an AP’s switch port — not wireless, but routed through the AP’s backhaul to the main switch. The Proxy Host is the only infrastructure box wired directly to the primary PoE switch (co-located in the network closet).


Tech choices in one sentence

If you want to go deeper on any of these, the links in the next sections point to official docs.

← Back to index | Next: Network →