> ./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) |