~/tech-stack
The server rack
A complete map of the homelab: three physical nodes, four virtualized instances, 28+ Docker services, and a full Omada SDN network — all orchestrated from a single workstation.
All systems operational
Network architecture
Isolated subnetsOmada SDN Controller
Centralized Network Management
TrueNAS
StorageZFS storage backend & offsite sync
Workstation
Windows 11Daily driver & homelab management
Omada Hardware
NetworkRouter, PoE+ switch, Wi-Fi 6 APs
Proxmox
HypervisorVirtualization host — 4 active VMs
An encrypted Tailscale mesh provides peer-to-peer remote access, while a Cloudflare Tunnel publishes sports.duncanantoniuk.com with zero open inbound ports — everything else stays private behind Zero Trust.
Physical hardware
3 physical nodesMain Workstation
Daily driver, development & homelab management
- CPU
- AMD Ryzen 7 9700X — 8C / 16T
- Memory
- 64 GB DDR5
- GPU
- AMD Radeon RX 9070 XT — 16 GB
- Storage
- 1.82 TB NVMe SSD
Proxmox VE Server
Hypervisor host · Virtualization & compute node
- CPU
- Intel Core i5-9600K — 6C
- Memory
- 32 GB DDR4
- GPU Passthrough
- NVIDIA GTX 1660 Ti → PlexAI Node
- Workloads
- 4 Active VMs (HAOS · PlexAI · ARR · Exit)
TrueNAS SCALE
Storage backend · ZFS pools · Automated cloud sync
- CPU
- Intel Core i5-8400 — 6C
- Memory
- 24 GB DDR4
- Fast Storage
- NVMe SSD ZFS pool (databases & app data)
- Media Pool
- 2 TB HDD ZFS pool (media library)
- Offsite Backup
- Nightly encrypted cloud push
Omada SDN
TP-Link enterprise network stack · Isolated subnets
- Router & Controller
- ER605 + OC200 hardware controller
- Managed Switch
- SG2210MP (8-port PoE+)
- Wi-Fi 6 APs
- EAP650 + EAP655-Wall mesh
- Subnet Isolation
- Trusted main · Isolated IoT · Work subnet
- Overlay & Ingress
- Tailscale mesh · Cloudflare Tunnels
Virtual instances & containers
Proxmox workloadsCompute host — PlexAI
GPU passthroughUbuntu Server · Dedicated PCIe GPU
Flagship compute instance. Media streaming, local LLM inference, self-hosted photo AI, and automation — fully containerized.
- Jellyfin Media server · NVENC GPU hardware streaming
- Ollama Local LLMs · CUDA GPU inference engine
- LiteLLM Unified AI proxy (Gemini · DeepSeek · GPT)
- Open WebUI Private chat interface · SearXNG RAG search
- Immich Self-hosted photo library · AI face search
- n8n Visual workflow & AI agent automation
- SearXNG Private metasearch · RAG web data source
- Mercury Web content extractor for AI pipelines
- Tdarr Overnight H.264 → H.265 NVENC batch transcode
- Homepage Unified service dashboard
- Sports Tracker Next.js live sports score application
- Cloudflared Encrypted Cloudflare Tunnel connector
Media pipeline — ARR stack
VPN protectedUbuntu Server · Dedicated high-speed NVMe staging
Automated media management. Usenet-first processing with Real-Debrid fast-lane resolution and VPN-isolated fallback.
Automated processing pipeline
- Seerr (request)
- Radarr / Sonarr
- SABnzbd (Usenet P1)
- or rdt-client (Real-Debrid)
- or qBittorrent (VPN)
- TrueNAS ZFS Storage
- Sonarr TV show automation · search & organizing
- Radarr Movie automation · search & organizing
- Prowlarr Indexer aggregator · API synchronization
- SABnzbd Usenet direct unpack downloader
- rdt-client Real-Debrid direct HTTPS downloader
- qBittorrent VPN-routed torrent fallback client
- Seerr User-facing media request portal
- FlareSolverr CAPTCHA resolution service
- Gluetun Dedicated VPN gateway with killswitch
- Recyclarr Automated TRaSH Guides quality profile sync
Home Assistant OS
HAOSDedicated smart home VM
- Lutron Caséta
- IoT Subnet
- Sonos Integration
- Main Subnet
- Tailscale Node
- Remote Control
Tailscale Exit Node
VPNSecure traffic egress instance
- Role
- Tailscale Exit Node
- Function
- Encrypted Travel Traffic
- Travel Router
- Encrypted WireGuard Mesh
Hermes AI Agent
TrueNASDedicated automation VM
- Host Storage
- Fast NVMe ZVol
- Allocated RAM
- 4 GiB
- Purpose
- Local AI Agent Worker
GPU resource scheduling
NVIDIA GPU Passthrough- Priority P1 Jellyfin Real-time video hardware transcoding — unthrottled streaming NVENC
Real-time video hardware transcoding — unthrottled streaming
- Priority P1 Ollama Interactive LLM inference — low-latency CUDA execution CUDA
Interactive LLM inference — low-latency CUDA execution
- Priority P2 Open WebUI RAG vector formatting & UI rendering
RAG vector formatting & UI rendering
- Priority P3 Immich Server Photo thumbnails & preview generation
Photo thumbnails & preview generation
- Priority P3 Immich ML Face & object recognition · worker-throttled to preserve VRAM throttled
Face & object recognition · worker-throttled to preserve VRAM
- Priority P4 Tdarr Node H.264 → H.265 batch transcode · NVENC chip only · off-peak window off-peak
H.264 → H.265 batch transcode · NVENC chip only · off-peak window