← Projecten

Homelab setup

Een homelab met Proxmox, ZFS, PostgreSQL met Patroni, lokale AI op een RTX 3060 (35B-model met MoE expert-offload, 40 tokens/s), Jellyfin en een Pi-edge met DNS, VPN en reverse proxy.

Waarom

Een thuisomgeving om te experimenteren en te leren met dezelfde technieken als op mijn werk: virtualisatie, high availability, monitoring en alerting, GitOps en lokale AI.

Draait 24/7 en host ook diensten die thuis echt gebruikt worden: media, energie en verwarming.

Hardware

ComponentSpecificatie
Proxmox-serverAMD Ryzen 5 5500GT, 128 GB RAM, NVIDIA RTX 3060 12 GB
Proxmox-opslag2x NVMe, gespiegeld ZFS voor Proxmox OS
ZFS-pool8 TB
Pi-edgeRaspberry Pi 4 met 7 TB aan USB-schijven

De RTX 3060 wordt doorgegeven aan de AI-VM.

Virtualisatie (Proxmox VE 9)

Ongeveer vijf VM's, elk met één taak: AI/media, monitoring, mail, een database-cluster en cloud.

Database

PostgreSQL met Patroni op twee nodes plus een aparte witness-VM als derde etcd-lid. Bewuste keuze om die witness niet op de Pi te zetten: de Pi heeft geen SSD en etcd heeft lage fsync-latency nodig, anders zet een filmavond de database in read-only.

Geheugen

Geheugen wordt statisch toegewezen; ballooning staat op de meeste VM's uit.

Lokale AI

De RTX 3060 draait een eigen llama.cpp-build met MoE expert-offload: alleen de vaak gebruikte experts staan in VRAM, de rest in RAM. Daarmee haalt een 35B-model ongeveer 40 tokens/s (was 16), mede dankzij speculative decoding (MTP).

Twee modellen achter één router, beide gebaseerd op Qwen3.6-35B-A3B: een algemene assistent ("Cortana" met Claude van Anthropic als verificatietool) en een coder ("Mastercontrolprogram") voor de Continue-extensie in VS Code. Open WebUI is de webinterface, met eigen kennisbanken.

Van buitenaf bereikbaar via de reverse proxy of via WireGuard op afroep.

Media

Jellyfin met hardware-transcoding op de 3060 (NVENC); de bibliotheek komt via NFS van de Pi-edge.

De mediastack draait in Docker Compose, met de configuratie in Git.

Monitoring en alerting

Aparte monitoring-VM met Prometheus, Alertmanager, Grafana, Loki, Grafana Alloy, blackbox-exporter, ntfy en Keep voor meldingen.

Alloy-agents op alle hosts, met de configuratie als Ansible-rollen in Git (de automatische uitrol wordt opnieuw ingericht).

GitOps: alert rules en config staan in Git, worden gevalideerd met promtool en unit-tests, en een merge naar main deployt automatisch via Gitea Actions.

Huis en energie

Zonnepanelen (Enphase, 11 micro-omvormers), een thuisaccu (Sungrow, via Modbus) en de slimme meter (HomeWizard P1) worden uitgelezen met Telegraf; het huisverbruik wordt daaruit berekend.

tado°-verwarming via een eigen gebouwde exporter, omdat de bestaande image niet meer werkte na een wijziging in de inlog van tado°.

Ontwikkelstraat

Eigen Gitea-server met Gitea Actions-runners voor CI/CD.

Single sign-on met Zitadel.