Lokale LLM-server met RTX 3090

Gepubliceerd: 4 sep 2026 · Laatste wijziging: 5 sep 2026 (gecorrigeerd n.a.v. haalbaarheidsreview)

De wens: een lokale LLM-server

Het doel is een headless server thuis, in de kast aan een UTP-kabel, die twee dingen tegelijk doet:

1. Lokale LLM-inference

  • Grote modellen draaien (70B-120B+) met hoge codekwaliteit — minimaal 4-bit quantisatie, bij voorkeur hoger
  • Overdag interactieve chat — lage time-to-first-token (< 2-5s) met kleinere modellen (8B-32B)
  • 's Nachts deep reasoning / agentic batch — maximale tokens/sec × context × modelkwaliteit, geen harde latency-eis
  • RAG (Retrieval-Augmented Generation) op eigen documenten
  • Agentic workflows — harnesses die autonome taken uitvoeren voor coding en onderzoek

2. Lokale services (dezelfde machine)

  • Ollama / llama.cpp — LLM-runtime, als aparte infrastructuurlaag met OpenAI-compatible API
  • Open WebUI — frontend voor LLM-interactie
  • OpenClaw — agent-orchestratie
  • Postgres — development/test-database
  • Caddy / nginx — reverse proxy om services te exposen
  • Bookstack — kennisbank/wiki
  • Vaultwarden — wachtwoordmanager
  • LinkDing — bookmark-manager
  • Kanban-app (Plane / Vikunja) — taakbord
  • Alle services draaien in Docker — één compose-bestand, één deploy-commando

De server is headless (geen monitor, geen toetsenbord), staat in een kast, en communiceert alleen over UTP. Lawaai en hitte zijn geen probleem. Het platform is ontworpen voor maximaal 2 GPU's — nu starten met 1× RTX 3090, later uitbreiden naar 2× voor 70B+ modellen in hoge kwaliteit.


Waarom deze configuratie?

GPU: MSI SUPRIM RTX 3090 24GB

De RTX 3090 is de beste prijs/prestatie-kaart voor lokale LLM-inference. Waarom?

  • 24GB VRAM — ideaal voor 8-14B modellen in Q8 en 27-32B modellen in Q4/Q5. Grotere modellen kunnen gedeeltelijk naar RAM worden geoffload, maar dat kost snelheid.
  • 936 GB/s bandbreedte — LLM-token-generatie is bandbreedte-gelimiteerd. De 3090 heeft dezelfde bandbreedte-klasse als de 4090, voor de helft van de prijs.
  • NVLink aanwezig — de laatste NVIDIA-consumerkaart met NVLink. In de praktijk is NVLink voor LLM-inference met pipeline parallelism (llama.cpp standaard) geen architectuurvereiste; het voordeel van twee kaarten zit primair in 48GB fysiek VRAM, niet in "twee keer zoveel snelheid".
  • MSI SUPRIM — een van de beste AIB-koelers voor de 3090, met dubbel-kogellager fans (100k+ uur MTBF) en een massief koellichaam. Let op: de SUPRIM is een 2.7-slot dikke kaart met een officieel stroomverbruik van 420W. Voor 24/7 LLM-inference is power limiting naar 300-350W een goede optimalisatie: nauwelijks tok/s-verlies, aanzienlijk minder warmte.
  • Tweedehands — de GPU-core (GA102-chip) is zeer duurzaam, maar bij een gebruikte kaart zijn VRAM-temperaturen, fans en thermal pads de echte slijtagepunten. Vervangen van pads (~€15-20) is sterk aanbevolen.

Later uitbreidbaar naar een tweede RTX 3090 (max 2 op dit platform). Met 48GB VRAM totaal worden 70B-modellen in Q4 realiteit. Dit artikel beschrijft een 1→2 GPU-platform, geen 1→2→4 pad (zie "Waarom geen 4×3090?").

Moederbord: ASUS ProArt X670E-CREATOR WIFI

  • Twee volle PCIe 5.0 x16 slots — essentieel voor 2 GPU's. Bij twee kaarten schakelen de slots naar x8/x8, wat voor LLM-inference ruim voldoende is.
  • 10GbE LAN — toekomstbestendig en direct bruikbaar voor een headless server aan UTP
  • USB4 / 2.5GbE — flexibele connectiviteit
  • AM5-platform — CPU-upgrade mogelijk naar 7950X zonder nieuw moederbord
  • Beperking: dit bord heeft maar 2 volwaardige PCIe-slots. De derde slot is elektrisch slechts PCIe 4.0 x2. Een 4×GPU-configuratie is op dit platform niet mogelijk.

CPU: AMD Ryzen 5 7600X

LLM-inference is GPU-gebonden, niet CPU-gebonden. De CPU doet prompt-encoding, tokenization, en I/O voor alle services. Zes cores is ruim voldoende — zelfs met alle services tegelijk blijft de CPU-load onder 2-3 cores. De 7600X heeft een officiële TDP van 105W (niet 65W), maar in de praktijk voor inference minder belast. Via AM5 later inwisselbaar voor een 7950X als dat nodig blijkt.

RAM: 64GB DDR5-6000 CL30 (start), 128GB als einddoel

64GB DDR5-6000 CL30 is een goed startpunt. Voor de volledige stack — agents, RAG, Open WebUI, Postgres, Bookstack, Vaultwarden, LinkDing, meerdere modellen tegelijk, embeddings, vector database, filesystem cache — wordt 128GB aanbevolen voor maximale headroom. Het ProArt-moederbord ondersteunt tot 192GB DDR5.

Het advies: start met 2×32GB (64GB) en breid later uit naar 4×32GB (128GB). Let dan op de geheugen-QVL voor stabiliteit met vier DIMMs. CL30 is belangrijk voor de Infinity Fabric van Ryzen — merkbaar sneller dan CL40.

PSU: be quiet! Dark Power Pro 13 1300W

  • Nu (1 kaart): ~350W (gelimiteerd) + ~150W systeem = ~500W load. De PSU draait op ~38% belasting — extreem stil en efficiënt.
  • Later (2 kaarten): ~700W (2×350W gelimiteerd) + ~150W systeem = ~850W sustained, met transient spikes richting 1000W. 1300W biedt ~45% headroom — veilig.
  • 1300W is de verstandige keuze. Een 750W nu kopen en later vervangen kost dubbel (€110 + €298 = €408 vs €298 nu) en betekent een volledige kabelmanagement-swap.
  • De SUPRIM heeft officieel 420W TDP, maar voor 24/7 inference is power limiting naar 300-350W aan te raden.
  • Voor 4×3090 is 1300W onvoldoende (4×420W = 1680W alleen GPU's). Dit platform is niet ontworpen voor 4 GPU's.

Case: Fractal Meshify 2 XL

  • 9 PCIe-slots (horizontaal, +3 verticaal optioneel) — de SUPRIM (2.7-slot) neemt slots 1-3 in. Via PCIe-riser op slots ~6-8 blijft ≥2-3 slots tussenruimte voor een tweede kaart — haalbaar, maar krapper dan vaak gedacht. Riser-bracket zelf vastschroeven in de slot-covers: maatwerk, geen plug-and-play.
  • Uitstekende airflow — mesh-frontpaneel, 3×140mm intake, 2×140mm top exhaust, 1×140mm rear exhaust.
  • Groot maar niet massief — 566×240×600mm (H×B×D); reken op ~620+ mm diepte inclusief kabels. Stil — geïsoleerde panelen, geen raam nodig (headless).

PCIe-riser: Cooler Master / TRYX PCIe 5.0 x16 300mm

De SUPRIM is 2.7-slots dik. Bij een tweede kaart is direct naast elkaar monteren thermisch problematisch. Oplossing: de tweede kaart via riserkabel verder in de kast plaatsen — minimaal 3-4 slots afstand.

Belangrijk: PCIe Gen5-risers kunnen signaalintegriteitsproblemen geven. Zet de riser-slot in de BIOS vast op Gen4. Voor LLM-inference is het verschil tussen PCIe 4.0 en 5.0 verwaarloosbaar; stabiliteit is belangrijker.

Eenvoudiger alternatief: een 2-slot blower direct in PCIEX16_2 past naast de SUPRIM (±3 slots uit elkaar) — krap, maar blowers blazen hun warmte direct naar buiten. Dan vervalt de riser (én het Gen5-risico) helemaal. Risico's: ~0,3-slot gapije en deels afgedekte intake van de SUPRIM; power-limited prima, zonder limit thermisch spannend.

Overig: SSD, koeler, pads, fans, UPS

  • 4TB NVMe SSD — OS + Docker-volumes + modellen. 2TB is een bottleneck: alleen de Fase-2-modellen (70B Q4 ~40GB, 120B Q3 ~45GB) vullen de schijf al.
  • ARCTIC Freezer 34 eSports DUO — stille luchtkoeler, geen waterkoeling nodig voor headless.
  • Thermische pads (1.5mm/2.0mm) — GDDR6X VRAM op de achterkant van de RTX 3090 wordt 90-100°C. Bij tweedehands kaart zijn pads uitgedroogd. Vervangen ~€15-20 = beste levensduur-investering.
  • 3 extra 140mm case fans (be quiet! Silent Wings) — voor optimale airflow bij 2e kaart.
  • APC Back-UPS Pro 1500VA (900W) — 24/7 server + Postgres + Docker-volumes vragen bescherming tegen stroomuitval. Een kleine UPS (~€120, ~700VA/390W) trip't bij echte belasting: fase 1 trekt al ~500W, fase 2 ~850W. Fase 2: liever 2200VA. Reken €250-400.

Hardwarelijst

# Component Specificatie Nieuw / 2e hands
1 GPU (al gekocht) MSI SUPRIM RTX 3090 24GB GDDR6X (420W TDP, 2.7-slot) Tweedehands
2 Moederbord ASUS ProArt X670E-CREATOR WIFI (2× PCIe 5.0 x16, 10GbE) Nieuw
3 CPU AMD Ryzen 5 7600X (6-core / 12-threads, 105W TDP) Tweedehands
4 RAM 64GB DDR5-6000 CL30 (2×32GB) — 128GB als einddoel Nieuw
5 PSU be quiet! Dark Power Pro 13 1300W (Titanium, modulair) Nieuw
6 Case Fractal Design Meshify 2 XL (9 PCIe-slots, mesh-front) Tweedehands
7 PCIe-riser Cooler Master / TRYX PCIe 5.0 x16 300mm (vastzetten op Gen4) Nieuw
8 SSD 4TB NVMe (Kingston NV3 4TB / WD SN850X 4TB) Tweedehands
9 CPU-koeler ARCTIC Freezer 34 eSports DUO (lucht) Nieuw
10 Thermische pads 1.5mm + 2.0mm voor VRAM-koeling (GDDR6X backside) Nieuw
11 Case fans (extra) 3× be quiet! Silent Wings 140mm (PWM) Nieuw
12 UPS APC Back-UPS Pro 1500VA / 900W (fase 2: 2200VA) Nieuw

Waarom deze combinatie van nieuw en tweedehands?

  1. Nieuw: moederbord, RAM, PSU, PCIe-riser, koeler, pads, fans, UPS — componenten waar betrouwbaarheid en garantie belangrijk zijn. RAM met CL30-timings is zeldzaam tweedehands. Een PSU is te risicovol om gebruikt te kopen.
  2. Tweedehands: GPU, CPU, case, SSD — componenten die robuust zijn en weinig slijten. Een 6-core CPU uit 2022 is meer dan genoeg voor inference. Een case is fysiek robuust. NVMe-schijven hebben geen bewegende delen.
  3. De GPU is tweedehands gekocht (€1.200) — voor een MSI SUPRIM X in uitstekende staat met doos en "alleen gaming gebruikt" is dat een marktconforme premiumprijs. De mediaan voor een generieke 3090 op Marktplaats is ~€960; de SUPRIM-premie is verdedigbaar door de superieure koeler, maar het is geen koopje.

Model-VRAM-matrix

Wat past er werkelijk in 24GB, 48GB en 96GB? Deze tabel geeft realistische waarden met overhead en KV-cache:

Model Quant Ruwe weights Met overhead + KV Past in 24GB? Past in 48GB?
8B (Llama 3.1) Q8 ~8 GB ~9-10 GB ✅ Ruim
14B (Qwen 2.5) Q8 ~14 GB ~15-16 GB
32B (Qwen 3) Q4 ~16 GB ~18-20 GB ✅ Past, korte context
32B (Qwen 3) Q6 ~24 GB ~26-28 GB
32B (Qwen 3) Q8 ~32 GB ~34-36 GB ❌ (offload naar RAM)
70B (Llama 3.3) Q4_K_M ~40 GB ~42-45 GB ✅ Past, context afhankelijk
70B (Llama 3.3) Q8 ~70 GB ~74-78 GB ❌ (4×3090 nodig)
120B (Qwen 3) Q3 ~45 GB ~48-52 GB ⚠️ Zeer krap, minimale context

Met 1×3090 (24GB) werk je vooral met 8-14B Q8 en 27-32B Q4/Q5 modellen. Grotere modellen kunnen gedeeltelijk naar RAM worden geoffload (llama.cpp ondersteunt dit), maar daalt de snelheid aanzienlijk.

Met 2×3090 (48GB) wordt 70B Q4 realistisch voor interactieve chat (~15-22 tok/s). 120B Q3 is mogelijk maar krap qua context. 70B Q8 heeft 48GB niet genoeg (74-78GB nodig) — daarvoor zou 4×3090 nodig zijn, wat op dit platform niet ondersteund wordt.


Uitbreidingspad: 1 → 2 GPU's, max

Dit platform is ontworpen voor maximaal 2 GPU's. Het ASUS ProArt X670E-CREATOR bord heeft 2 volwaardige PCIe x16 slots; de derde slot is slechts PCIe 4.0 x2, wat ongeschikt is voor een extra GPU.

Fase VRAM Wat kun je draaien? Opmerking
Fase 1 (nu) 24GB 8-14B Q8 (razendsnel), 27-32B Q4/Q5, grotere modellen met CPU-offload Direct productief. RAG + agents + alle services tegelijk.
Fase 2 (uitbreiding) 48GB (2× 3090) 70B Q4 (~15-22 tok/s, interactief), 70B Q3_K_M + lange context, 120B Q3 (beperkte context) Tweede kaart bij voorkeur een 2-slot blower-style RTX 3090 (HP OEM of FE) — direct in PCIEX16_2 of via PCIe-riser. Let op bij OEM-blowers: sommige Dell-kaarten hebben propriëtaire power-connectoren; HP Turbo is meestal standaard. Bij riser: vastzetten op Gen4.

Waarom geen Fase 3 met 4×3090?

  • Het ProArt X670E-bord heeft maar 2 volwaardige PCIe-slots. De derde slot is elektrisch slechts PCIe 4.0 ×2 — ongeschikt voor een extra GPU.
  • 1300W PSU is onvoldoende voor 4× SUPRIM (4×420W = 1680W alleen GPU's).
  • De fysieke ruimte en airflow voor 2.7-slot kaarten in een enkele kast is onpraktisch bij 4 stuks.
  • Voor 96GB+ VRAM is een nieuw platform nodig: Threadripper, Threadripper Pro, of EPYC met voldoende PCIe lanes.

Architectuur: LLM-runtime als aparte laag

De services zijn gestapeld in lagen, met de LLM-runtime als onafhankelijke infrastructuur:

GPU-laag
  ↓
llama.cpp / Ollama server (OpenAI-compatible API)
  ↓
Open WebUI   |   OpenClaw   |   RAG   |   Agents   |   Research
  ↓
Docker-services: Postgres, Caddy, Bookstack, Vaultwarden, LinkDing, Kanban
  ↓
Ubuntu Server 24.04 LTS (headless)

Deze gelaagdheid zorgt dat Open WebUI, OpenClaw en de agents onafhankelijk van de modelruntime vervangen kunnen worden. De LLM-server exposeert een OpenAI-compatible API; alle services praten daar tegenaan.


Twee SLA's voor inference

In plaats van één vage "<5 seconden" zijn er twee prestatie-eisen:

Interactieve chat

  • TTFT (time-to-first-token) < 2-5 seconden
  • Geschikt voor: dagelijkse chat, snelle code-vragen, project planning
  • Modellen: 8B-14B Q8 of 27-32B Q4 (op 24GB); 70B Q4 (op 48GB)

Nuance: TTFT < 2-5s geldt voor korte prompts op kleine modellen. Prefill van een 32B Q4 op één 3090 zit rond ~700-1000 tok/s — een RAG-context van 10k tokens betekent 10-15 seconden time-to-first-token, op welke config dan ook. Dat is fysica van de 3090, geen config-fout.

Deep reasoning / agentic

  • Geen harde latency-eis — maximaliseer tokens/sec × context × modelkwaliteit
  • Geschikt voor: 's nachts batch-verwerking, complexe code-refactoring, research, lange documenten verwerken
  • Modellen: 70B Q4+ of 120B (op 48GB); deep thinking lange context

NVLink: context

De RTX 3090 is de laatste NVIDIA-consumerkaart met NVLink-ondersteuning (verwijderd bij de 4090/5090). Voor LLM-inference is NVLink echter geen architectuurvereiste:

  • llama.cpp gebruikt standaard pipeline parallelism (layer splitting) — hierbij maakt NVLink weinig verschil.
  • Tensor parallelism profiteert wel van NVLink, maar is in llama.cpp nog experimenteel.
  • Het primaire voordeel van twee kaarten zit in 48GB fysiek VRAM (grotere modellen), niet in "twee keer zoveel snelheid".
  • NVLink is nice-to-have, geen must-buy.

Levensduur van een gebruikte RTX 3090

De GPU-core (GA102-chip) is zeer duurzaam en kan bij normaal gebruik 20+ jaar meegaan. Maar een gebruikte 3090 heeft andere slijtagepunten:

Component Type Levensduur Vervangbaar?
GPU-chip (GA102) Silicium 20+ jaar Nee
GDDR6X VRAM Geheugen 10-15 jaar, gevoelig voor hitte Nee (vastgesoldeerd)
Fans Mechanisch ~50.000-100.000 uur (~6-11jr) ✅ ~€15-30 per stuk
Thermische pads Veroudering 5-7 jaar (drogen uit) ✅ ~€15-20 set
Condensatoren / VRM Elektronisch 10-15 jaar Alleen bij reparatie

Met een fan-swap (rond 2030) en pad-vervanging (bij aankoop + rond 2029) gaat een MSI SUPRIM nog 4-6 jaar mee in 24/7 LLM-inference.