What it actually costs to run a one-Rails-app SaaS in the EU per month
Last updated: 15 July 2026.
The AI agent that scaffolded your app put the database in us-east-1. It did that because the tutorial it learned from did, and most tutorials are American. For a founder in Austin that is a non-decision. For a founder in Vienna or Hamburg selling to European customers, it is the single most expensive default in the whole stack, and it never shows up on a bill.
This is the European version of a cost breakdown I wrote earlier. Same question, same underlying math, different lens. The EU founder is not mainly asking which host is cheapest. They are asking where their customer data physically lives, whether they are on the hook for Schrems II (the 2020 EU court ruling that limits sending Europeans' personal data to US-controlled services), and what happens the day a US-owned tool turns up in the request path.
Here is the math for a one-Rails-app SaaS built on an EU-only stack, from MVP through validated to growing. Real euro numbers, all the line items, and one column most cost articles never add: where the data actually sits.
Hosting: the EU options for Rails in 2026
Four hosts cover almost every reasonable case, all with data inside the EU. Ranked by what I would pick right now.
Hetzner + Kamal: the Rails-default, data-in-Germany pick. Kamal ships in the rails new boilerplate in Rails 8, 37signals run their own stuff on it, and your data sits in Nuremberg, Falkenstein, or Helsinki. Hetzner's CX23 (2 vCPU shared, 4 GB) is €5.49/month as of the June 2026 price adjustment. That is the whole bill if you accept the operational load. All-in: about €6-9/month plus the time you spend doing what a PaaS would do for you. One caveat from that same June 2026 adjustment: it nearly tripled Hetzner's dedicated CCX line, so a CCX13 is now €42.99. Stay on the shared CX and CAX plans unless you have a measured reason not to.
Scaleway: the sovereign-cloud pick. French-owned, not just French-located, which is the distinction that matters when your compliance story needs an EU company and not only an EU datacenter. Free egress, managed Postgres available, and the entry VPS lands around €4.99/month. Pick Scaleway when a customer or a public tender asks who owns the company holding the data, not just which country it is in.
OVHcloud: the incumbent EU host. The widest EU datacenter footprint of the group, VPS from about €7.60/month after the 2026 RAM price rise, and SecNumCloud-certified tiers if you are selling into the French public sector or regulated industries. More host than a solo founder needs on day one, and exactly right the day a buyer sends a security questionnaire.
Hatchbox + an EU VPS: Kamal with a UI. Hatchbox is $10/month per server and gives you a deploy UI and one-click managed services on top of your own Hetzner or Scaleway box. Be precise about what that means for residency: the data plane is in the EU, the control plane, Hatchbox itself, is a US company. For most apps that is fine, because Hatchbox orchestrates deploys rather than holding your customer data. Know the line so you can answer for it.
My order changes if your situation does. Hetzner plus Kamal for the canonical Rails workflow with data in Germany. Scaleway when you need EU ownership and not just EU location. OVH for the widest certified footprint. Hatchbox when you want to outsource ops and can account for a US control plane.
The line items most cost articles forget
Hosting is the headline. These are the lines where the surprise bills, and the surprise compliance questions, come from. Each one gets a price and a one-line answer to where the data lives.
Payments. Stripe is the default and it works, but for an EU SaaS it carries an asterisk: it processes through an Irish entity with a US parent behind it, which is the Schrems II question in miniature. Standard EU card rates are about 1.5% plus €0.25 per transaction. The EU-domiciled alternative is Mollie in the Netherlands, at roughly 1.8% plus €0.25 on cards but often cheaper on the local methods your customers actually use: iDEAL is a €0.29 flat fee, Bancontact €0.39. Adyen, also Dutch, is the enterprise option, worth it later and overkill now. For a solo founder, run one processor. Pick Mollie when you want the processor itself inside the EU, and especially if your customers pay with iDEAL (Netherlands) or Bancontact (Belgium), where its flat per-transaction fees beat Stripe's percentage.
Transactional email. Scaleway Transactional Email is the cleanest sovereignty story if you already host there: EU-owned, one provider, one bill. Mailjet (France) and Brevo (France, formerly Sendinblue) are the other EU-native picks. Free up to roughly 3,000/month; expect to cross it somewhere between customer 30 and 80 once password resets, receipts, and account notifications stack up. Budget €0-15/month.
Error tracking and monitoring. AppSignal (Netherlands) has a free tier, is EU-hosted, and is the one I reach for. I edit for them, so weigh that as you like, but the product earns the slot. For most Rails apps under 1,000 active users the free tier covers you. Budget €0-20/month.
Object storage. For user uploads and ActiveStorage attachments: a Hetzner Storage Box at about €3/month in Germany, Scaleway Object Storage (S3-compatible, France, free egress), or OVH Object Storage. All three are EU-owned and EU-hosted, so this line has no US-parent asterisk at all. That matters more than it looks: object storage is where your users' actual files live, so keeping it fully EU removes the hardest data to argue about. Budget €0-5/month for the first year.
Analytics. Plausible at €9/month is the easiest clean win in the entire stack. Estonian company, EU-hosted, GDPR-compliant by design, and light enough that you do not need a cookie banner for it. There is no reason to reach past it. Budget €0-9/month.
CDN, fonts, and front-end assets. This is the line where EU founders get bitten, and there is a German court case to prove it. In 2022 the Regional Court of Munich (LG München I, case 3 O 17493/20) ruled that a website loading Google Fonts the dynamic way, by pulling them from Google's servers at page load, transmitted the visitor's IP address to Google in the US without consent, and awarded the plaintiff damages. A dynamic IP is personal data. The ruling set off a wave of warning letters across German-speaking sites. The lesson is not that fonts are special. It is that a visitor's IP reaching any US-owned edge is the exposure, whatever the edge is serving. So self-host your fonts, JavaScript, and CSS. Rails 8 already does this by default, since Propshaft and import maps keep assets on your own domain; the way you reintroduce the problem is letting an AI agent drop a <link> to Google Fonts or a US CDN into your layout. If you want a CDN in front of the whole app, it is defensible as a contracted processor under a data processing agreement with EU regions enabled, which is a different legal footing than the unconsented third-party pull Munich punished. Bunny.net (Slovenia) is the EU-native option if you would rather not have the conversation at all.
Backups. Same as any Rails app, pointed at EU targets: a Hetzner Storage Box at about €3/month, or a pg_dump to Scaleway or OVH object storage for cents. Budget €0-10/month.
Domain, DNS, SSL. A domain is €10-15/year. DNS is free with your registrar. SSL is free via Let's Encrypt and auto-provisioned on every host here. About €1.25/month amortised.
NOTE
If you reached for Sidekiq, you need Redis, and the clean EU answer is to run it on the same VPS as your app, where it costs nothing and raises no third-party residency question. Solid Queue and Solid Cache, backed by Postgres, avoid the line item entirely and are the Rails 8 default for a reason.
Where your data actually lives
Every line above has a price. Each also has an answer to a question a dollar-only breakdown never asks: when a customer, an auditor, or a data protection authority asks where this data lives and who can be compelled to produce it, what do you say.
Start with the distinction that the whole thing turns on. There is where the bytes physically sit, which is residency, and who can legally be compelled to hand them over, which is jurisdiction. They are not the same axis, and conflating them is the most common mistake. A US company can hold your data in a Frankfurt datacenter and still be reachable under US law. Cloudflare's Data Localization Suite, for one, pins where processing happens and does nothing about who owns the company doing it.
Schrems II, briefly and honest for 2026. The 2020 ruling struck down the previous EU-US transfer framework because US surveillance law, FISA 702 and the CLOUD Act, can reach data held by US companies regardless of where the servers are. That is the jurisdiction axis biting. Now the update, so nobody reading this thinks it is still 2021: the EU-US Data Privacy Framework came into force in July 2023 and is the current legal bridge, and most large US vendors, Cloudflare and Stripe and Sentry among them, are certified under it. So the accurate framing is not "you are breaking the law by using a US processor." It is "there is a valid transfer mechanism today, and it has visible cracks." A French legal challenge is already before the courts and a Schrems III is widely expected. An EU-owned processor skips the entire question. That is the real appeal of the stack above: not that US tools are illegal, but that every EU-native choice is one less paragraph in your DPA and one less thing to re-check when the framework wobbles.
You need a data processing agreement with every processor that touches personal data. With EU-native vendors this is usually a two-click, standard-terms exercise. With US vendors it is the framework certification plus standard contractual clauses plus, strictly, a transfer impact assessment. None of it is impossible. It is just work that compounds with every US tool you add.
And this is where the AI-built app quietly works against you. An agent scaffolding your stack reaches for us-east-1, the US SaaS SDK it has seen ten thousand times, and a Stripe-only payment flow, because that is the average of its training data, not because it weighed your jurisdiction. It is not wrong, exactly. It is American by default. Which is fine right up until the first buyer sends a security questionnaire.
What this actually costs you, by stage
MVP, nobody pays yet. A small Hetzner or Scaleway box, Postgres on the same machine, a Storage Box for uploads, Plausible if you want numbers. Everything EU, nothing you cannot walk away from. Total: about €0-5/month plus the time you spend setting it up.
Validated, at least one paying customer. An always-on Hetzner CX box, a small managed Postgres from Scaleway or self-managed on the same VPS, AppSignal on the free tier, Plausible at €9. Skip the paid email tier until you cross the free 3,000 emails/month. Total: about €15-25/month, all of it inside the EU.
Growing, 10 to 100 customers. A bigger EU box or a managed Postgres cluster, Mollie or Stripe live, a paid email tier from Scaleway TEM, Brevo, or Mailjet, Plausible, and paid AppSignal if you cross the free events. Call it €60-90/month before payment fees. On €10,000 of monthly revenue, a processor takes roughly €290. So the all-in lands near €350/month on €10,000 in, the same ~3.5% ratio the dollar version arrives at. Worth saying plainly: choosing the EU-native stack does not cost more. Residency compliance here is a set of selections, not a premium tier.
The three stages at a glance
| Stage | Monthly cost | EU stack | Data lives in | When to switch |
|---|---|---|---|---|
| MVP (no paying customers) | €0-5 | Hetzner or Scaleway box + self-managed Postgres + Storage Box | DE / FR | First payment |
| Validated (1-10 customers) | €15-25 | Always-on EU box + small managed or self Postgres + AppSignal + Plausible | DE / FR / EE | Crossing 3k emails/month or customer 10 |
| Growing (10-100 customers) | €60-90 before fees | Bigger EU box or managed Postgres, Mollie/Stripe, Scaleway TEM/Brevo, paid AppSignal | EU-only | Customer 100 |
Payment fees not included; they scale linearly with revenue.
NOTE
The residency decision is close to free on day one and expensive to reverse later. Moving a live database with real customers across jurisdictions is a migration you schedule around, not an afternoon. Picking EU-native from the first commit costs €0 extra and saves you that project.
When you need a managed database
Self-hosted Postgres on a single VPS is fine until two things line up: you have paying customers, and a database crash would cost you real trust. Around customer 25 for most apps. When that happens, two EU-owned paths:
Scaleway Managed Database for PostgreSQL is the default if you already host on Scaleway. EU-owned, one provider, one bill.
OVHcloud Managed Databases for the widest certified footprint, with the option to point at a SecNumCloud tier when a buyer requires it.
For most founders building one Rails app, keep Postgres on the same EU box until customer 25, then move to Scaleway or OVH managed to stay fully EU-owned.
What this means for your first eighteen months
Run on a small EU box until the first paying customer. Keep Postgres on the same machine until customer 25. Add a paid email tier between customer 30 and 80. Self-host your fonts and assets from the first commit, which Rails already does for you unless something undoes it.
Then reframe what the residency choice actually is. It is not a compliance tax you pay for the privilege of selling in Europe. On this stack it is a set of defaults that happen to cost the same as the American ones and leave you with a shorter DPA, EU-held customer files, and a clean answer when someone asks where the data lives. The founder coding with AI will drift to us-east-1 and a US CDN because the model did. Setting it back to Frankfurt costs an afternoon now, or a migration later.
If you want a second pair of eyes on the stack your AI agent shipped, that is exactly what my audits cover: architecture, cost, and the residency defaults that quietly become someone's legal problem. Two ways to start, both free.