~/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
- 466 GB NVMe SSD ZFS pool (single-disk stripe · DBs & app data)
- Media Pool
- 2 TB HDD ZFS pool (single-disk stripe · RAIDZ upgrade pending wallet approval)
- Offsite Backup
- Nightly encrypted Google Drive push (single-disk stripes require nerve & cloud backups)
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
Automated Ingestion Pipeline
VPN protectedUbuntu Server · Dedicated high-speed NVMe staging
Automated media management — Usenet stream processing with VPN-isolated network egress.
- Sonarr Series cataloging & automated metadata indexing
- Radarr Film cataloging & automated metadata indexing
- Prowlarr API aggregator & metadata index sync
- SABnzbd SSL Usenet processor & 3-second direct unpack
- qBittorrent Isolated peer-to-peer data client
- Seerr User request portal & automated API triggers
- Gluetun Network namespace VPN gateway with killswitch
- Recyclarr Quality profile & format rule sync engine
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