Home Lab · Architecture overview

Public-safe snapshot · 24 October 2026 · ten connected architecture views

This share deliberately omits original addressing, domains, device identifiers, management routes, detailed inventory/route/evidence tables and local file paths. It is not the private operational atlas.

Estate overview

Estate overviewA map of responsibilities, not a promise of redundancy. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 01 Estate overviewA map of responsibilities, not a promise of redundancy. 24 OCT 2026 requests / accesslogical LAN serviceslogical LANconfigured VPN / local routeNFShostsexports → USBPeople & clientsPrivate browsers · servicedomainsHome / Hermes WireGuardInternet HTTPS · direct servicesUniFi logical fabricGateway · 6 managed devices6 VLANs · 5 Wi-Fi broadcasts168 configured firewall policiesHostinger VPSHermes controller / gatewayRemote local inference ontabletNot a full VPS-host inventoryStorage NAS[private] · DSM releaseStorage + NPM + Portainer hubs29 Docker objects: 20 running / 9retainedHAOS [private]: owner-reported NAS-hostedNot an independent failure domainHypervisorDell Precision 3571 · i9-12900H31.03 GiB OS-visible · ZFS mirrorGuest Plex · Guest Apps VMGuest Web VM · Guest AdGuardManagement [private] · Storage [private]One creative tabletEthernet [private]Wi-Fi [private]: same deviceOllama + ComfyUI respond on[private]PC [private] optional / notrespondingNo automatic PC / cloud switchRecovery layers02:00 native logical exports03:00 USB Hyper Backup selectionNative guest archives · limits applyGuest application homesMedia VM [private] · Apps VM [private] · Web VM [private]Ubuntu guests on Hypervisor11 running Docker objects across VMsEvidence, not telemetryFresh metadata: 24 October 2026Acceptance receipts are separate.No infrastructure changes byatlas. Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.

Network and segments

Network & logical fabricConfigured segments, managed devices and access surfaces. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 02 Network & logical fabricConfigured segments, managed devices and access surfaces. 24 OCT 2026 WAN contextVPN terminationgateway / policylogical membership onlyconfigured segmentsWAN contextPrimary and secondary Internet uplinksRoles / active state not returnedNo site-to-site tunnels inventoriedGatewayUCG Fiber · [private]Firmware release · captured ONLINERoutes VLANs / hosts WireGuardWireGuard × 2Home network Home · [private]Hermes · [private]Enabled config ≠ handshakeManaged logical fabric — physical switch uplinks are not inventoriedDashed branches below show managed membership only. They do not assert cabling, link speed or switch-to-switch topology.67 connected clients at capture: 16 wired / 51 wireless. Firewall: 168 enabled policies (85 ALLOW / 83 BLOCK).Access pointU7 Pro XG[private]FW release · ONLINEAccess pointU7 Pro XG[private]FW release · ONLINESwitchUSW Flex 2.5G 5[private]FW release · ONLINESwitchUSW Flex 2.5G 5[private]FW release · ONLINESwitchUS 8[private]FW release · ONLINEPrivate VLAN · Management[private] · GW [private]DHCP server · Internet / mDNS configuredPrivate VLAN · Trusted[private] · GW [private]DHCP server · Internet / mDNS configuredPrivate VLAN · IoT[private] · GW [private]DHCP server · Internet / mDNS configuredPrivate VLAN · Guest[private] · GW [private]DHCP server · Internet / mDNS configuredPrivate VLAN · Shadow[private] · GW [private]DHCP server · Internet / mDNS configuredPrivate VLAN · Storage[private] · GW [private]No DHCP · no Internet · no mDNSWireless networks · names withheldWireless networks · names withheld Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.

Servers and guests

Compute & virtualizationBridge ownership, actual guest allocations and shared storage views. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 03 Compute & virtualizationBridge ownership, actual guest allocations and shared storage views. 24 OCT 2026 built-inUSB app / tagged storagebacks guestsCT bridgeVM app bridgeHypervisor · Dell Precision 357112th Gen Intel(R) Core(TM) i9-12900H1 socket · 14 cores / 20 logical CPUs33,319,686,144 bytes RAM · 31.03 GiB OS-visibleTwo-NVMe local ZFS mirror · kernel releaseIntel GPU device exclusively → Guest PlexStorage views — do not add capacitieslocal-zfs · 894.36 GiB total / 803.23 GiB availablelocal directory · 803.36 GiB logical viewlocal and local-zfs share physical capacity.nas-proxmox · NFS · 500 GiB quota cap, not reservedrpool mirror-0 ONLINE · no known errors at captureBuilt-in NIC ownershipMgmt NIC → Mgmt bridge · [private]Management + Guest on this bridgeGuest net0: Mgmt bridge · firewall=1No new NAS storage VLAN addressUSB NIC ownershipApp NIC → App bridge · no host IP on bridgeGuest / Guest / Guest net0: App bridge · tag=1 · firewall=1Storage bridge → [private] · tagged Storage Private VLANHost storage source [private] → UCG [private] → NAS [private]Guest · DNS resolver[private] · unprivileged Ubuntu1 core · 1 GiB RAM · 8 GiB rootfs256 MiB swap · native AdGuardMgmt bridge · startup order 10No Docker object included hereGuest · Media VM[private] · Ubuntu8 vCPU · 8 GiB RAM32 GiB OS + 256 GiB state64 GiB scratch · backup=0Intel passthrough + virtiofs ROGuest · Apps VM[private] · Ubuntu4 vCPU · 6 GiB RAM32 GiB OS + 64 GiB app state[storage] · six Docker objectsApp bridge · startup order 25Guest · Web VM[private] · Ubuntu2 vCPU · 2 GiB RAM32 GiB OS + 32 GiB app stateWordPress + MySQL + agentApp bridge · startup order 30Accelerator & placement boundaryNVIDIA T600 is unchanged, not a freely shared accelerator. HAOS [private] is owner-reported NAS-hosted; it is not one of these Proxmox guests. Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.

Container groups

Docker workload atlasEvery visible runtime object, once — including retained cutover copies. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 04 Docker workload atlasEvery visible runtime object, once — including retained cutover copies. 24 OCT 2026 Storage NAS · [private] · Portainer endpoint 220 running + 9 retained stopped copies · roles grouped belowProxmox VM Docker homesEndpoints 4 / 3 / 5 · 11 running objectsNPM → active VM appsSix consumers share Gluetun namespaceRollback checkpoints — never run both identitiesDNS and ingress4 objects · captured runningAdGuardrunning · no healthcheckAdguard-Syncrunning · no healthcheckNGINXrunning · no healthcheckportainer-cerunning · no healthcheckObservability5 objects · captured runningBeszelrunning · healthyBeszel-Agentrunning · healthyDiunrunning · healthyDozzlerunning · healthyUptime-Kumarunning · healthyVPN media namespace7 objects · captured runningGluetunrunning · healthyProwlarrrunning · healthyqBittorrent-VUErunning · healthyRadarrrunning · no healthcheckSabnzbdrunning · no healthcheckSonarrrunning · no healthcheckSeerrrunning · healthyPrivate DB, remote and game4 objects · captured runningSeerr-DBrunning · healthyRustDesk-IDrunning · no healthcheckRustDesk-Relayrunning · no healthcheckMinecraft-Bedrock-Server-oldrunning · healthyRetained stopped copies9 objects · retained / stoppedHomarrstopped · stored unhealthyIT-Toolsstopped · stored unhealthyJoplinexited · no healthcheckJoplin-DBstopped · stored unhealthymealiestopped · stored unhealthyPlexstopped · stored unhealthyWordPressexited · no healthcheckWordPress-DBexited · no healthcheckretained manager copyexited · no healthcheckApps VM · [private]6 objects · captured runningHomarrrunning · healthyIT-Toolsrunning · healthyJoplinrunning · no healthcheckJoplin-DBrunning · healthymealierunning · healthyPortainer-Agentrunning · no healthcheckMedia VM · [private]2 objects · captured runningPlexrunning · healthyPortainer-Agentrunning · no healthcheckWeb VM · [private]3 objects · captured runningPortainer-Agentrunning · no healthcheckWordPressrunning · no healthcheckWordPress-DBrunning · no healthcheckCount boundaryHAOS add-ons, native AdGuard / Beszel,Hermes and other off-host engines areoutside these 40 Docker objects. Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.

Application platform

Application platformActive application homes, data dependencies and the NAS service core. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 05 Application platformActive application homes, data dependencies and the NAS service core. 24 OCT 2026 Apps VM · Guest · [private] · local [storage] app stateWeb VM · Guest · [private]service routingSQLSQL · internal networkupstream :hiddenupstream :hiddenprivate service portsupstream :hiddenNAS service coreStorage NAS · [private]NPM + DNS + PortainerBeszel / Kuma / Dozzle / DiunSeerr via VPN; PostgreSQL privateNative Compose owns VM appsNPM application ingressPrivate private service → private servicePublic private service → private serviceHTTP upstream routes to active VMs35 enabled / 50 configured hostsConfiguration ≠ public acceptanceRetained NAScopies9 stopped rollback objectsNo post-cutover sync backrestart=no · not active outagesStack records ≠ live VM stacksFence before any rollbackJoplinprivate port on hostNative Compose / systemdJoplin application → PostgreSQLJoplin-DBPostgreSQL · app network[storage]No published host DB portHomarrprivate service → private serviceSQLite in persistent [storage]Local Docker widget: Apps VM onlyNAS / Proxmox / hubs integrationsMealie + IT-ToolsMealie: private service → private serviceSQLite · [storage]IT-Tools: private service → private serviceAuthenticated static toolsWordPressprivate service → private serviceapp networkNative Compose / systemdWordPress-DBMySQL · app network[storage]No published host DB portWordPress files stay localDatabase boundaryCompanion databases are internal-only Docker ports; published app ports do not expose their database ports. Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.

DNS and access roles

DNS, HTTPS & direct accessName lookup is separate from the request path. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 06 DNS, HTTPS & direct accessName lookup is separate from the request path. 24 OCT 2026 01 / Name lookup — not an HTTPS transit hop02 / Private HTTPS request — its own connection03 / Public HTTPS — configured route, not a new security acceptanceDNS :hidden queryDNS answerHTTPS :hiddenHTTP / HTTPSprivate serviceNAT private portClient resolverqueryManagement / Trusted / IoTPrimary and secondary resolver rolesNo complete failover acceptanceAdGuard resolver setNAS [private] · Guest [private] · HA [private]36 identical rewrite records eachService names usually answer NAS [private]Answer toclientPrivate address or host recordClient then opens HTTPSNot a proxy request itselfGuest / Shadow: gateway/default DNS; custom resolver order not verified.Private browserUses resolved NAS addressTLS request to [private]NAS → NPM private listenerHost[private] → private serviceCustom private NPM HTTPS listenerActive upstreamApp host / app portNot the DNS resolver hopPublic clientCloudflare DNS / proxycontextOrigin / WAF / MFA notretestedGatewayprivate service → NAS[private]NAT rule: tcp_udpNo public origin address includedNAS → NPM public listenerprivate service → private serviceThen configured app upstreamEnabled config ≠ origin restriction proofDirect Plex · not the NPM routeInternet service traffic → [private]Plex also has independent enabled NPM routes.No new playback or public reachability test.Direct RustDesk · DNS-only native protocolsservice traffic · service traffic · service traffic → NAS [private]RustDesk-ID / RustDesk-Relay are not NPM HTTP upstreams.Management routes withheld from public view Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.

Media and storage

Plex & routed storageRead-only media, local state and a single dedicated Intel accelerator. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 07 Plex & routed storageRead-only media, local state and a single dedicated Intel accelerator. 24 OCT 2026 01 / Actual routed NFS network path — NAS remains on its original network02 / Media delivery chain — read-only at every shown boundaryservice trafficrouted NFSNFS4.1 ROvirtiofs ROwrites state / disposable transcodeHypervisor host source[private] · Storage bridgeUSB App NIC / App bridgeSource-pinned Storage Private VLANHost NFS4.1 clientUCG routed gateway[private] → Trusted networkStorage VLAN has no InternetFlow toward NAS service trafficNo invented NAS [private] addressStorage NAS export[private] · eth5 reports 10Gb/s[storage] · read-only NFSMedia / backup exports separateNAS media remains a dependencyNAS media source[storage]Read-only NFS4.1 exportNo bulk media in guest archiveProxmox host mount[storage]virtiofs dirid=plex-media-rocache=never · direct-io=0Guest / PlexcontainerGuest [storage] → container [storage]Bind RW=falseSame identity + five library pathsLocal durable stateGuest: 32 GiB OS + 256 GiB state[storage] → [storage][storage] → [storage]64 GiB scratch at [storage]Scratch excluded from native backupExclusive Intel accelerationGPU device → GuestIntel GPU is exclusively passed to PlexNVIDIA T600 remains unchangedGuarded [host] owns startupDocker restart_policy=no is intentionalAccepted / still unverified24 Oct: real hardware HLS + VM rebootNo new playback from atlas taskOpen: HDR / subtitles / long playbackOpen: 4 transcodes / 8 streamsOpen: host / cable / hard-NFS failures Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.

Backup and recovery

Backup & recoveryLogical exports, native archives and the boundary of recovery evidence. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 08 Backup & recoveryLogical exports, native archives and the boundary of recovery evidence. 24 OCT 2026 Native guest archives — manual evidence, not a new recurring scheduleexportsselectionrestoreLive application stateApps VM / Web VM native SQL + filesNAS Seerr SQL / roles + 11 local SQLiteRestricted NAS → guest SSH exportsNo live physical SQL data file copyingNo bulk Media or Downloads02:00 · DSM task11Native logical exports / snapshotsAtomic latest / last-good · keep724 artifacts = 5 SQL + 13 SQLite+ 6 file / config bundlesStatus re-read; no new export run03:00 · HyperBackupEurope/Dublin scheduleDocker folder / export selectionAttached USB destination[backup archive]Not offsite-isolation evidenceDated receipt — current status is not a rerunDated backup checkpoint receipt · private details omittedThe new generation inside USB, offsite isolation and full application restore are not proved.Existing USB success is not proof of the exact newly exported payload.Guest + VMs101/102/103Native NAS-hosted archives existPlex archive: 52.62 GiBApps VM: 2,838,893,951 bytesWeb VM: 2,380,122,873 bytesGuest excludes scratch / NAS mediaIsolated disk / configrestoreVM archives restored to isolated targetsTargets were unbooted and removedNot booted app recovery acceptanceNo recurring guest backup added500 GiB quota is not a reservationProtected hostprerequisitesNFS source / routing / networkvirtiofs mapping and Plex guardSeparate protected bundleRestore order must cover dependenciesMirror / sync ≠ independent backupRetained rollback is a cutover checkpointNine stopped NAS copies; no post-cutover edits sync back.Fence one identity before rollback. Never start both.NAS loss still affects media and backup dependence.Recovery evidence stops hereNo full app restore / booted VM acceptance claimed.No new export / USB run / schedule change by this atlas.Current source status does not renew earlier acceptance dates. Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.

Monitoring and management

Observability & controlTelemetry, container control, logs and application-facing checks. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 09 Observability & controlTelemetry, container control, logs and application-facing checks. 24 OCT 2026 NAS observability / control plane · Storage NAS · [private]Direct-socket NAS Beszel-AgentSocket :ro ≠ read-only Docker API authorizationnative telemetryoutbound Edge controlKuma pushauthenticated metricsdashboard integrationexisting relay / reportsBeszel hub:hidden · host telemetryCaptured runningNot a new delivery testPortainer:hidden · endpoint controlCaptured runningNot a new delivery testUptime-Kuma:hidden · service probesCaptured runningNot a new delivery testDozzle:hidden · logs / viewingCaptured runningNot a new delivery testDiunImage update observationCaptured runningNot a new delivery testNative agent coverageNative Beszel: [private] / Hypervisor / Media VMAlso Apps VM / Web VMHA protected add-on: guest-host statsNAS container Beszel-Agent: socketNative add-on inventory: WebSocket readHAOS placement owner-reported NASVM control & push probesEdge agents initiate outbound controlAuthenticated Portainer channelLocal Docker → native Kuma push probeNo new unauthenticated TCP Docker APIVM Compose / systemd owns appsNAS retained stacks ≠ VM runtimeCurrent metricscope85 monitor names returnedAll returned series status = 1 /UPIncludes group seriesNot disabled-definition totalNot an alert delivery testNo new monitors or schedulesHomarr · Apps VM · :hiddenIntegrates NAS / Proxmox / Portainer / Beszel / KumaNative local Docker widget sees Apps VM only.Other hosts are surfaced through Portainer / Beszel.Dashboard integration ≠ independent monitoring plane.Alerts & action boundaryDiun observes image updates; existing Hermes relay reports.No automatic upgrades or new delivery acceptance.Dozzle application actions / shell remain disabled by config.No socket proxy; :ro bind is not API-level authorization. Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.

Local AI and voice

Local AI & creativeOne tablet, explicit routing, current voice and clearly separated plans. Static architecture snapshot, 24 October 2026. Arrows are labelled; dashed fabric links are logical membership, not physical cables. HOME LAB / 10 Local AI & creativeOne tablet, explicit routing, current voice and clearly separated plans. 24 OCT 2026 Creative execution — bounded engine choices, output returned only to the initiating profileexplicit [private]explicit creative routeoptional onlyalternate interface of the same tabletHostinger VPS · HermesController / gateway, not local inferenceAssistant / Assistant + bounded [storage]Medium thinking · 65,536 contextRoute acceptance: 23 October 2026No profile history / memory poolingOne tablet · Ethernet [private]Ollama release · ComfyUI release · Windows runtimeSelected local model · exact build withheldAMD Radeon(TM) 8060S Graphics reported via cuda-labelled runtimeOllama / ComfyUI system_stats respond in the 24 October metadata probeReported accelerator metrics are not physical capacity proofImage pathsZ-Image-Turbo · text-to-imageQwen2511 Lightning · reference editInstalled / dated tested pathsNot new render acceptanceSame tablet ComfyUI rendererShort silent videoExperimental installed routesShort / silent only10-second video remains disabledAudio / PC-video remain disabledNo automatic PC / cloud switchOptional PC ·[private]Endpoint :hidden only if selectedText-to-image only; gaming priorityInference / renderer probe failedDoes not prove powered offNo gaming detector installedSame-device Wi-Fi · [private][private] is the tablet Wi-Fi addressNot a second / redundant inference nodeOllama / renderer probe: URLErrorDoes not prove device powered offFresh Ethernet metadata ≠ new route testNo cloud fallback introducedCurrent voice · KokoroLocal CPU Kokoro · Nicole af_nicoleLocal speech profile · details withheldCurrent voice, not VoiceStudioIncoming transcription is separateLocked-screen mobile wake remains openNo replacement TTS service deployedPlans only · not deployedVoiceStudio design auditions discussedPotential Ubuntu / Docker hostingPerformance / AMD support untestedNot installed or enabledPaperless-ngx also remains plannedNo new TTS or Paperless deployment Request / data / control flowLogical membership / dated referenceRetained / optional / not accepted nowSTATIC SNAPSHOT · Evidence 24 October 2026 · No live status or new acceptance implied

Architecture relationships retained; identifying operational details are omitted. This is a dated overview, not live monitoring.