Network Topology

The homelab network provides internal communication, external access via tunnels, and DNS-based service discovery.

Network Configuration

Subnet: 192.168.144.0/23 (512 addresses, 192.168.144.0 - 192.168.144.255) Gateway: 192.168.144.1 DNS: 192.168.144.20 (Pi-hole)

IP Allocation

Infrastructure

DeviceIPRole
Gateway192.168.144.1Router
Pi-hole192.168.144.20DNS + ad blocking
Proxmox192.168.144.10Virtualization host
Uptime Kuma192.168.144.25Monitoring

Services by Category

Networking:

  • Lanproxy (Caddy): 192.168.144.31
  • Cloudflared: 192.168.144.32

Databases:

  • WordPress (MariaDB): 192.168.144.41

Applications:

  • Planka: 192.168.144.60
  • n8n: 192.168.144.61
  • AI (Ollama): 192.168.144.62
  • Syncthing: 192.168.144.63

Web/CMS:

  • WordPress jokegoudriaan: 192.168.144.70
  • WordPress kledingruil: 192.168.144.71
  • Grav: 192.168.144.72
  • WordPress pgh: 192.168.144.73

Media:

  • Jellyfin: 192.168.144.100

AI/Media:

  • Immich (VM): 192.168.144.110
  • Home Assistant (VM): 192.168.144.120

DNS

Pi-hole (192.168.144.20)

  • Purpose: Network-wide ad blocking + DNS resolution
  • Web UI: https://pihole.janvv.nl
  • Local DNS: Resolves .janvv.nl domains to internal IPs

Split-Horizon DNS

External clients use Cloudflare DNS → Cloudflare Tunnel Internal clients use Pi-hole → Local IP → Lanproxy (Caddy) → Service

This enables:

  • Same URL works internally and externally
  • Internal traffic stays local (faster, no tunnel overhead)
  • Automatic SSL via Cloudflare DNS-01 challenge

Routing

External Access (Cloudflare Tunnel - CT 126)

Routes external traffic through Cloudflare’s network to internal services.

Configured routes:

External URLInternal Destination
https://tasks.janvv.nl192.168.144.60:1337 (Planka)
https://n8n.janvv.nl192.168.144.61:5678 (n8n)
https://opa.janvv.nl192.168.144.72:80 (Grav)
https://kijkdoos.janvv.nl192.168.144.100:8096 (Jellyfin)
https://jokegoudriaan.nl192.168.144.70:80 (WordPress)
https://kledingruil.jokegoudriaan.nl192.168.144.71:80 (WordPress)
https://pgh.janvv.nl192.168.144.73:80 (WordPress)
https://assistant.janvv.nl192.168.144.120:8123 (Home Assistant)
https://photos.janvv.nl192.168.144.110:2283 (Immich)
https://pihole.janvv.nl192.168.144.20:80 (Pi-hole)
https://proxmox.janvv.nl192.168.144.10:8006 (Proxmox)
https://status.janvv.nl192.168.144.25:80 (Uptime Kuma)
https://sync.janvv.nl192.168.144.63:8384 (Syncthing)

Management: Cloudflare Zero Trust dashboard (Zero Trust → Networks → Tunnels)

Internal HTTPS (Lanproxy/Caddy - CT 127)

Caddy reverse proxy provides internal HTTPS with automatic certificates.

Configuration: /opt/homelab-docker/lanproxy/Caddyfile in CT 127

Benefits:

  • HTTPS on local network
  • Automatic SSL via Cloudflare DNS-01 challenge
  • Centralized reverse proxy configuration