Backend hosting runs your API or server process on infrastructure that stays online, with HTTPS, a database, environment variables and logs around it. For a backend in Europe, pick a provider with a region close to your users and put the database in that same region. Render, Railway, Fly.io, Northflank, Scalingo, Clever Cloud and Koyeb all have European regions, a Hetzner server gives you a whole machine in Germany or Finland, and Out Plane runs apps in Germany with managed PostgreSQL in Frankfurt by default.
This guide is for teams with an API or backend in Node.js, Python, Go, Java, .NET or PHP that want it running in Europe next to its database. It compares nine options on European regions, database placement and price, then lists what to check before you choose. Every price and region comes from the provider's own pricing or documentation pages, checked on November 12, 2026.
What backend hosting means
A backend is the part of a product that users never see: an HTTP or gRPC API, a worker that drains a queue, a scheduled job, a WebSocket server. Backend hosting is where that code runs. Frontend hosting serves files from a CDN. A backend host has to keep a process running, route traffic to the port it listens on, hold secrets and connect the process to a database.
Every backend host gives you the same building blocks. What differs is how much of the work is left to you.
- A running process that listens on
0.0.0.0and a port, and restarts when it crashes. - A database your code reaches with a connection string, ideally in the same region.
- Configuration through environment variables, so secrets stay out of the code and the image.
- A public address with TLS, plus private addresses for services that should not be public.
- Logs and metrics that tell you why a request failed.
API hosting is the same job with a narrower scope. An API is a backend whose main work is answering HTTP requests from a frontend, a mobile app or other services.
Four ways to host a backend in Europe
Each model moves a different share of the work from you to the provider.
| Model | What you operate yourself | Examples in this guide | Good fit |
|---|---|---|---|
| VPS (virtual server) | Operating system updates, firewall, reverse proxy, TLS, database, backups | Hetzner Cloud in Germany and Finland | Teams that want a whole machine and have time to run it |
| PaaS (platform as a service) | Your code or container image | Render, Railway, Fly.io, Northflank, Scalingo, Clever Cloud, Out Plane | Most APIs and workers that must stay online |
| Serverless containers | Your image, while the platform adds and removes instances, often down to zero | Koyeb | Spiky traffic with long idle periods |
| Managed Kubernetes | Manifests, ingress, certificates, workload upgrades, usually the database | Sold by most large clouds | Teams that already run Kubernetes and have someone to own it |
A PaaS is the default choice for most backends: you hand over a repository or an image and get back a running service with a URL. A VPS costs less per month but makes you the operator of everything below your code. Managed Kubernetes takes the control plane off your hands, but the rest of the cluster is still yours. If your question is mainly how to package and run a container, our guide to Docker hosting covers Dockerfiles, buildpacks and cold starts. This guide focuses on where the backend runs and what sits next to it.
Backend hosting providers in Europe compared
The table lists each provider's European regions, the smallest backend you can keep running all month, and its managed PostgreSQL. Scalingo and Hetzner prices exclude VAT, as those providers list them.
| Provider | Type | Regions in Europe | Smallest always-on backend | Managed PostgreSQL | Billing |
|---|---|---|---|---|---|
| Out Plane | PaaS | Germany | 0.5 vCPU, 512 MB: about $3 of usage a month. Plans from $9 with $9 of usage included, 14 day free trial | PostgreSQL 14 to 18, $6 per database a month, Frankfurt by default | Plan fee with usage included, compute per minute |
| Render | PaaS | Frankfurt (1 of 5 regions) | 0.5 CPU, 512 MB: $7 a month | From $6 a month (256 MB) | Workspace fee ($0 Hobby, $25 Pro) plus compute |
| Railway | PaaS | Amsterdam (1 of 4 regions) | No fixed sizes. Hobby is $5 a month with $5 of usage included | Postgres template, a single node Railway maintains | Plan fee with usage included, per second |
| Fly.io | PaaS on its own servers | Amsterdam, Stockholm, Paris, Frankfurt, London (5 of 17) | shared-cpu-1x, 1 GB in Frankfurt: $7.73 a month | Managed Postgres from $38 a month, in Amsterdam, Frankfurt and London | Per second, no plan fee |
| Northflank | PaaS, also in your own cloud account | 4 regions, including Frankfurt, the Netherlands and Zurich | 0.5 vCPU, 1 GB: $12 a month | PostgreSQL billed as compute plus disk | Per second |
| Scalingo | PaaS | Paris, plus a SecNumCloud region on request | 256 MB: €7.20, 512 MB: €14.40 per 30 days | From €7.20 per 30 days (512 MB) | Per minute |
| Clever Cloud | PaaS | Paris, Roubaix, Warsaw, London, plus health data (HDS) zones in France | pico: €0.00625 an hour in Paris, about €4.50 for 30 days, with reduced CPU priority | PostgreSQL add-on, priced by size | Per second |
| Koyeb | Serverless containers | Frankfurt, Paris | 0.1 vCPU, 256 MB: $1.61 a month in Frankfurt. Paid plans start at Pro, $29 a month plus compute | Postgres from $29.76 a month always on; Frankfurt is its European region | Plan fee plus compute, per second |
| Hetzner Cloud | VPS | Falkenstein, Nuremberg, Helsinki | 1 vCPU, 1 GB, 20 GB disk: €6.49 a month in Germany, €5.49 in Finland | None, you run PostgreSQL yourself | Monthly, per server |
A few details the table cannot hold:
- Out Plane keeps at least one instance running, so there are no cold starts. You set the instance count for each app: up to 1 on Starter, 5 on Pro and 10 on Growth. More in the Out Plane section below.
- Render has free web services, but they spin down after 15 minutes without traffic and take about a minute to wake. Free Postgres expires after 30 days. Horizontal autoscaling comes with the $25 Pro workspace.
- Railway bills RAM at $10 per GB a month and CPU at $20 per vCPU a month, by the second. Its docs describe high availability for Postgres as a cluster you convert to, not the default.
- Fly.io has no free tier, only a $1 trial credit for 7 days. Prices vary by region: the same 1 GB Machine is $6.70 in Virginia and $7.73 in Frankfurt.
- Northflank has a free Sandbox with up to $20 a month of resources that stays on, and it can run in your own cloud account (BYOC).
- Scalingo runs both of its regions in Paris on 3DS Outscale. Its pricing page says containers never sleep, and new accounts start free for 30 days.
- Clever Cloud lists hourly prices per zone and gives free credits at signup with no card.
- Koyeb offers autoscaling and scale to zero. Its docs also describe one free instance per organization, in Frankfurt or Washington, that scales to zero after an hour without traffic. Its site announces that Koyeb is joining Mistral AI.
- Hetzner includes 20 TB of traffic with every EU server, and the price is for the machine only. Patching, TLS, backups and the database are your work.
A worked example: one API and one database
To compare like for like, here is the monthly cost of the smallest sensible setup that stays online all month: one small API and one managed PostgreSQL database, both in Europe.
| Provider (region) | API | Database | Monthly total |
|---|---|---|---|
| Out Plane (Germany, database in Frankfurt) | 0.5 vCPU, 512 MB: $3.00 of usage | $6.00 of usage | $9, the Starter plan fee, because the $9 of included usage covers both. 14 day free trial |
| Render (Frankfurt) | 0.5 CPU, 512 MB: $7 | 256 MB: $6 | $13 on the $0 Hobby workspace, plus $0.15 per GB after 5 GB of bandwidth |
| Scalingo (Paris) | 512 MB: €14.40 | 512 MB: €7.20 | €21.60 per 30 days, excluding VAT |
| Fly.io (Frankfurt) | 1 GB: $7.73 | Basic: from $38 | From $45.73, plus $0.28 per GB of database storage and $0.02 per GB of egress |
| Hetzner (Germany) | 1 vCPU, 1 GB server runs both | You run it | €6.49 excluding VAT, plus your time for patching, backups and TLS |
The sizes are close, not identical, so treat the totals as an order of magnitude. Railway, Northflank, Clever Cloud and Koyeb are left out because their totals depend on measured usage, on included credit, or on database sizes their pages do not list as fixed plans.
Where to host a backend: five things to check
1. Region and data location
A region name tells you where the app runs, not where every copy of your data lives. List each piece and check it separately: the app, the database, its backups, logs, object storage and build systems. On some platforms one of these sits in a different region from the rest.
Then pick the region by where your users are. A region in Frankfurt, Amsterdam or Paris serves most of Europe well. If many users are in Asia or the Americas, a single European region adds distance to every request, and a provider with regions on several continents may fit better. For the legal side of hosting personal data in the EU, see our guide to GDPR compliant hosting in Europe.
2. The database in the same region as the app
This is the check that most often goes wrong. Every query is a network round trip. A request handler that runs ten queries one after another pays that round trip ten times before it can answer, so distance between the app and the database is multiplied into every response.
Providers handle this differently:
- Render says that to use a database's internal URL, "your connecting service and your database must belong to the same account and region."
- Fly.io runs apps in 17 regions but Managed Postgres in 13. In Europe that means Amsterdam, Frankfurt and London, so an app in Paris or Stockholm reaches its database in another city.
- Koyeb runs compute in Frankfurt and Paris, but its Postgres in Europe is in Frankfurt.
- Out Plane runs apps in Germany and creates PostgreSQL in Frankfurt by default. The database region is fixed when you create it, so choose it before anything else.
Connection pooling matters as much as distance once you run several instances. The PostgreSQL production guide covers pooling, timeouts and backups.
3. Private networking between services
A backend rarely stays one process. An API talks to a worker, a cache or an internal service that should never have a public address. Look for private addresses inside a region, and check what happens across regions. Render's docs, for example, say each region has its own private network and services in different regions cannot reach each other over it.
On Out Plane, every port gets an internal address of {app}:{port} that other apps in your team can reach. Leave a port private and it has no public address at all. Public ports can be restricted to listed source IPs with IP access profiles, which suits admin APIs and webhooks from known senders.
4. Logs and metrics
When a request fails at night, logs decide how fast you find out why. Check three things: whether you get HTTP request logs as well as what your process prints, how long logs are kept, and whether metrics cover requests and error rates, not only CPU.
Retention varies widely. Railway keeps logs for 3 days on Free, 7 days on Hobby and 30 days on Pro. Out Plane keeps runtime, build and HTTP logs, with metrics for CPU, memory, network, disk I/O, requests and error rate over windows of up to 24 hours. You can export logs as text or JSON, so forward what you need to keep longer to your own store.
5. Pricing model
Backend hosts bill in three ways:
- Fixed sizes. You pick a container or server size and pay its price: Render, Scalingo, Clever Cloud, Hetzner.
- Usage with no plan fee. You pay for what runs, by the second: Fly.io, Northflank.
- A plan fee that includes usage. Usage up to the included amount is covered, and anything above it lands on the same invoice: Railway, Out Plane, and Koyeb's Pro plan with $10 of compute.
Two more lines decide the real bill. Bandwidth: Render includes 5 GB on Hobby and then charges $0.15 per GB, Railway charges $0.05 per GB, Northflank $0.06 per GB, Fly.io $0.02 per GB in Europe, Hetzner includes 20 TB, and Out Plane does not bill bandwidth. And sleep: an API on a free tier that spins down answers its first request after a pause, which is fine for a demo and not for a backend a mobile app depends on.
Hosting a backend on Out Plane
Out Plane runs your backend as a container, built from a GitHub repository or run from an image you already have, with managed PostgreSQL next to it.
Where your backend and data live
- Apps run in Germany.
- Managed PostgreSQL runs versions 14 to 18 with automated backups, point-in-time recovery, read replicas and connection pooling. You choose its region from 8, and Frankfurt is the default. Keep the default and the app and its database are both in Germany.
- Redis, MySQL and MongoDB run as one-click templates alongside your apps.
So the honest summary is: apps in Germany, the database where you put it, Frankfurt unless you change it.
Deploy from GitHub or a Docker image
Deploy from GitHub builds your repository with its Dockerfile or with buildpacks, and every push to the connected branch deploys. Deploy a Docker image runs an image such as ghcr.io/acme/api:1.4.0 as it is, with stored credentials for private registries. Image apps do not redeploy on their own, so you deploy a new tag from the console or from CI. To go back, redeploy an earlier image tag or push a revert.
Each runtime has a guide with its build command, start command and database setup:
- Node.js, including Express
- Python with FastAPI or Django
- Go
- Java with Spring Boot
- .NET
- PHP with Laravel
- Ruby with Rails
Three rules apply in every language. Listen on 0.0.0.0 and the port you expose, never localhost. Connect to the database over SSL, which every connection requires. Run migrations from the start command or once from the browser terminal.
From a terminal, the outplane CLI creates the database and the API in a few commands:
curl -fsSL https://outplane.com/install.sh | sh
outplane login
# A PostgreSQL 17 database in Frankfurt. The region cannot change later.
outplane db create ordersdb --region aws-eu-central-1
outplane db get ordersdb # wait until status is active
# The API, built from your repository, with the connection string set
outplane app create ordersapi --repo acme/orders-api --branch main \
--port 8080:http:public \
--env DATABASE_URL="$(outplane db url ordersdb)"
outplane logs ordersapi --followPorts are private unless you add :public. A worker or an internal service can run with a private port, or with no port at all, and still reach the API at ordersapi:8080.
What it costs
Starter is $9 a month with $9 of usage included (3 apps, 1 managed database, 1 instance per app). Pro is $29 a month with $15 included (up to 5 instances per app). Growth is $299 a month with $150 included (up to 10 instances per app), and Enterprise is custom. Starter and Pro both start with a 14 day free trial. There is no free plan. Compute is billed per minute, and the smallest instance comes to about $3 for a full month. Bandwidth, TLS certificates and custom domains are not billed. The pricing page lists every instance size.
Which backend host fits
- Choose Out Plane if you want your API and managed PostgreSQL in Germany on one plan with usage included, no cold starts and no bandwidth charges.
- Choose Render if you want Frankfurt plus autoscaling on CPU or memory.
- Choose Fly.io if you need several European cities, or users on other continents as well.
- Choose Scalingo or Clever Cloud if you want both app and database in France. Scalingo also has a SecNumCloud region on request.
- Choose Northflank if you may move into your own cloud account later, or want Zurich.
- Choose Koyeb if traffic is spiky and scaling to zero matters more than a warm first request.
- Choose Railway if per-minute usage billing and Amsterdam fit, and a single-node Postgres that Railway maintains is enough. Our Railway alternatives comparison goes deeper.
- Choose a Hetzner server if the lowest monthly price matters most and someone on the team will run the operating system and the database.
Frequently asked questions
Where should I host my backend if my users are in Europe?
In a European region with your database in the same region. Frankfurt, Amsterdam and Paris are the common choices, and each provider above has at least one of them. What matters more than the city is that the API and the database sit together.
What is the difference between backend hosting and frontend hosting?
Frontend hosting serves static files and sometimes short functions from a CDN. Backend hosting keeps a long-running process online, holds its secrets and connects it to a database. Most products need both, and many teams host the frontend on one platform and the API on another.
Can I host a backend API for free in Europe?
For testing, yes. Koyeb's free instance can run in Frankfurt and scales to zero after an hour without traffic. Northflank's Sandbox stays on. Clever Cloud gives free credits at signup, and Scalingo starts free for 30 days. Render's free web services sleep after 15 minutes idle. Out Plane has no free plan, but Starter and Pro start with a 14 day free trial.
Does hosting in Frankfurt make my backend GDPR compliant?
Not on its own. The region covers where the app runs. You still need to know where the database, backups, logs and file storage live, and you need a data processing agreement with each provider. The GDPR hosting guide walks through the rest.
Can I run Redis or a worker next to my API on Out Plane?
Yes. Redis runs as a one-click template you operate, and a worker runs as its own app. Both reach your API over its internal address, so neither needs a public port.
To try it with your own backend, open the console and start the 14 day free trial on Starter or Pro.
Sources
Prices and regions were checked on November 12, 2026, on these official pages:
- Render: pricing, regions, free instances, Postgres connections
- Railway: pricing, regions, PostgreSQL
- Fly.io: pricing, regions
- Northflank: pricing, regions
- Scalingo: pricing, regions
- Clever Cloud: pricing, price list for Paris, zones
- Koyeb: pricing, instances, regions
- Hetzner: cloud servers
- Out Plane: pricing, databases, networking, logs



