Infrastructure

Physical hardware,
no cloud involved.

Physical machines, virtual machines, networking, and storage — all running at home in Frauenkappelen, Switzerland. 80 GB of local GPU VRAM across three AI servers.


Physical Hosts

Dedicated hardware
for dedicated tasks.

The AI servers carry AMD Radeon GPUs with 32 GB of VRAM each, which comfortably fit the large quantised models used for most tasks. A third AI server was added for image generation and text-to-speech synthesis. It carries an NVIDIA RTX GPU using the Blackwell architecture, handling CUDA-based workloads the AMD cards are not suited for.

Total local GPU memory across the three AI servers is 80 GB. All servers run on consumer hardware chosen for the combination of performance and energy efficiency.

// LLM · PRIMARY

AI server 1

Primary language model server. Runs Ollama and Open WebUI. AMD Radeon GPU with 32 GB VRAM, 64 GB system RAM — large enough to run several models simultaneously without swapping.

Ollama Open WebUI 32 GB VRAM
// LLM · SECONDARY

AI server 2

Secondary language model server. Identical architecture. Also provides the LLM pipeline for the Podcast Generator and the other AI apps.

Ollama Open WebUI 32 GB VRAM
// IMAGE · TTS

AI server 3

Dedicated to GPU-accelerated workloads requiring CUDA. Runs ComfyUI for image generation, the Podcast Generator TTS service, and hosts the self-built web apps. NVIDIA RTX GPU, Blackwell architecture, 16 GB VRAM.

ComfyUI Qwen3-TTS 16 GB VRAM

Virtual Machines

Services isolated
per VM.

All services run as separate virtual machines on Ubuntu 24.04 LTS. Separating services means a misconfiguration or failed update in one VM cannot affect another. Two virtualisation hosts share the load. All VMs are managed exclusively through Ansible — no manual configuration on individual machines.

// FILES

Nextcloud

Self-hosted file sync and collaboration with OnlyOffice integration. Documents are stored on the NAS via NFS.

OnlyOfficeNFS storage
// PASSWORDS

Bitwarden

Self-hosted Bitwarden for the whole family. Cross-platform, works with all the standard Bitwarden clients on every device.

Self-hostedFamily use
// PHOTOS

Immich

Photo archive with AI face recognition, smart search, and automatic album generation. Around 82 000 photos stored on the NAS.

Face recognitionNFS storage
// DNS

Pi-hole ×2

DNS filtering and content blocking on two redundant instances. Primary and secondary, so a single failure leaves filtering active.

DNS filteringRedundant
// MAIL

Mailcow

Internal mail server. Receives email from external relay servers and delivers it locally. Isolated on a separate network segment.

MailcowIsolated segment
// MANAGEMENT

Ansible + Semaphore

Central management. All Ansible playbooks run from this VM. Semaphore provides the scheduler and web interface. The AI also uses this server to manage infrastructure.

AnsibleSemaphore

Networking

Everything on one network,
two exceptions.

All internal machines sit on a single flat network segment. The mail server and the WhatsApp AI agent run on a separate segment to keep them isolated from the main LAN. External mail relay servers connect back through a WireGuard VPN tunnel.

DNS filtering runs on two redundant instances. External access from outside the home goes through WireGuard. All public-facing services are behind a reverse proxy with Let's Encrypt certificates, renewed automatically through the Cloudflare DNS challenge.

No cloud data centre, no energy overhead from data transfer — just local compute on local power.

WireGuard VPN Pi-hole DNS Nginx reverse proxy Let's Encrypt

Decisions

Made once,
stayed made.

OnlyOffice over Microsoft 365. Bitwarden over Apple Passwords. Local AI as the default, commercial AI only for tasks that specifically require it. No automatic reboots — a playbook that installs updates leaves a note if a reboot is needed, and the reboot happens manually.

When a VM's disk fills up, the approach is to attach a new virtual disk and change the mount point — not to rebuild the VM. This keeps downtime to the time it takes to stop the service, remount, and restart. Grafana and Prometheus were chosen over other monitoring stacks for better fit with the existing infrastructure model.