Directus Hosting op basis van Hetzer

Model Directus, met FastAPI-service en JSReporting en de impact naar sizing, storage en kosten.

  • Directus-App
  • Directus-Service (FastAPI)
  • Directus-JSReporting
  • PostgreSQL + Redis + reverse proxy

Model op Hetzner

Productie-node

Op de productie-VPS zou ik logisch scheiden in containers:

  • reverse-proxy (Caddy of Nginx, met Let’s Encrypt)
  • directus-app
  • directus-service-fastapi
  • directus-jsreport
  • postgres
  • redis

Uitwijk-node

Op de uitwijk-VPS:

  • dezelfde stack-definitie
  • normaal gesproken niet actief als primaire omgeving
  • periodiek restore van PostgreSQL-backup
  • synchronisatie van uploads / assets
  • FastAPI- en JSReport-images/config identiek aan productie

Omdat jouw FastAPI-stack geen eigen persistente data bevat, is die vooral een deployment-onderdeel: image + configuratie + secrets. Dat maakt failover eenvoudiger.

Waarom dit verschil maakt voor sizing

De FastAPI-stack is meestal niet heel zwaar, maar hij vraagt wel extra:

  • RAM
  • interne API-communicatie
  • deployment-coördinatie
  • secrets/config-beheer
  • monitoring

Dus waar ik eerder nog wat compacter rekende, zou ik nu voor productie niet meer denken in “net genoeg”, maar in comfortabel klein-zakelijk.

Hetzner-opzet

Productie

  • 4 vCPU / 8 GB RAM
  • 80 GB OS disk
  • 250 GB attached volume

Waarom die scheiding?
Omdat Hetzner volumes juist bedoeld zijn voor data-intensieve workloads zoals databases en log/storage, en die volumes redundant zijn opgeslagen. Tegelijk meldt Hetzner expliciet dat server snapshots/backups attached volumes niet meenemen, dus je moet je data-backups voor Postgres en uploads apart regelen.

Uitwijk

  • 2 vCPU / 4 GB RAM
  • 40–80 GB OS disk
  • 250 GB attached volume

Dat is genoeg als deze node alleen uitwijk is en geen development/test doet.

Kosten, nu gecorrigeerd mét FastAPI-stack

Ik houd het bewust bij een praktische bandbreedte, omdat exacte servertypen afhangen van de gekozen cloud line.

1. Productie-VPS

Voor een 4 vCPU / 8 GB server zit je bij Hetzner grofweg in de orde van circa €15–€30 per maand, afhankelijk van het type. Hetzner positioneert zijn cloud nadrukkelijk als low-cost Europese cloud, met datacenters in Duitsland en Finland en GDPR-focus.

2. Productie-volume 250 GB

Hetzner heeft de volumeprijs op €0,0572 per GB per maand gezet per februari 2026.
Dus 250 GB komt uit op ongeveer:

  • 250 × €0,0572 = €14,30 per maand

3. Uitwijk-VPS

Voor een kleinere uitwijkserver: grofweg €5–€15 per maand.

4. Uitwijk-volume 250 GB

Nog eens ongeveer:

  • €14,30 per maand

5. Server-backups

Hetzner rekent voor server-backups een maandprijs van 20% van de serverprijs. Let op: dit geldt voor de serverdisk, niet voor attached volumes.

6. PostgreSQL-backups en uploads-backups

Omdat attached volumes niet in server-backups zitten, zou ik aanvullend rekenen op:

  • Storage Box of object storage voor dumps / exports / asset backups
  • praktisch: €5–€10 per maand als startpunt

Realistische totaalinschatting

Met jouw volledige stack, inclusief FastAPI en 250 GB data-opslag op beide nodes, kom ik nu eerder uit op:

  • Productie-server: €15–€30
  • Productie-volume 250 GB: €14,30
  • Uitwijk-server: €5–€15
  • Uitwijk-volume 250 GB: €14,30
  • Backup-opslag: €5–€10
  • Server-backup add-on: ongeveer 20% van serverprijzen

Dus totaal grofweg:

  • ondergrens: ongeveer €57–€65 per maand
  • realistischer: ongeveer €65–€85 per maand

Dat is een nettere raming dan de eerdere, omdat nu de FastAPI-stack én de 250 GB volumes expliciet zijn meegenomen.

HTTPS en certificaten

Voor HTTPS zou ik het simpel houden:

  • domein bij een registrar
  • A/AAAA records naar productie
  • reverse proxy met Caddy
  • TLS via Let’s Encrypt

De certificaten zelf zijn dan gratis; je betaalt alleen je domeinregistratie.

PostgreSQL-backup: hoe ik dit zou doen

Omdat Hetzner-volume-backups niet automatisch onder server-backups vallen, zou ik dit apart inrichten:

Aanpak

  • 4x per dag pg_dump -Fc
  • upload naar backupopslag
  • optioneel ook naar uitwijknode
  • retention, bijvoorbeeld:

Op uitwijknode

  • nieuwste dump automatisch restoren naar standby-stack
  • healthcheck draaien
  • alleen promoten bij echte failover

Dat past goed bij jouw uitgangspunt: tweede locatie strikt als uitwijkmachine.

Mijn aangepaste advies

Met FastAPI erbij vind ik de Hetzner-optie nog steeds sterk, maar wel met deze nuance:

  • niet te klein dimensioneren
  • data en OS scheiden
  • Postgres en uploads apart backuppen
  • FastAPI als first-class stack behandelen
  • geen Kubernetes nodig

Voor jouw setup zou ik dus niet meer spreken over “3 stacks”, maar over:

4 logische lagen

  1. Directus-App
  2. Directus-Service (FastAPI)
  3. Directus-JSReporting
  4. Data & platformlaag (Postgres, Redis, reverse proxy, backups)

Wil je dat ik hier nu een aangescherpt architectuurplaatje van maak met die vier lagen, zodat de FastAPI-stack er ook expliciet in staat?

Nagedacht gedurende 17s

Bijvoorbeeld:

CX41 / CPX31 + grotere disk

  • 4 vCPU / 8GB RAM
  • disk uitbreiden naar ±240–300GB

👉 Kosten:

  • base VPS: €20 – €30
  • extra storage: ± €0.04 / GB

👉 250GB totaal:

  • extra 170GB ≈ €7

👉 Totaal: ~€27 – €37 / maand

🟢 Optie B — VPS + aparte volume (aanrader)

Je neemt:

  • kleinere OS disk (bijv. 80GB)
    • attached volume van 200–300GB

Waarom dit beter is:

  • data en OS gescheiden
  • makkelijker migreren
  • snapshots per volume
  • veiliger bij rebuilds

👉 Kosten:

  • VPS: €15 – €25
  • volume 200GB: ± €8
    👉 Totaal: ~€25 – €35 / maand

🧠 Mijn advies (belangrijk)

👉 Kies Optie B (separate volume)

Waarom:

  • je PostgreSQL + uploads groeien altijd
  • je wilt niet je hele VPS moeten migreren
  • restore/failover wordt eenvoudiger
  • cleaner architectuur (past bij jouw DR-denken)

📦 Hoe je storage logisch indeelt

Op je productie node:

🔹 OS disk (bijv. 80GB)

  • Docker images
  • containers
  • logs
  • OS

🔹 Data volume (±200–300GB)

Mount bijvoorbeeld op:

/data

En gebruik:

  • /data/postgres
  • /data/uploads
  • /data/jsreport
  • /data/backups

🗄️ PostgreSQL + storage sizing (realistisch)

Voor jouw use case (±10 users):

ComponentGroei
PostgreSQLlaag–medium
Directus uploadshoogste factor
JSReporting outputmedium
Backupsmedium

👉 Vaak is uploads > database

Dus 250GB is niet overdreven — eerder verstandig.

🔁 Backup impact op storage

Let op:

Als je lokaal ook backups bewaart:

  • 1 dump = bijv. 1–5GB
  • 4 per dag = 4–20GB/dag
  • retention 7 dagen = 30–140GB

👉 Daarom:

💡 Best practice

  • lokale korte retention (1–2 dagen)
  • rest naar Storage Box

🧩 Concrete aanbevolen setup

Productie VPS

  • 4 vCPU / 8GB RAM
  • 80GB OS disk
  • 250GB volume

👉 ± €30 – €40 / maand

Uitwijk VPS

  • 2 vCPU / 4GB RAM
  • 40–80GB OS disk
  • 200GB volume

👉 ± €15 – €25 / maand

Storage Box

👉 ± €5

👉 Totaal

👉 ~€50 – €70 / maand

⚖️ Is dit nog steeds interessant vs NUC?

Ja — want je krijgt:

  • geen hardware risico
  • betere uptime
  • snellere netwerken
  • makkelijker schalen