# Manu's home server architecture - black & white minimal (v4, chat-legible) # Verified live 2026-10-01 from inside the Hermes LXC (192.168.8.234). # Solid = verified reachable. Dashed = verified NOT answering / needs attention. classes: { n: {style: {fill: "transparent"; stroke: "#000000"; font-color: "#000000"; font-size: 30}} c: {style: {fill: "transparent"; stroke: "#000000"; font-color: "#000000"; font-size: 32; bold: true}} dead: {style: {fill: "transparent"; stroke: "#000000"; font-color: "#000000"; font-size: 30; stroke-dash: 3}} } direction: down EDGE: { class: c label: "1 - UPLINK / EDGE" direction: right CGNAT: {class: dead; label: "ISP carrier NAT\n100.107.128.1\nno inbound ports"} Archer: {class: n; label: "Archer VR400\n192.168.1.1\nupstream NAT"} Beryl: {class: n; label: "GL.iNet Beryl AX\n192.168.8.1\nDHCP + DNS"} } PVE: { class: c label: "2 - PROXMOX VE @192.168.8.100 :8006 ssh :22 476 GB NVMe" direction: right DNS: {class: dead; label: "LXC 110\n.10\nPi-hole\nweb UP\nDNS DOWN"} Arr: {class: n; label: "LXC 120\n.20\nArr stack\n:8989 :7878\n:9696 :6767"} JF: {class: n; label: "LXC 130\n.30\nJellyfin\n:8096"} DL: {class: n; label: "VM\n.40\nDocker\nqBittorrent\n:8080"} HAOS: {class: c; label: "HAOS VM .101\nHA :8123\nMQTT :1883\nZ2M addon"} Hermes: {class: c; label: "LXC 200 .234 this box\nHermes dash :9119\nAPI :8642\ncron x8 restic-R2"} } DEVICES: { class: c label: "3 - LAN DEVICES" direction: right Dongle: {class: n; label: "Sonoff ZBDongle-E\nZigbee coordinator"} Mesh: {class: n; label: "Zigbee mesh 2.4 GHz\n6 light groups live"} AirPlay: {class: n; label: ".116 AirPlay\nunnamed"} Unknown: {class: dead; label: ".174 pingable\nno ports"} } EDGE.CGNAT -> EDGE.Archer: "NAT" EDGE.Archer -> EDGE.Beryl: "double NAT" EDGE.Beryl -> PVE: "LAN 192.168.8.0/24" EDGE.Beryl -> PVE.DNS: "DNS handed out" PVE.DL -> PVE.Arr: "feeds" PVE.Arr -> PVE.JF: "library" PVE.HAOS -> DEVICES.Dongle: "USB serial" DEVICES.Dongle -> DEVICES.Mesh: "zigbee" PVE.Hermes -> PVE.HAOS: "HA API" PVE.Hermes -> PVE.Arr: "arr APIs" note: { shape: text label: "no /dev/net/tun in the Hermes LXC -> Tailscale cannot run here.\nAll remote access is outbound: Cloudflare Tunnel only (hermes-dash.basestead.com)." style.font-color: "#000000" style.font-size: 26 }