Skip to content

Networking Diagrams Topology

Network Topology & Visual Layouts

Comprehensive architectural breakdown, node interconnectivity matrices, and DNS resolution diagrams for the homelab network.


Homelab System Topology Visual Diagram

Homelab System Topology Diagram


Topology Analysis & Node Responsibilities

1. Primary Compute Node (Server A - Lenovo Arch Linux)

  • Role: High-capacity compute, media transcoding, AI indexing, and reverse proxy ingress.
  • Network Interface: Dual physical Ethernet + Tailscale Mesh interface (100.64.0.10).
  • Core Workloads:
  • Nginx Proxy Manager: Handles central ingress, SSL certificate termination, and HTTP/2 proxying.
  • Immich Stack: Handles photo indexing, machine learning background workers, and PostgreSQL database.
  • Jellyfin & Plex: Media streaming engines with VAAPI hardware acceleration pass-through.
  • Prometheus & Grafana: System telemetry collection and visualization.

2. Low-Power Infrastructure Node (Server B - Android Termux)

  • Role: Continuous low-power infrastructure support and primary DNS resolution.
  • Network Interface: Wi-Fi / USB Ethernet tethering + Tailscale Mesh interface (100.64.0.11).
  • Core Workloads:
  • AdGuard Home: Primary DNS resolver providing ad blocking, malware domain filtering, and local DNS overrides.
  • Sophia Radar: Continuous uptime and heartbeat checker monitoring network health.

IP Addressing & Subnet Matrix

Node / Interface Host OS Subnet / IP Range Access Type Managed Services
Server A Host Arch Linux 100.64.0.10/32 Tailscale P2P Docker Engine, Host SSH
Server B Host Android Termux 100.64.0.11/32 Tailscale P2P Termux SSH, DNS Server
Docker Bridge A Linux Bridge 172.18.0.0/16 Internal Docker NPM, Immich, Jellyfin, Grafana
Docker Bridge B Linux Bridge 172.19.0.0/16 Internal Docker AdGuard Home, Telemetry Collectors

Interactive Topology Flowchart

flowchart TB subgraph Clients [Client Layer] RemoteLaptop[Remote Laptop - macOS] RemotePhone[Remote Mobile - iOS/Android] end subgraph MeshNetwork [Tailscale Zero Trust Mesh Network] Tailnet[Tailnet Encrypted WireGuard P2P Overlay] end subgraph ServerA [Server A: Lenovo Arch Linux Host] NPM[Nginx Proxy Manager :443] Immich[Immich Photo Storage :2283] Jellyfin[Jellyfin Media :8096] Grafana[Grafana Dashboards :3000] end subgraph ServerB [Server B: Android Termux Host] AdGuard[AdGuard Home DNS :53 / :3000] Sophia[Sophia Radar Monitoring] end RemoteLaptop -->|WireGuard Encrypted| Tailnet RemotePhone -->|WireGuard Encrypted| Tailnet Tailnet --> NPM NPM -->|Local Proxy| Immich NPM -->|Local Proxy| Jellyfin NPM -->|Local Proxy| Grafana Tailnet -->|DNS Queries| AdGuard ServerA -.->|Heartbeat Ping| Sophia ServerB -.->|Heartbeat Ping| Sophia

DNS Query Resolution Sequence

sequenceDiagram autonumber actor Client as Homelab Client Device participant AdGuard as AdGuard Home (Termux) participant Upstream as Cloudflare DNS (1.1.1.1) participant NPM as Nginx Proxy Manager participant App as Target Container Client->>AdGuard: 1. Query DNS for immich.homelab.net alt Domain Matches Blocklist Rule AdGuard-->>Client: 2a. Return 0.0.0.0 (Ad/Tracker Blocked) else Local Homelab Domain AdGuard-->>Client: 2b. Return Tailscale IP (100.64.0.10) else Public Internet Request AdGuard->>Upstream: 2c. Query via Encrypted DoH Upstream-->>AdGuard: Return Public IP Address AdGuard-->>Client: Forward Resolved Public IP end Client->>NPM: 3. Connect via HTTPS (100.64.0.10:443) NPM->>App: 4. Pass Request to Internal Port (172.18.0.5:2283) App-->>NPM: 5. Return Application Data Payload NPM-->>Client: 6. Encrypted TLS Response