Post

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.