GoVueKit

Keeping a SaaS in the EU: what self-hosting answers, and what it does not

May 13, 2026

"Where is the data?" is the second question every European enterprise buyer asks, right after the price. If your answer requires a diagram with five vendors on it, the deal slows down. If it is one sentence, it does not.

This post separates what self-hosting actually settles from what you still have to do — because pretending a technical choice is compliance would be dishonest and would fail your first audit.

What self-hosting settles

Data residency. Choose a server in Frankfurt, Paris or Amsterdam and the database, the sessions, the uploaded files and the logs are there. No region-by-service map, no "the control plane is in us-east-1 but your data is not", no surprise when a vendor adds a processing region.

The sub-processor list. Every managed service in your stack is a processor you must name, contract with, and keep an eye on. A self-hosted binary has one entry: your hosting provider. If you also use a payment provider and an email relay — most products do — that is three, and each one is there for a reason you can explain in a sentence.

Transfer questions. No transfer outside the EU means no standard contractual clauses to attach, no transfer impact assessment to write, and nothing to redo when the legal ground shifts again.

Exit. You can move hosts in an afternoon: it is a binary, a database dump and a volume of files. Portability is a GDPR principle and, more practically, a negotiating position.

What self-hosting does not settle

Be clear-eyed here. Running your own server does not make you compliant.

The honest framing: self-hosting removes an entire category of third-party questions and leaves the internal ones, which you would have had anyway.

What a boilerplate can do for you

Some of the above is code, and code can ship. In GoVueKit:

What it cannot do is decide your retention periods or write your register.

The enterprise questionnaire, in practice

The document that arrives before a serious contract asks roughly this. A self-hosted deployment answers most of it structurally:

Question Self-hosted answer
Where is data stored? Our server, region X.
List sub-processors. Host, payment provider, email relay.
Is data encrypted in transit? Yes, TLS terminated at our proxy.
Who can access production data? Named administrators, over SSH keys.
How are passwords stored? argon2id, 64 MiB, 3 iterations.
Is there MFA? TOTP, on every sign-in path.
Are administrative actions logged? Yes, audit log with actor and target.
How is data deleted on request? Self-service erasure, plus backup expiry.
What is the backup policy? Nightly, off-server, restore tested.
Can we get our data out? JSON export; full database dump on request.

The rows you must fill in yourself are retention periods, incident response times, and who your DPO is (if you need one). Everything else is a consequence of the architecture.

When EU self-hosting is not the right call

Data residency is a sales advantage in some markets and irrelevant in others. Know which one you are in before you optimise for it.

The practical setup

If you decided EU residency matters:

  1. Host with a European provider (Hetzner, Scaleway, OVHcloud). Choose the region explicitly.
  2. Keep the processor list short and deliberate: payments and email are worth renting; identity and database are not.
  3. Turn on the product features that implement rights — export, erasure, session revocation — and test them like features, because they are.
  4. Write the register and the retention policy. Two documents, an afternoon, and they are what an auditor actually reads.
  5. Restore a backup. Availability is part of the security obligation, and an untested backup is not a backup.

See the security checklist on the product page or read what renting the stack commits you to.