Floyd shares how he discovered Hetzner as a very cheap way to run your own data lakehouse.
The talk focuses on making that deployment easy to reproduce.
Framing: run a full DuckLake stack for under €15 a month.
02 / Who
frame_00m12s.pngframe_00m18s.pngframe_02m39s.png
Floyd Berndsen: ~8 years in data, and much longer in software.
Newly appointed Head of Data at All Options (options trading); team is hiring.
Works with DuckDB and DuckLake as a side quest / consultant (Berndsen.io).
More detail
All Options is an options-trading firm; Floyd started the Head of Data role the week of the talk.
03 / Why
frame_00m06s.png
Cost sensitivity: Hetzner is chronically cheaper, roughly a third of AWS pricing.
Strict data requirements: German-based provider, keeps data in the EU, less exposed to the US Cloud Act.
Great for learning self-hosting and owning your own stack, closer to raw Linux.
If you have no such requirements, MotherDuck makes DuckDB easier and more ergonomic (not affiliated).
04 / How
frame_04m27s.png
A deployment script (github.com/berndsen-io/ducklake-hetzner) spins up the stack in about 3 minutes, testing included.
You bring your own Hetzner account and API key; everything else is infrastructure and config as code.
DuckDB 1.5 is the query engine and runs locally (not hosted yet).
Two required backend components: PostgreSQL 16 as the DuckLake metadata catalog, and Hetzner Object Storage (S3) for data files.
The PostgreSQL catalog runs on a single VPS on Ubuntu 24.04.
More detail
Architecture: DuckDB 1.5 reads/writes metadata to PostgreSQL 16 (metadata catalog) on a Hetzner VPS, and reads/writes data to Hetzner Object Storage / S3 (data files).
05 / Caveats
frame_05m00s.png
Role-based access control is only partly possible; a separate ducklake-guard repo helps, but there is no true IAM-level control (Hetzner has no near-term plans to add it).
Hetzner S3 is 'S3 compatible' but missing features and lacking AWS/Scaleway-level uptime guarantees; reputation on Reddit is mixed, though workable in practice.
Price hikes in April and June raised the CX33 (4 vCPU, 8GB RAM) cost by 70%, from €4.99 to €8.49; still cheaper, but the gap is narrowing.
Production needs extra steps: Floyd provides a production checklist to support that.
More detail
CX33 (4 vCPU, 8GB RAM) pricing: €4.99 before April 1st, €6.49 on April 1st, €8.49 on June 15th (+70%).
06 / Resources
frame_05m00s.png
A ~10-minute blog article, 'DuckLake on Hetzner', covers the setup in depth (QR code on the slide).
More content, repos and articles are available at Berndsen.io.
Floyd invites feedback and change requests on the GitHub repos.
Key Takeaways
You can run a complete DuckLake data lakehouse on Hetzner for under €15 a month, roughly a third of comparable AWS cost.
DuckLake needs just two backend pieces: a PostgreSQL metadata catalog and S3-style object storage; DuckDB is the query engine.
An infrastructure-as-code deployment script provisions the whole stack in about 3 minutes given a Hetzner account and API key.
Hetzner is attractive for EU data residency and Cloud Act concerns since it is German-based.
Trade-offs: limited RBAC/IAM, incomplete S3 compatibility, and weaker uptime guarantees than AWS/Scaleway.
Recent April and June price hikes raised the reference VPS cost by 70%, so the price advantage is shrinking.
If you lack strict cost or data-residency requirements, MotherDuck offers a more ergonomic managed alternative.