← Blog

Tooling

Homelab GPU voor 8 engineers: 5090 vs 3090 vs Hetzner

Het is zondag in Schiedam. De homelab AI-bak boot Ollama niet. De SSD zit vast. Acht engineers verwachten 'm maandag terug. Zo kiezen wij de bak.

Jacob Molkenboer· Oprichter · A Brand New Company· 7 dec 2025· 8 min
Messing relais op gevouwen ivoren linnen, naast aangeslagen stemvork en crème indexkaart met groen lint en rood lakzegel.

Het is zondagavond in Schiedam. De homelab AI-bak van je team, die met de RTX 5090 waar je de oprichter mee in zee hebt gepraat, boot Ollama niet. De NVMe is halverwege een update vastgelopen, de model cache is half geschreven, en maandagochtend verwachten acht engineers dat Devstral en Qwen3-Coder bij de eerste poging laden. Jouw telefoon is de on-call rotatie. Jouw telefoon is de enige rotatie.

Dit stuk is de scoremethode die we elke keer gebruiken als een Nederlands bureau onder de €10M ons vraagt een GPU-bak te speccen voor hun interne AI dev-platform. We zijn vaak genoeg met die vraag aan tafel beland om het rekensommetje op te schrijven.

Drie bakken die steeds in onze offertes opduiken

Bijna elke offerte die we schrijven voor een intern AI dev-platform komt neer op één van deze drie vormen.

  1. Eén workstation met een RTX 5090. Compleet rond de €4.200, 32 GB VRAM, staat onder een bureau of in een kleine serverkast. Stil genoeg dat niemand klaagt.
  2. Een dual-3090 frankenbuild. Twee tweedehands RTX 3090's van Marktplaats of Tweakers V&A, een tweedehands riser, een 1600W PSU, mining-rig open frame. Gebouwd rond de €2.800, 48 GB VRAM, klinkt als een windtunnel.
  3. Hetzner GPU bare metal. Een GEX44 met een RTX 4000 SFF Ada en 64 GB RAM kost op het moment van schrijven rond de €184 per maand. De GEX130 met een L40s zit dichter bij €700. Geen build, geen kast, geen ventilatoren van jou waar je naar moet luisteren.

Elk antwoordt op dezelfde vraag (acht engineers hebben GPU-tijd nodig voor code completion, RAG indexing, voice transcription en af en toe een fine-tune) met een andere afweging.

De drie assen waarop we scoren

Voor deze beslissingen scoren we op drie assen en wegen ze naar wie de klant is:

  • Kosten per engineer per maand over 24 maanden.
  • Idle-stroomverbruik tegen het Schiedamse zakelijke stroomtarief.
  • De zondagvraag: wie zet de bak weer rechtop als er iets vastloopt.

We scoren niet op piek-FLOPs, op tokens-per-seconde uit een benchmarkblog, of op wat de GPU nieuw kost tegen MSRP. Geen van die getallen overleeft de eerste dinsdag waarop acht engineers om 09:14 allemaal de inference server willen aanslingeren.

Kosten per engineer over 24 maanden

De single-5090 build:

Hardware (5090, CPU, board, 64GB RAM, NVMe, PSU, case):  €4.200
Reserve-NVMe + kleine UPS:                                 €420
Afschrijving over twee jaar: €4.620 / 24                 = €192,50/mnd
Per engineer (acht devs):                                = €24,06/mnd

De dual-3090 frankenbuild:

Hardware (twee tweedehands 3090's, board, CPU, 128GB RAM, PSU):  €2.800
Reserve-PSU + NVMe:                                              €380
Afschrijving over twee jaar: €3.180 / 24                       = €132,50/mnd
Per engineer (acht devs):                                      = €16,56/mnd

De Hetzner GEX44:

GEX44 maandelijkse huur:                                 €184,00
Eenmalige setup, afgeschreven over 24 maanden:             €4,10/mnd
Per engineer (acht devs):                                = €23,51/mnd

De cijfers clusteren tussen de €16 en €24 per engineer per maand. Bij deze teamgrootte is kosten niet de doorslaggevende as. Dat is het zelden, zodra je het echt uitrekent.

Idle-stroomverbruik tegen het Schiedamse zakelijke tarief

Schiedamse zakelijke stroom zit in 2026 rond de €0,35/kWh als je het netwerktarief en de energiebelasting erbij optelt. Dat is het werkgetal dat we gebruiken bij een bureau zonder eigen zonnepanelen op het dak.

We meten idle, niet piek. De piek is eerlijk over je slechtste uur, idle vertelt je wat de bak kost terwijl niemand 'm gebruikt, en dat zijn de meeste uren.

Single RTX 5090 bak, idle rond de 80W:
  80W * 24u * 365 = 701 kWh/jr * €0,35 = €245/jr

Dual-3090 frankenbuild, idle rond de 120W:
  120W * 24u * 365 = 1.051 kWh/jr * €0,35 = €368/jr

Hetzner GEX44, idle vanaf jouw stroomrekening:
  €0/jr (de kWh zit in hun datacenter)

De dual-3090 oogt het slechtst op idle, maar het is ook de bak die je op een smart plug kunt zetten en na 19:00 en in het weekend kunt uitschakelen. Doe je dat ook echt, en de meeste bureaus doen dat niet, dan draait het beeld om. Doe je het niet, dan blijft het zoals beschreven.

De zondagvraag

Dit is de as die de meeste discussies waar wij binnenwandelen beslecht.

Als een NVMe op zondagavond om 22:00 op de homelab-bak vastloopt, rijdt iemand naar kantoor, sshst in via Tailscale, of belt de on-call engineer wakker. Ollama's model cache staat in ~/.ollama/models. Is de cache half geschreven doordat een update door een stroompiek werd onderbroken, dan geeft ollama list niks terug en geeft de API een 500. De fix is niet moeilijk, het kapotte manifest verwijderen en het model opnieuw pullen, maar er moeten handen aan te pas komen.

Op Hetzner GPU bare metal open je een ticket en vraag je om de KVM-console. We hebben de responstijd 's nachts op rond de 15 minuten gemeten. De fix doe je nog steeds zelf, maar dan vanaf je bank via de Hetzner Robot-console, en zij vervangen de hardware binnen de SLA als de schijf echt dood is.

Op een homelab-bak is degene die de oorspronkelijke PO tekende de on-call. In een bureau onder de €10M is dat de oprichter, de operations lead, of die ene senior engineer die er al lang genoeg rondloopt. Na drie maanden is die persoon de zondagse telefoontjes zat.

Waarschuwing

Als je voordat je de GPU koopt niet op schrift kunt benoemen wie Ollama om 23:00 op een zondagavond in juni herstelt, heb je geen homelab gekozen. Dan heb je een toekomstige spoedklus gekocht.

Als de rekensom zegt: nog niet

Heb je vier engineers en is je maandelijkse hosted inference uitgave (Claude API, OpenAI API, OpenRouter) onder de €400, dan zegt de rekensom op elke bak hierboven: wachten. Negen op de tien offertes die we dit jaar schreven voor een bureau onder de €10M waren goedkoper geweest met een hosted API voor de eerste zes maanden en daarna een herspec in maand zeven. Dat zeggen we ook hardop in het voorstel. Geen slimme zet, gewoon de saaie zet.

De homelab-vraag wordt pas echt als één van deze drie dingen klopt:

  • Je maandelijkse hosted uitgave komt boven de €600 en de curve stijgt nog steeds.
  • Klantdata mag de EU niet uit, en je loopt aan tegen frictie rond verwerkersovereenkomsten met Amerikaans gehoste modellen.
  • Je wilt een fine-tune of een embedding-pipeline draaien die tegen prijzen-per-token onbetaalbaar zou worden.

Klopt geen van die drie vandaag, dan is het juiste antwoord 'nog niet' en een korte notitie in de roadmap om er aan het einde van het kwartaal naar terug te kijken.

De scorekaart, in één blok

We houden de score bij in een klein tekstblok in de offertemap, één kolom per optie:

                                5090-bak   Dual-3090   Hetzner GEX44
Kosten per engineer / maand     €24,06     €16,56      €23,51
Idle stroom / jaar              €245       €368        €0
On-call hersteller              klant      klant       Hetzner + klant
Hersteltijd (zo 22:00)          2-4u       2-4u        15-30 min
Bruikbaar VRAM                  32 GB      48 GB       20 GB
Comfortabel concurrent devs     4-5        6-7         3-4
Hardware-swap bij uitval        klant      klant       Hetzner SLA
Geluid op kantoor               laag       hoog        geen

De interessante rijen zijn de onderste vier. De dual-3090 wint op VRAM en concurrency. De 5090 wint op stroomverbruik en geluid. De Hetzner-bak wint op elke operationele as en verliest op VRAM per dev, en dat is de beperking die gaat bijten zodra de context windows van je team groeien.

Hoe het besluit valt, per type klant

Een marketingbureau in Utrecht met zes engineers en geen interne ops-capaciteit krijgt de Hetzner-offerte. We zetten geen homelab in een pand waar op zondag niemand naartoe rijdt. De meerprijs ten opzichte van een frankenbuild is zo'n €7 per engineer per maand. Twee cappuccino's voor nooit meer hoeven binnenrijden.

Een dev shop met acht engineers en een senior infra-persoon die de homelab daadwerkelijk wíl, krijgt de dual-3090-offerte. We zorgen dat die persoon de on-call rotatie op schrift tekent, we zetten er een kleine UPS voor, en we configureren ollama serve achter een systemd-unit met restart-on-failure plus een model cache integrity check die bij boot draait.

Een founder-led AI-native startup met twee of drie engineers en een lange roadmap krijgt de 5090-bak. De 32 GB VRAM biedt genoeg ruimte om een 32B-parameter model en een kleiner embedding-model tegelijk te hosten, het on-call oppervlak is klein (de oprichter staat sowieso aan), en de oprichter leert de stack waarop ze gaan opschalen. In de zero-to-one fase is de oprichter de SRE, of het org chart dat nu zegt of niet.

We adviseren de vorm 'één engineer met een 3090 onder haar bureau' niet meer. Het eindigt steevast met die engineer als bus factor en on-call rotatie tegelijk, ze vertrekt uiteindelijk, en de bak wordt een presse-papier die niemand meer wil aanraken.

Een bureau waar we twee jaar geleden mee werkten stond tegen onze offerte in op de onder-het-bureau vorm. Hun lead engineer vertrok in februari. Niemand in het bedrijf kende het BIOS-wachtwoord, de LUKS-passphrase voor de dataschijf, of de Tailscale-ACL van de bak. Ze betaalden ons om op een woensdag naar hun kantoor te rijden en alles te reconstrueren vanuit het nog draaiende Ollama-proces. Het kostte meer dan het verschil tussen een homelab en 24 maanden Hetzner.

De vastgelopen Ollama cache, in vijf minuten gefixt

Heb je tot hier gelezen en staat er nu een homelab-bak vast, dan ziet het herstel er zo uit:

sudo systemctl stop ollama

# check of de cache het probleem is
ls -lah ~/.ollama/models/manifests/registry.ollama.ai/library/
# als een map leeg is of een modelbestand half is, weet je waar het misging

# verwijder het manifest van het kapotte model; verweesde blobs worden bij de volgende start opgeruimd
rm -rf ~/.ollama/models/manifests/registry.ollama.ai/library/<model>

sudo systemctl start ollama
ollama pull qwen3-coder:32b

Hangt ollama pull hierna nog steeds, check dan journalctl -u ollama -f op een unexpected EOF uit de GGUF-reader. Dat betekent meestal dat de onderliggende NVMe een schrijffout heeft gegooid, en wil je smartctl -a /dev/nvme0 draaien voordat je de bak weer vertrouwt. De Ollama troubleshooting docs dekken de rest van de gangbare faalmodi.

Kernpunt

De kosten per engineer convergeren bij alle drie de opties rond de €20 per maand. Wat je in werkelijkheid koopt, is wie er op zondag de telefoon opneemt.

Wat er in het runbook hoort

Bij elke homelab-keuze is het runbook de oplevering die bepaalt of de bak zijn tweede jaar haalt: het BIOS-wachtwoord, de LUKS-passphrase, de Tailscale auth key, de locatie van de reserve-NVMe in de bergkast, de Hetzner Robot-login als de setup hybride is, en de contactgegevens van degene die heeft toegezegd on-call te staan. Het runbook leeft op twee plekken. De ene is de bedrijfswachtwoordmanager. De andere is een geprinte envelop in een gesloten lade op kantoor. Die geprinte envelop heeft ons twee keer gered.

Waar we het vaakst uitkomen

Het eerlijke antwoord voor Nederlandse bureaus onder de €10M: eerst Hetzner, dan dual-3090, en alleen een single 5090 als het team klein genoeg is dat de oprichter SRE wil zijn. De meerprijs ten opzichte van een homelab is klein genoeg dat we klanten niet meer uit de bare-metal optie proberen te praten. We hebben genoeg zondagen aan NVMes hersteld om te weten wat zo'n zondag kost.

Toen we vorig jaar het interne AI dev-platform bouwden voor een Schiedams marketingbureau, draaiden we precies deze scoring op drie opties. We kwamen uit op een Hetzner GEX44 plus een kwartaal-snapshot naar Backblaze B2, en we schreven het Ollama-herstelrunbook in hun Notion. Dat is de vorm van het AI-agent werk dat we doen voor bureaus die hun eigen platform willen zonder de hardware te bezitten.

Ben je dit deze week voor je eigen team aan het afpassen, dan is de vijf-minuten-audit: schrijf bij naam op wie Ollama op een zondagavond in juni om 23:00 zou herstellen. Lukt dat niet, dan is het antwoord Hetzner.

Kern

De GPU-kosten per engineer convergeren bij alle drie de opties rond de €20 per maand. Wat je in werkelijkheid koopt, is wie er op zondag de telefoon opneemt.

FAQ

Kan dezelfde GPU-bak ook productieverkeer van klanten serveren?

Niet zonder een tweede bak. Dev en prod op één GPU mixen, zo lever je een vrijdag-outage op. Houd een dev-bak en een aparte prod inference-pad, ook als ze hetzelfde model met dezelfde weights draaien.

Waarom niet gewoon een hosted API gebruiken en de GPU helemaal overslaan?

Voor de meeste bureaus is dat de eerste zes maanden het juiste antwoord. De homelab-vraag wordt pas relevant als de maandelijkse hosted uitgave grofweg de €600 overstijgt, of als klantdata binnen de EU moet blijven.

En de RTX 4090 of een paar tweedehands A6000's?

De 4090 werkt nog steeds, maar tegen de huidige tweedehandsprijzen wint de 5090 op VRAM-ruimte voor een kleine meerprijs. Een paar A6000's is geweldig voor VRAM-gebonden RAG-werk, maar ze blijven warm in idle en ze maken veel herrie.

Hoe delen we één GPU over acht engineers zonder wachtrijen?

Draai een OpenAI-compatible endpoint (Ollama of vLLM) achter een kleine queue, geef elke engineer zijn eigen API key, en log tokengebruik per key. Concurrent requests batchen op de modellaag.

toolingai agentsarchitectureoperationsstrategy

Iets bouwen?

Start een project