Hobby projects → Our setup → Servers
Deeper dive · Compute & storage

The server cupboard

Three boxes do all the thinking, and none of them is loud. An Intel two-GPU machine is the compute server, a Strix Halo mini-PC is the AI appliance with a 30-billion-parameter model resident around the clock, and a 16-bay Unraid server is the storage, the media stack, the monitoring home and — now — the host for the household’s own virtual machines. Between them: 52 cores, 384 GB of RAM, more than a dozen hypervisor guests across three machines, four Docker hosts and about 335 TB of raw disk.

The cupboard in numbers

3
physical servers
plus a fanless router
52 / 76
cores / threads
Intel, Intel and AMD
384 GB
RAM
192 + 64 + 128
~335 TB
raw disk
231 TB usable on the main array
13
VMs & LXCs running
across three hypervisors
~100
containers
58 + 20 + 16 + 8 on four Docker hosts

Box one — the compute server

Proxmox VE 9 on Intel, built around two GPUs. This is where the heavy lifting happens: the camera AI, the photo machine learning, the subtitle generator and the experiments all run on the pair of cards passed through to one virtual machine.

Proxmox host

Intel two-GPU build · the GPU server, a network-core host and DNS
  • ProcessorIntel Core Ultra 9 285K24 cores / 24 threads, Arrow Lake
  • Memory192 GB DDR5
  • GPUsNVIDIA RTX A5000 + RTX 309024 GB each, both passed through whole to the GPU server VM, so two language-model families stay resident at once
  • Storage~2 TB NVMeLVM-thin pools for VM disks plus the host root; bulk data lives on the NAS
  • BoardASUS ProArt Z890-Creator WiFi
  • Network2.5 GbE, wired

The star guest is the GPU server (20 vCPUs, 152 GB) that owns both cards: camera AI with face recognition, photo machine learning, mlsubgen, our open-source subtitle generator, the household’s scheduled jobs, and an experimental two-model code-fixing harness that keeps one language-model family resident on each card. Beside it run a small Docker host for the network core — the switch controller, the container manager and the monitoring bridges (10 vCPUs) — and the primary Pi-hole. The household’s own services used to run here; they have since moved to the storage server, which freed this machine to do nothing but compute.

Box two — the AI appliance

A second Proxmox host on a Minisforum N5 MAX. This is the reference build for the products on this site: the unified-memory GPU is passed straight through to a CachyOS VM, and the whole voice stack sits in memory permanently.

Minisforum N5 MAX

AMD Strix Halo · five guests, including a second Unraid
  • ProcessorAMD Ryzen AI Max+ 39516 cores / 32 threads, Zen 5
  • Memory64 GB LPDDR5X unifiedsoldered, running at 8533 MT/s — about 273 GB/s; 41 GB of it addressable by the GPU
  • GPUAMD Radeon 8060SRDNA 3.5 integrated graphics, passed through whole; runs the language model through Vulkan and the Thai voice through ROCm
  • Storage2 TB Kingston NVMe (PCIe 4.0 ×4)for VM disks, plus a 128 GB system drive
  • Drive bays3 × 20 TB in the five-bay chassisthe SATA controller is passed through to the Unraid VM below

The appliance VM gets 16 cores and 40 GB, and keeps about 25 GB resident: Typhoon 2.5 — SCB 10X’s Thai-first 30B mixture-of-experts model — Qwen3-ASR speech recognition, and the reply voices including a Thai voice we cloned ourselves. Each room microphone’s context is re-warmed every fifteen minutes so the first word of an answer is never paid for twice. Sixteen containers run beside the models: the three custom routers that make one pipeline trilingual, the demonstration household’s photo, media and file servers, and the monitoring agents.

Alongside it: a second, fully licensed Unraid as a VM — the AI NAS design validated on real hardware, three 20 TB drives with two of data behind one of parity (40 TB usable), serving the demo stack over NFS — plus a demo Home Assistant, the small backup server that pulls the house’s machine history offsite, and the second Pi-hole.

Box three — the storage server

Unraid Pro 7.3.3 on Intel. It is the bulk storage for the whole house, but it has also become its busiest Docker host, the home of the monitoring stack, the public reverse proxy, the backup server, and — since the compute server was freed for GPU work — the host for the household’s own virtual machines.

Unraid server

16-bay array · 58 containers · the household’s virtual machines
  • ProcessorIntel Core i7-1270012 cores / 20 threads, Alder Lake
  • Memory128 GB DDR4
  • GraphicsIntel UHD 770hardware transcoding for Plex, and for Jellyfin as the backup server
  • Array16 drives — 231 TB usabledual 20 TB parity in front of 14 data drives of 8–20 TB; about 271 TB raw
  • Cache1 TB Samsung 990 Pro NVMeholds the app data and the camera recordings so churn never touches the array
  • BoardASRock Z790 PG Lightning
  • Network2.5 GbE, wired

Media, photos, documents, backups and the retro-gaming library live on the array, exported over NFS and SMB to every other machine in the house. The 58 containers here are the media servers — Plex and Jellyfin over the same library — with their download and request stack, the family photo and document libraries, the public reverse proxy that fronts the websites, and Prometheus and Grafana for the whole fleet. Under Unraid’s own hypervisor it also runs the household’s virtual machines — the smart-home brain, the game servers, the security monitor and the tabletop server — and the Proxmox Backup Server, whose datastores sit on the array; what it holds and where it goes is on the backups page. The newest drive is a 20 TB that replaced the oldest 8 TB recently — a rebuild, not a restore, which is the point of parity.

What runs where

GuestHostSizeJob
GPU serverCompute (pve)20 vCPU · 152 GB · A5000 + 3090Frigate with face recognition, Immich ML, scheduled jobs, mlsubgen and the debate harness
Network coreCompute (pve)10 vCPUthe switch controller, the Arcane container manager and the monitoring bridges
Pi-holeCompute (pve)LXCprimary DNS filter
Home Assistant OSStorage (Unraid)VMthe smart-home brain — ~1,285 entities, Zigbee, Thread, Music Assistant
Game serversStorage (Unraid)VMAMP: Minecraft Bedrock, Valheim, Terraria, Wreckfest 2, Windrose
WazuhStorage (Unraid)VMSIEM with agents enrolled across the fleet
Foundry VTTStorage (Unraid)VMtabletop server
Proxmox Backup ServerStorage (Unraid)VMthe VM backup store for every hypervisor — see backups
Media & servicesStorage (Unraid)58 containersPlex, Jellyfin, photos, documents, the reverse proxy and the monitoring stack
AI applianceN5 MAX16 vCPU · 40 GB · 8060Sthe trilingual voice stack and the demo stack — 16 containers
Unraid (AI NAS)N5 MAX3 × 20 TBthe AI NAS reference build, serving the demo stack
Demo Home AssistantN5 MAXVMthe sample house customers see
Backup serverN5 MAXVMthe offsite puller — see backups
Pi-holeN5 MAXLXCsecond DNS filter

Sizes are the allocation each guest is given, not what it uses; the hypervisors keep comfortable headroom.

Storage

How all of this is backed up — every guest nightly, every container daily from a snapshot, the machine history pulled offsite to Cloudflare R2 and the archives and photos mirrored to Dropbox, all of it verified by reading it back — has its own page.

The drives themselves are watched: per-disk temperatures feed Home Assistant, and the house cools its own drives with the living-room aircon when the hot season pushes them too far. Services that live on network storage carry a marker-file gate, so after a reboot they wait for the NAS instead of starting on empty directories — the mount guard is written up as a guide.

Monitoring

Prometheus scrapes more than twenty targets across every host and VM — node metrics, GPU, containers, the hypervisors’ own APIs, the firewall and the NAS — and a single Grafana dashboard shows fleet health at a glance. A deterministic Telegram alert path fires on the conditions that actually matter, and the AI appliance additionally keeps a minute-by-minute flight recorder of memory and GPU use, which has caught more than one slow leak before it became an outage. Housekeeping is automatic too: every host rotates its own logs on a weekly timer, and every timer that can fail reports to Telegram the moment it does.