> ./network_map.sh_

Overview of my physical and logical self-hosted infrastructure.

# physical_topology

🌐 WAN (Internet)
└── πŸ–§ ISP Modem [Bridge Mode]
    └── πŸ›‘οΈ OPNsense Firewall [MiniPC N150, 4 NICs] ⟷ Tailscale VPN
        └── πŸ”€ Switch [2.5GbE]
            β”œβ”€β”€ πŸ–₯️ Proxmox Host [Intel i5-13500T]
            β”‚    β”œβ”€β”€ πŸ’  VM k3s-node β†’ k3s + ArgoCD (GitOps)
            β”‚    └── πŸ“¦ LXC lxc-monitoring β†’ Prometheus + Grafana + Loki
            β”œβ”€β”€ πŸ—„οΈ NAS [TrueNAS, Lenovo V50s i3-10100]
            β”œβ”€β”€ πŸ“ Raspberry Pi 4 β†’ Omada Controller Β· MotionEye Β· UpSnap
            β”œβ”€β”€ πŸ“Ά Omada WiFi 6 [Access Point]
            β”œβ”€β”€ πŸ“Ά Cudy TR3000 [OpenWrt, AP, travel router]
            └── πŸ’» Workstation PC [trusted, wired]

# vlan_segmentation

VLAN trusted ID 10 Β· 10.10.10.0/24

Unrestricted access. Proxmox, NAS, Pi4, switch and workstation.

VLAN iot ID 20 Β· 10.10.20.0/24

Internet only. Smart devices and TVs isolated from the local network.

VLAN guest ID 30 Β· 10.10.30.0/24

Internet only. Network for visitors, total isolation.

VLAN lab ID 40 Β· 10.10.40.0/24

Internet + trusted. Test bench (e.g., Cudy AP on OpenWrt).

> kubectl get pods -A && docker ps [Pi4]

CONTAINER_NAME STATE CATEGORY
nextcloud Synced File Sync (k3s)
immich Synced Photo Backup (k3s)
jellyfin Synced Media Server (k3s)
cert-manager Synced TLS / Let's Encrypt (k3s)
cnpg-operator Synced PostgreSQL Operator (k3s)
prometheus Up Metrics (LXC)
grafana Up Dashboards (LXC)
loki Up Log Aggregation (LXC)
omada-controller Up Network Mgmt (Pi4)
motioneye Up NVR / CCTV (Pi4)
upsnap Up Wake-on-LAN (Pi4)

# full_network_diagram

Loading full diagram...