Homelab infrastructure
homelab infrastructure
# NETWORK TOPOLOGY
╔═════════════════════════════════════════════════════════════════════════════════════╗
║ INTERNET ║
╚═════════════════════════════════════════════════════════════════════════════════════╝
│
▼
╔═════════════════════════════════════════════════════════════════════════════════════╗
║ ISP LAYER (router) ║
║ ┌─────────────────────────────────────────────────────────────────────────────┐ ║
║ │ 192.168.1.0/24 │ ║
║ └─────────────────────────────────────────────────────────────────────────────┘ ║
╚═════════════════════════════════════════════════════════════════════════════════════╝
│
▼
╔════════════════════════════════════════════════════════════════════════════════════╗
║ OPNsense FIREWALL (Thin Client) ║
║ ┌──────────────────────────┐ ┌──────────────────────────────────────────┐ ║
║ │ WAN: ue0 (USB Dongle) │ │ LAN: re0 (1GbE) │ ║
║ │ 192.168.1.19 │◄──────►│ 10.10.0.1/24 │ ║
║ └──────────────────────────┘ └─────────────────┬────────────────────────┘ ║
║ │ ║
║ ┌──────────────────────────────────────────────▼──────────────────────┐ ║
║ │ VLANs │ │ ║
║ ├───────────┬───────────┬───────────┬───────────┼───────────┬─────────┤ ║
║ │ Mgmt VLAN │ VLAN10 │ VLAN20 │ VLAN30 │ VLAN40 │ │ ║
║ │10.10.0.0/ │10.10.10.0/│10.10.20.0/│10.10.30.0/│10.10.40.0/│ │ ║
║ │24 │24 │24 │24 │24 │ │ ║
║ └───────────┴───────────┴───────────┴───────────┴───────────┴─────────┘ ║
╚════════════════════════════════════════════════════════╤═══════════════════════════╝
│ Trunk (All VLANs)
▼
╔═════════════════════════════════════════════════════════════════════════════════════╗
║ CISCO MANAGED SWITCH (10.10.0.3) ║
║ ┌─────────────────────────────────────────────────────────────────────────────┐ ║
║ │ Port G0/1: TRUNK to OPNsense │ ║
║ │ Port G0/2: TRUNK to Proxmox │ ║
║ │ Port G0/3: TRUNK (Native Mgmt, Tagged 20,30) to Aruba AP │ ║
║ └─────────────────────────────────────────────────────────────────────────────┘ ║
╚════════════════════════════════╤══════════════════════════╤═════════════════════════╝
│ Trunk │ Trunk
▼ ▼
╔═══════════════════════════════════════════╗ ╔══════════════════════════════════════╗
║ PROXMOX HP Mini PC (10.10.0.2) ║ ║ ARUBA AP HP 300 Series ║
║ ┌──────────────────────────────────────┐ ║ ║ ┌────────────────────────────────┐ ║
║ │ VIRTUAL MACHINES │ ║ ║ │ SSIDs │ ║
║ │ ┌────────────────────────────────┐ │ ║ ║ │ ┌──────────────────────────┐ │ ║
║ │ │ VM: HomeAssistant │ │ ║ ║ │ │ SSID: media_ap │ │ ║
║ │ │ 10.10.30.95 (VLAN30 - IoT) │ │ ║ ║ │ │ VLAN20: 10.10.20.0/24 │ │ ║
║ │ ├────────────────────────────────┤ │ ║ ║ │ ├──────────────────────────┤ │ ║
║ │ │ VM: WebServer1 │ │ ║ ║ │ │ SSID: home_ap │ │ ║
║ │ │ 10.10.20.41 (VLAN20 - Media) │ │ ║ ║ │ │ Mgmt VLAN: 10.10.0.0/24 │ │ ║
║ │ ├────────────────────────────────┤ │ ║ ║ │ ├──────────────────────────┤ │ ║
║ │ │ VM: WebServer2 │ │ ║ ║ │ │ SSID: iot_ap │ │ ║
║ │ │ 10.10.20.40 (VLAN20 - Media) │ │ ║ ║ │ │ VLAN30: 10.10.30.0/24 │ │ ║
║ │ └────────────────────────────────┘ │ ║ ║ │ └──────────────────────────┘ │ ║
║ │ │ ║ ║ └────────────────────────────────┘ ║
║ │ LXC CONTAINERS │ ║ ╚══════════════════════════════════════╝
║ │ ┌────────────────────────────────┐ │ ║
║ │ │ LXC: WireGuard │ │ ║
║ │ │ 10.10.40.36 (VLAN40 - VPN) │ │ ║
║ │ │ VPN Subnet: 10.12.12.0/24 │ │ ║
║ │ ├────────────────────────────────┤ │ ║
║ │ │ LXC: PiHole │ │ ║
║ │ │ 10.10.10.53 (VLAN10 - DNS) │ │ ║
║ │ ├────────────────────────────────┤ │ ║
║ │ │ LXC: Docker-Host │ │ ║
║ │ │ 10.10.20.66 (VLAN20 - Media) │ │ ║
║ │ │ │ │ ║
║ │ │ ┌──────────────────────────┐ │ │ ║
║ │ │ │ DOCKER CONTAINERS │ │ │ ║
║ │ │ ├──────────────────────────┤ │ │ ║
║ │ │ │ • arrstack │ │ │ ║
║ │ │ │ • immich │ │ │ ║
║ │ │ │ • calibre │ │ │ ║
║ │ │ │ • samba │ │ │ ║
║ │ │ │ • jellyfin │ │ │ ║
║ │ │ │ • filebrowser │ │ │ ║
║ │ │ │ • traefik (reverse proxy)│ │ │ ║
║ │ │ │ • cloudflared (tunnel) │ │ │ ║
║ │ │ └──────────────────────────┘ │ │ ║
║ │ └────────────────────────────────┘ │ ║
║ └──────────────────────────────────────┘ ║
╚═══════════════════════════════════════════╝
╔═════════════════════════════════════════════════════════════════════════════════════╗
║ CLIENT DEVICES ║
║ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ║
║ │ Media Devices │ │ Workstations │ │ IoT Devices │ ║
║ │ (TVs, Tablets) │ │ (Laptops, PCs) │ │ (Tuya, Sensors) │ ║
║ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ ║
║ │ │ │ ║
║ ▼ ▼ ▼ ║
║ media_ap home_ap iot_ap ║
║ (VLAN20) (Mgmt) (VLAN30) ║
╚═════════════════════════════════════════════════════════════════════════════════════╝
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ SERVICE FLOWS │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ DNS: Client ──► PiHole (10.10.10.53) ──► OPNsense ──► ISP DNS │
│ │
│ VPN: Remote ──► WireGuard (10.12.12.x) ──► LXC (10.10.40.36) ──► LAN │
│ │
│ Public: Internet ──► cloudflared ──► traefik ──► filebrowser │
│ │
│ Certs: traefik ──► cloudflared ──► Let's Encrypt │
│ │
└─────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ QUICK REFERENCE │
├──────────────┬─────────────────────┬────────────────────────────────────────────────┤
│ VLAN │ Subnet │ Purpose │
├──────────────┼─────────────────────┼────────────────────────────────────────────────┤
│ Mgmt │ 10.10.0.0/24 │ OPNsense, Cisco Switch, Proxmox, Aruba mgmt │
│ VLAN10 │ 10.10.10.0/24 │ PiHole DNS │
│ VLAN20 │ 10.10.20.0/24 │ WebServers (40,41), Docker-Host (66), media_ap │
│ VLAN30 │ 10.10.30.0/24 │ HomeAssistant (95), iot_ap │
│ VLAN40 │ 10.10.40.0/24 │ WireGuard (36), VPN Clients (10.12.12.0/24) │
└──────────────┴─────────────────────┴────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ IP ADDRESSES │
├────────────────────────────┬────────────────────────────────────────────────────────┤
│ ISP Gateway │ 192.168.1.1 │
│ OPNsense WAN (ue0) │ 192.168.1.19 │
│ OPNsense LAN (re0) │ 10.10.0.1 │
│ Cisco Switch │ 10.10.0.3 │
│ Proxmox Host │ 10.10.0.2 │
│ PiHole │ 10.10.10.53 │
│ WebServer1 │ 10.10.20.41 │
│ WebServer2 │ 10.10.20.40 │
│ Docker-Host │ 10.10.20.66 │
│ HomeAssistant │ 10.10.30.95 │
│ WireGuard │ 10.10.40.36 │
│ WireGuard VPN Subnet │ 10.12.12.0/24 │
└────────────────────────────┴────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ WIRELESS SSIDs │
├────────────────────────────┬─────────────────────┬──────────────────────────────────┤
│ SSID │ VLAN │ Subnet │
├────────────────────────────┼─────────────────────┼──────────────────────────────────┤
│ media_ap │ VLAN20 │ 10.10.20.0/24 │
│ home_ap │ Mgmt VLAN │ 10.10.0.0/24 │
│ iot_ap │ VLAN30 │ 10.10.30.0/24 │
└────────────────────────────┴─────────────────────┴──────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ DOCKER CONTAINERS (on 10.10.20.66) │
├────────────────────────────┬────────────────────────────────────────────────────────┤
│ Container │ Purpose │
├────────────────────────────┼────────────────────────────────────────────────────────┤
│ arrstack │ Media automation (Radarr, Sonarr, etc.) │
│ immich │ Photo backup and management │
│ samba │ NAS / File sharing │
│ jellyfin │ Media streaming server │
│ filebrowser │ Web-based file manager │
│ traefik │ Reverse proxy + Let's Encrypt │
│ cloudflared │ Cloudflare tunnel │
└────────────────────────────┴────────────────────────────────────────────────────────┘
This post is licensed under
CC BY 4.0
by the author.
