Skip to content
CloudInsights

EU hosting: what it actually means for compliance

Residency is one question. Access is the one most teams forget.

An EU region is not the same as GDPR compliance. What counts is where the data lives, who can read it, and which subprocessors you have actually accepted.

10 min read
Stylised edge network over Europe with data paths between regions, an EU outline, and access controls at every hop.

Cloud & compliance

If you are searching for EU hosting, GDPR or Danish hosting, you are usually in one of two moments: you are picking a stack for a new product, or a customer, auditor or board has asked where personal data actually lives. Both conversations go wrong when the answer becomes "we run in Frankfurt" — as if a region toggle closes the topic.

We meet teams that chose Danish hosting to be "on the safe side", and teams on Vercel, Cloudflare or AWS that are unsure whether that is even legal. Both groups ask the wrong first question. The right one is not "which country is the server in". The right one is: which data, who can read it, and which subprocessors you actually depend on.

TL;DR

The main takeaways

  • An EU region is residency — not compliance. GDPR is about purpose, legal basis, access and subprocessors, not just the rack's postcode.
  • Danish hosting does not fix an unclear data map. If you do not know what you store and who can see it, location is a plaster.
  • Support, backups, logs and preview environments are often the paths that cross borders — not the primary database.
  • US-owned platforms can be defensible if you know the transfer basis and can point to region, DPA and a subprocessor list.
  • Demand a data map and a subprocessor list before you demand "EU only". Otherwise you are buying a feeling.
  • Compliance is a design choice: what you log, what you mirror, and who has admin access.

Why this matters in the first place

Customers and partners ask more often where data lives than they did a few years ago. That is legitimate. Personal data in a SaaS, a customer portal or a marketing site is not "just content". It is orders, emails, identifiers, support threads and logs that can reconstruct a person.

The problem is that the conversation often collapses into a binary: Danish hosting or "US cloud". That is a bad map. A Danish vendor can still send backups to a US tool, let support log in from a third country, or use a CDN that caches pages with personal data. A US-owned platform can run compute and storage in the EU, have a DPA and a documented transfer mechanism — and still be the wrong choice if you mirror production into an analytics tool without a basis.

If you take the decision as a flag on a map, you build a system you cannot explain the day someone asks for documentation. If you take it as a data map — what you store, where it lives, who can open it — you can both pick a stack and sleep at night.

This is not legal advice. It is the engineering conversation you need before a lawyer can say anything useful. Without an honest map, the DPA is a document you sign without understanding.

What "EU hosting" actually covers — and what it does not

Residency is the simple part: the bytes you call primary sit on disk in an EU region. Frankfurt, Amsterdam, Stockholm, Ireland. That is a real and often necessary choice. It is not the same as the processing being lawful, you having a legal basis, or nobody outside the EU being able to see the data.

GDPR asks first: what is the purpose, what is the basis, how long do you keep it, and can the person get access and erasure. A server in Herning does not help if you store more than you need, or if you cannot delete a user because backups are eternal and unlabelled.

Then come subprocessors. Your host is one processor. Analytics, email, error tracking, auth, payments, AI APIs and support tools are others. Each of them has their own sub-processors. "We host in the EU" is an incomplete answer if your error tracker sends stack traces with emails to a US SaaS without a DPA.

Finally there is access. A database in Frankfurt that a support engineer in a third country can open through an admin panel is still a transfer. So is a CI system that pulls production dumps, or a staging environment that is a copy of production. Those are the paths we see teams forget while they argue about the region dropdown.

The three questions that actually decide the case

First question: which personal data does the product process, and why? A marketing site with a contact form is a different problem from a customer portal with orders, documents and organisation members. If you cannot list the categories on one page, you are not ready to pick a host. You are ready to clean up scope.

Second question: where does the primary copy live, and where do the secondary ones live? Primary database, object storage, search index, logs, backups, CDN cache, preview databases. This is where "we run in the EU" often crumbles. The CDN caches HTML with names. The log platform lives in the US. The backup bucket was created in the wrong region because the default was us-east-1.

Third question: who can read data without going through your application? Platform support, your own ops team, an agency, an AI tool that receives dumps, a subprocessor with break-glass. If the answer is "we do not know", you have an access problem — not a hosting problem.

Once those three are answered, the stack choice becomes concrete. Then you can say: primary data in the EU, logs in the EU, no production dumps in CI, a DPA with named subprocessors, and support access only through your own IdP. That is a design. "Find a Danish host" is a hope.

Residency vs. what teams usually forget

What you typically lock down

What the region dropdown actually controls.

  • Primary database and object storage in an EU region
  • A sentence in the proposal: "data is hosted in the EU"
  • A DPA with the primary cloud vendor
  • A feeling that you "chose correctly"

What more often decides the risk

The paths that still cross borders or lack a basis.

  • Logs, error tracking and analytics with personal data
  • Backups, snapshots and staging clones
  • Support and admin access from third countries
  • Subprocessors you never listed — email, auth, AI, CDN

How to draw a data map before you pick a host

An afternoon, not a transformation programme. Without this map, any hosting decision is a guess.

  1. 01

    List processings, not servers

    Write the flows that touch people: signup, order, support, newsletter, audit log. For each: which fields, which purpose, how long. What you cannot point to, you probably should not store.

  2. 02

    Find the primary copy and every mirror

    Database, files, search, cache, backups, logs. Mark a region for each. Default regions and "same as production" are the two places teams get this wrong.

  3. 03

    List subprocessors by name

    Host, email, auth, payments, analytics, error tracking, CMS, AI. For each: DPA, region, whether they see personal data. Empty cells are risk — not "we will figure it out later".

  4. 04

    Draw access outside the app

    Who has console access, database credentials, backup download, support impersonation? From which country, with which log? If you cannot answer, that is your next job — before you change host.

  5. 05

    Only then: pick region and vendor

    Now you can require EU residency where it matters, and accept a transfer basis where you deliberately use a global service. That is a choice. Before the map it was a mood.

An EU region is a rack. Compliance is being able to point to every copy and every person who can open it.

What the common stacks typically look like

A classic "Danish host" — managed VPS or a Danish datacentre — gives you a short contract and often support in Danish. That is right when the workload is simple and you control what leaves the box. It is wrong when you think the datacentre replaces DPAs on all the SaaS tools the app already uses. Hosting is one line. The product is ten.

AWS, GCP and Azure can run primary data in eu-central, eu-north or equivalent. You get region control, encryption, and a DPA you can point to. You also get a catalogue of services that default to global endpoints, and a support organisation that is global. That is defensible when you lock region, turn off accidental global features, and know how you handle a support escalation. It is indefensible when you click next in the wizard and assume an EU account means EU everything.

Vercel and Cloudflare are more often what a Next.js product actually runs on. Compute and edge are global or regional by product; storage and databases (Postgres, R2, KV, blob) can be placed in the EU. The right question is not "is Vercel legal in Denmark". The right question is: where does your database live, where do uploads live, what does the platform log, and which subprocessors sit in their DPA. A marketing site without accounts is a different risk picture from a SaaS with users.

Hybrid is what we most often recommend when the product is real: frontend and cache close to users, primary database and files in an EU region you can point to, and third-party tools chosen on purpose — not because they came in the starter template. The comparison between Vercel and Cloudflare is about operations and model, not a magic compliance stamp. Neither removes your duty to know your own subprocessors.

What you should typically do in the situation you are in

Left is what you typically say. Right is the next step we typically recommend.

  • Situation

    You cannot list personal data and subprocessors on one page

    Next step

    Draw the data map — do not change host until you know what you are moving

  • Situation

    Primary data is in the EU, but logs and backups are not

    Next step

    Move or minimise the secondary copies; that is often the real risk

  • Situation

    A customer demands "Danish hosting only" without defining the data

    Next step

    Ask what they mean: residency, support, governing law, or no US owner

  • Situation

    You run Vercel/Cloudflare/AWS and are unsure about transfers

    Next step

    Read their DPA and subprocessor list; lock region; document the choice

  • Situation

    Staging is a copy of production

    Next step

    Anonymise or stop the clone — it is a transfer and a leak, regardless of host

Checklist before you promise "EU hosting"

If you are missing several of these, the promise is early — whether the vendor is Danish or global.

  • You can list categories of personal data and why you store them
  • Primary database, files, search and backups have a named EU region
  • Logs, analytics and error tracking are either in the EU or deliberately accepted with a DPA
  • The subprocessor list has names — not "the usual tools"
  • Support and admin access is tied to your IdP and can be revoked
  • Staging and CI do not use unfiltered production dumps

Questions we get again and again

  • Is it illegal to use Vercel, Cloudflare or AWS in Denmark?

    Not automatically. Many Danish products run on those platforms with primary data in an EU region and a signed DPA. What becomes indefensible is not knowing where the copies live, or sending personal data to tools without a basis. Lawfulness is documentation and design — not a ban on a brand.

  • Is picking Frankfurt or Stockholm as the region enough?

    It is enough for residency of the service you set the region on. It is not enough for logs, a global CDN with personal data in HTML, a US analytics tool, or a support session from a third country. Set the region, then walk the other five paths. Otherwise you solved the visible part and ignored what an audit finds.

  • When is a Danish host the right call?

    When the workload is simple, you want a contract under Danish law and support you can call, and you control the other subprocessors yourself. It is wrong when you pick a Danish host to avoid drawing a data map, or when the product still depends on a pile of global SaaS tools. Hosting does not replace architecture.

  • What about Schrems II and US cloud — should we just avoid it?

    You should understand the transfer basis, not flee on a feeling. The platforms typically document SCCs and their subprocessors; your job is to read that and decide whether the residual risk is acceptable for your data. Switching to a Danish VPS and keeping the same US analytics tool does not move the risk. It hides it.

  • What should we demand from an agency or cloud partner?

    A data map, a subprocessor list, named regions, and an explanation of support access. If they can only say "we host in the EU", they sold you a sentence. If they can point to every copy and every access, you can have an adult conversation — even if the answer is a US-owned platform with EU residency.

If you need to explain where the data lives

Let us draw the data map before you change host.

A short review of your primary copy, mirrors and subprocessors is often enough to separate a real EU requirement from a region toggle you click to get peace.

Why we wrote this

This is how we think — and it's what we build.

Our insights are about the work we actually do. If this hit something you're working on, there's a concrete service that lines up.