Tooling
Coolify, Hetzner of Vercel: zo scoor je je interne stack
Vrijdag 19:00. De kantoor-glasvezel valt uit. Elf devs zijn offline. De hostingkeuze van zes maanden terug staat nu in je inbox en vraagt: wie heeft de runbook?

Het is vrijdag, 19:00. De glasvezellijn naar het kantoor valt dood. De telefoon van de ops lead lijkt een kerstboom. Drie Linear-borden, de interne tijdregistratie, de staging-omgeving voor de klantdemo van maandag: allemaal onbereikbaar. Elf engineers, verspreid over Amsterdam, Den Bosch en eentje in een Sprinter bij Eindhoven, staren naar dezelfde rode stip. Zes maanden eerder moest iemand kiezen tussen drie hostingopties voor de interne stack: een Coolify-homelab op kantoor, een Hetzner-bak in Falkenstein, of een Vercel-plus-Supabase-cloudopstelling. Nu kom je erachter welke je had gekozen.
Dit is het moment dat met terugwerkende kracht de hostingbeslissing beoordeelt die een Nederlands bureau over zijn interne tooling nam. Om 19:04 weet je of je de juiste keuze maakte, en wat belangrijker is, of iemand in het team er iets aan kan doen voor maandag.
Wij werken met bureaus in precies deze band: onder de €15M omzet, tussen de 8 en 25 engineers, en een stack aan interne tools die net zwaar genoeg is om ertoe te doen en net licht genoeg om optioneel te voelen. De scoremethode hieronder is hoe wij tussen de drie opties kiezen als er een bureau aanklopt. Bewust saai.
De drie kandidaten
In 2026 zijn er drie serieuze opties voor een interne stack op deze schaal.
- Een homelab op kantoor. Twee of drie mini-pc's (Beelink SER, Minisforum, of een refurbished Dell OptiPlex) die Coolify of Dokploy draaien bovenop Docker, in een rack met een UPS en een zakelijke glasvezellijn.
- Één dedicated bak bij Hetzner. Meestal een AX52 of AX102 in Falkenstein of Helsinki, rond de €60 tot €140 per maand, met Coolify of platte Docker Compose.
- Een managed cloud-stack. Vercel voor de frontends, Supabase voor Postgres plus auth plus storage, en Cloudflare Workers voor cron en queue-lijm.
Alle drie kunnen dezelfde vorm van interne stack hosten: een Next.js-dashboard, een Postgres-database, een paar cron jobs, een always-on queue worker, een mailparser. De verschillen worden pas zichtbaar onder druk.
Kosten per engineer bij elf devs
De eerste as. We tellen de totale maandelijkse kosten op (hardware afgeschreven over drie jaar, licenties, bandbreedte, back-ups, stroom, ISP, alles wat factureert) en delen door het aantal engineers dat van de stack afhangt. Voor een bureau van 11 devs met een representatieve interne load (één frontend, één admin-app, 50 GB Postgres, 10 GB object storage, een worker, twee crons) zien onze eerlijke cijfers voor 2026 er zo uit:
Optie Capex (3jr) Maandelijks €/dev/maand
Homelab €2.800 €60 €13
Hetzner €0 €200 €18
Cloud €0 €450 €41
(Homelab maandelijks: ~€40 stroom + €20 offsite back-up bij Backblaze B2.
Hetzner maandelijks: AX102 + IPv4 + 100GB Storage Box + bandbreedte.
Cloud maandelijks: Vercel Pro voor 5 seats + Supabase Pro + add-on DB + Workers.)
De homelab wint op cashflow, maar pas nadat je €2.800 hardware over drie jaar afschrijft, en alleen als je je eigen tijd niet meerekent. De Hetzner-bak is het voor de hand liggende midden. De cloud-stack is op papier de duurste en kost effectief nul capex.
Per engineer kom je ergens tussen de €10 en €40 per maand uit. Geen van deze is duur bij onder de €15M omzet. De vraag is niet welke het goedkoopst is. De vraag is welke smaak pijn je gekocht hebt.
Recoverytijd als de kantoorglasvezel om 19:00 uitvalt
De tweede as. Wij meten: vanaf het moment dat de kantoorlijn dood gaat, hoe lang duurt het tot een dev thuis de tool weer kan gebruiken?
- Homelab: standaard onbepaald. De services blijven draaien op het kantoornetwerk, maar niemand buiten het pand kan ze bereiken. Met een 4G/5G-failover op de kantoor-router en een Tailscale- of WireGuard-mesh naar het rack is recovery ongeveer 30 seconden. Zonder die twee onderdelen is recovery "maandagochtend, als iemand naar kantoor rijdt".
- Hetzner-bak: nul. De bak staat in Duitsland. Het thuisnetwerk van engineers brengt ze terug zodra ze refreshen.
- Cloud: nul. Het is iemand anders zijn PoP, iemand anders zijn pager.
Dit is de as waarop de homelab op papier eng oogt en in de praktijk prima werkt, op voorwaarde dat je €120 hebt uitgegeven aan een Teltonika RUTX11 (of een fatsoenlijke 4G-failover-router) en een middag aan een Tailscale-subnet-router. We hebben twee bureaus die stappen zien overslaan, en bij de derde black-out migreerde de CTO stilletjes alles in een lang weekend naar Hetzner.
Een homelab zonder 4G-failover en een VPN is één gebouwstoring verwijderd van eruitzien als een hostingstoring voor iedereen op Slack. Reken de router en de middag in het budget, of laat homelabben.
Eigenaar van de runbook als de UPS-accu op vrijdag sterft
Dit is de vraag die elk bureau te licht weegt. Het is niet "wat doen we als er iets stuk gaat?" Het is "wie, met naam, heeft de procedure, en is die persoon vrijdagavond 19:00 bereikbaar?"
- Homelab: iemand in jouw team. Waarschijnlijk degene die het opzette. Als die persoon twee weken in Phuket zit, moet de runbook in de wiki staan, met foto's van het rack, het onderdeelnummer van de UPS-accu, en de dichtstbijzijnde Conrad waar een junior op zaterdagochtend heen kan rijden.
- Hetzner: gedeeld. Hetzner regelt stroom, koeling, netwerk en fysieke disk-vervangingen. Jij regelt het OS, Docker, Coolify en je applicaties. Hun support is snel op hardwaretickets en traag op al het andere. De runbook is kort, maar moet bestaan.
- Cloud: zij. Jij hebt een statuspagina-abonnement en een creditcard. De runbook leest "wachten". Dat klinkt passief tot je een echte storing uitzit en beseft dat het het juiste antwoord is.
De eerlijke versie van deze as: de homelab is de optie waarbij jij, de bureau-eigenaar of technisch partner, het telefoontje krijgt. Hetzner is de optie waarbij je alleen gebeld wordt als je een back-up oversloeg. De cloud-stack is de optie waarbij je niet gebeld wordt, maar wel elke maand een grotere factuur krijgt.
Het scoreblad
We scoren elke optie op een schaal van 1 tot 5 op elke as, en wegen de assen daarna naar wat het bureau echt belangrijk vindt. De defaults die wij voor een Nederlands bureau met minder dan €15M omzet hanteren zien er zo uit:
As Gewicht Waarom
Kosten per engineer 1 Op deze schaal beweegt de hostingrekening de P&L niet.
Recoverytijd 2 Eén slechte vrijdag schaadt klantvertrouwen hard.
Eigenaar runbook 3 Bus factor is het echte risico. Altijd.
Scoren (1 = slecht, 5 = goed):
Kosten Recovery Runbook Gewogen
Homelab 5 2 2 5*1 + 2*2 + 2*3 = 15
Hetzner 4 5 4 4*1 + 5*2 + 4*3 = 26
Cloud 2 5 5 2*1 + 5*2 + 5*3 = 27
Voor het typische bureau in ons netwerk komt de rekensom hier uit: Hetzner en cloud liggen binnen één punt van elkaar, homelab een stuk daarachter. Cloud loopt alleen duidelijk uit als het team volledig remote werkt en geen kantoor heeft om in te homelabben. Homelab wint alleen als er een partner is die echt van de hardware geniet en bereid is ervoor on-call te staan. Hetzner is het antwoord voor de saaie middenmoot van 70%.
De tweede-orde-kosten die niemand telt
De tabel hierboven is het makkelijke deel. De cijfers die iedereen vergeet op het sheet te zetten:
- DevEx-frictie. Coolify op een Hetzner-bak geeft je een deploy-loop die in de buurt van Vercel komt. Een homelab met dezelfde Coolify geeft je een Vercel-equivalente loop, tot iemand over de rack-kabel struikelt. Platte Docker Compose op Hetzner geeft je 30 extra seconden per deploy en 10 uur yak-shaving per jaar.
- Soevereiniteit. Vercel en Supabase hebben allebei EU-regio's en een DPA. Cloudflare Workers draaien op de edge. Voor de meeste interne tooling is dat prima. Voor Nederlandse zorg, overheid of klantbestanden onder een strikte verwerkersovereenkomst is dedicated EU-metaal het simpelere gesprek.
- De volgende-engineer-test. Als je in oktober engineer nummer twaalf aanneemt, hoe lang duurt het voor die een one-line change naar het interne dashboard kan deployen? Op cloud: tien minuten. Op Hetzner met Coolify: twintig. Op homelab: een uur en een koffie met de partner die weet waar de sleutels liggen.
Wanneer elke optie echt wint
Cloud wint als
Je remote-first werkt, je data niet soevereiniteitsgevoelig is, en de tijd van je partners de duurste regel op de balans is. De combinatie Vercel + Supabase + Cloudflare koopt je het recht om nooit meer aan een runbook te denken. Voor een studio van 11 devs die €1,5M per jaar factureert, is €450 per maand een afrondingsfout tegenover één weekend partner-rust.
Hetzner wint als
Je het OS wil bezitten, je een voorspelbare in-euro's gefactureerde rekening van een Europees bedrijf wil, en je je een uur per maand routineonderhoud van een senior engineer kunt veroorloven. Het is het saaie antwoord en bijna altijd het juiste voor een bureau in deze band. Back-ups gaan naar een Hetzner Storage Box (ander DC) en een koude kopie naar Backblaze B2. End-to-end recovery vanuit back-up moet binnen 60 minuten passen. Als dat niet zo is, is je runbook niet af.
Homelab wint als
Je een kantoor hebt dat toch al betaald is, een partner die voor zijn lol r/homelab leest, en een klantenbasis die er echt om geeft dat de data in dezelfde ruimte staat als het team. We hebben precies één Nederlands bureau gezien waar alle drie waar waren. Ze zijn gelukkig. Hun rack heeft labels.
De vijfminutenaudit
Voor je iets verandert, scoor je je huidige opstelling op dezelfde drie assen. Open een sheet, schrijf drie kolommen: kosten per engineer, recoverytijd, eigenaar runbook. Vul eerlijke cijfers in. Als de runbook-kolom één naam bevat, is je bus factor één, en zit je dichter bij een vrijdagavond-incident dan je denkt.
Als de runbook-kolom leeg is, is dat het eerste om te repareren, ongeacht welke hostingoptie je gebruikt. Een document van één pagina met drie secties (hoe te herstellen vanuit back-up, wie te bellen bij de hostingprovider, waar de back-ups daadwerkelijk staan) is meer waard dan welke migratie ook.
Toen we vorig jaar de interne-tooling-stack bouwden voor een Rotterdams bureau, liepen we precies hiertegenaan. Ze hadden een schone Hetzner-bak en een nette Coolify-installatie, maar de recovery-procedure leefde in één hoofd. Wij schreven een runbook van één pagina, namen een Loom van vijf minuten op van de restore-from-back-up-flow, en zetten beide in hun gedeelde vault. Twee maanden later liep de disk vol, stikte de bak, en herstelde een junior engineer alles in 18 minuten. Dat soort interne-tooling-werk redt stilletjes een weekend.
Morgenochtend, open de wiki en zoek op "runbook". Als er niets terugkomt, weet je wat deze week wordt.
Kern
Onder de €15M omzet breekt de hostingrekening nooit het budget. De runbook wel. Weeg eigenaarschap drie keer zo zwaar als kosten als je scoort.
FAQ
Kunnen we Coolify op Hetzner draaien in plaats van platte Docker Compose?
Ja, en de meeste bureaus zouden dat ook moeten doen. Coolify op Hetzner geeft je een deploy-UX die dichtbij Vercel komt, met de voorspelbaarheid van Europees dedicated metaal. Pin de Coolify-versie en lees de changelog vóór upgrades.
Hoe zit het met Hetzner Cloud (de VPS) in plaats van de dedicated bak?
Cloud VPS is prima voor staging of frontends met weinig verkeer. Voor de always-on interne stack bij 11 devs is de dedicated AX-bak goedkoper per resource, sneller op disk, en makkelijker te back-uppen.
Hoe vaak gebruiken we de runbook nou echt?
Een of twee keer per jaar. De runbook is niet voor dagelijks gebruik. Hij is voor die ene vrijdag dat iemand op vakantie is, de disk volloopt, en een junior dev het moet fixen voor maandagochtend.
Is Vercel plus Supabase compliant voor Nederlandse klantdata?
Beide bieden EU-regio's en een DPA, wat het meeste bureauwerk dekt. Soevereiniteit wordt pas een echte beperking als klanten Nederland-only hosting eisen, meestal in de zorg of bij de overheid. Dan is dedicated EU-metaal het simpelere antwoord.