
Railway Deployment, Regions & Data Residency 2026
Railway runs four Metal regions plus a global CDN, and a service's region can change with no downtime unless a volume is attached. Amsterdam covers EU residency.
Railway Deployment & Regions verdict
Railway runs four Metal compute regions, in California, Virginia, Amsterdam, Singapore.
Plus a global Cloudflare and Fastly CDN edge that routes public traffic to the nearest region. Unusually, a service's region can change at any time with no downtime, unless a volume is attached.
Pick the nearest of the four regions, knowing you can move it later for free unless a volume is attached. Use EU West in Amsterdam for EU residency. For global reach, assign replicas across regions and let Railway route to the nearest. Keep those replicas stateless, since there are no sticky sessions and traffic is distributed randomly within a region.
- There are only four compute regions, with a single EU option in Amsterdam and nothing in South America, the Middle East, Oceania or Africa.
- Changing a region is downtime-free unless the service has a volume attached. Multi-region uses per-replica placement, routing to the nearest region then randomly within it.
- Railway lists SOC 2 Type II, SOC 3, HIPAA, GDPR, but no ISO 27001.
- Compute regions
- 4
- EU region
- Amsterdam
- Region change
- No downtime*
- Multi-region
- Per-replica
- Routing
- Nearest region
This page covers where Railway deploys and how residency works. Performance and pricing live on their own pages.
Pick your Railway region and deployment
4 regions across 3 continents · nearest failover us-east4-eqdc4a · residency: europe-west4-drams3a
Place replicas in us-west2 via railway.json multiRegionConfig.
{
"deploy": {
"startCommand": "node index.js",
"multiRegionConfig": {
"us-west2": { "numReplicas": 2 }
}
}
}Railway routes public traffic to the nearest region, then randomly within it. A service's region can be changed any time with no downtime unless a volume is attached. The nearest region above is a placement hint.
Real Railway regions and deployment commands. Confirm residency guarantees against your contract.
Deploy Railway: railway.json, CLI and API
Commit railway.json to your repo. build.builder is RAILPACK (default) or DOCKERFILE; deploy.multiRegionConfig maps region identifiers to a replica count for native multi-region; restartPolicyType is ON_FAILURE, ALWAYS or NEVER; environment-specific overrides live under environments. Config in code always overrides the dashboard.
{
"$schema": "https://railway.com/railway.schema.json",
"build": {
"builder": "RAILPACK",
"buildCommand": "yarn run build"
},
"deploy": {
"startCommand": "node index.js",
"preDeployCommand": ["npm run db:migrate"],
"multiRegionConfig": {
"us-east4-eqdc4a": { "numReplicas": 2 },
"europe-west4-drams3a": { "numReplicas": 2 }
},
"healthcheckPath": "/health",
"healthcheckTimeout": 300,
"restartPolicyType": "ALWAYS",
"restartPolicyMaxRetries": 5
},
"environments": {
"staging": { "deploy": { "startCommand": "npm run staging" } }
}
}Install and authenticate the CLI, link the project, then deploy. railway up ships the current directory; --detach skips log streaming for CI. A RAILWAY_TOKEN project token lets CI deploy without an interactive login.
# Install and authenticate
npm i -g @railway/cli
railway login
# Link the local directory to a Railway project
railway link
# Deploy the current directory
railway up
railway up --detach # no log streaming (CI)
# CI: deploy with a project token
RAILWAY_TOKEN=xxx railway up
# Set a variable and view logs
railway variable set API_KEY=value
railway logs -n 100Railway's public API is GraphQL at backboard.railway.com/graphql/v2, the same API that powers the dashboard. Account and workspace tokens use a Bearer header; project tokens use the Project-Access-Token header. Rate limits scale by plan (Free 100 RPH to Pro 10,000 RPH).
# Query the current account (account token)
curl --request POST \
--url https://backboard.railway.com/graphql/v2 \
--header 'Authorization: Bearer $RAILWAY_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"query":"query { me { name email } }"}'
# Project-scoped query (project token uses a different header)
curl --request POST \
--url https://backboard.railway.com/graphql/v2 \
--header 'Project-Access-Token: $RAILWAY_PROJECT_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"query":"query { projectToken { projectId environmentId } }"}'Regions and network surfaces
| Surface | Location | Type | Identifier |
|---|---|---|---|
| US West Metal | California, USA | Compute region | us-west2 |
| US East Metal | Virginia, USA | Compute region | us-east4-eqdc4a |
| EU West Metal | Amsterdam, Netherlands | Compute region (EU) | europe-west4-drams3a |
| Southeast Asia Metal | Singapore | Compute region | asia-southeast1-eqsg3a |
| CDN edge | Global | Cloudflare + Fastly | managed |
| Private network | Per project | Service-to-service mesh | internal |
Railway region selection and routing
| Aspect | Behavior | Notes |
|---|---|---|
| Region choice | Per service, changeable | Set in service settings; default in Account Settings |
| Region change | Any time, no downtime | Exception: services with an attached volume incur downtime |
| Multi-region replicas | Per-replica assignment | Assign replicas to different regions in service settings |
| Traffic routing | Nearest region, then random | Public traffic routes to nearest region, distributes within it |
| Private networking | Per-project mesh | Service-to-service traffic not shown in public metrics |
| CDN delivery | Global edge | Cloudflare and Fastly serve cached content close to users |
Railway data residency and compliance
| Control | Option | Notes |
|---|---|---|
| EU data residency | EU West Metal (Amsterdam) | europe-west4-drams3a |
| Core infrastructure | Google Cloud | US and selected Railway region |
| Compliance audits | SOC 2 Type II, SOC 3 | HIPAA via paid BAA add-on |
| Transfer framework | EU-US DPF + Swiss-US DPF | Listed on the Trust Center |
| Data Processing Agreement | Self-serve GDPR DPA | Sign through the self-service link |
What to verify before you commit to Railway
- Railway has only four compute regions, with one EU option (Amsterdam) and none in South America, the Middle East, Oceania or Africa
- A service's region can be changed any time with no downtime, except when a volume is attached, in which case the move incurs downtime
- Railway publishes no SLA percentage; contractual SLAs are an Enterprise-only feature
- Railway lists SOC 2 Type II, SOC 3, HIPAA and GDPR but no ISO 27001 certification
Railway Deployment & Regions FAQ
Which regions does Railway support?
Four Metal compute regions: US West in California as us-west2, US East in Virginia as us-east4-eqdc4a, EU West in Amsterdam as europe-west4-drams3a, Southeast Asia in Singapore as asia-southeast1-eqsg3a. Static and cached content is served globally through Cloudflare and Fastly. Railway notes more regions may be added as it expands.
Can I change a Railway service's region after deploying?
Yes, at any time and with no downtime, with one exception. If the service has a volume attached, changing the region incurs downtime. The region is set per service, with a default in Account Settings, and there are no domain or private-networking changes when you move. That is more flexible than hosts that fix the region at creation.
How does multi-region work on Railway?
Railway supports native multi-region replicas. In service settings, or via multiRegionConfig in railway.json, you assign a replica count per region. Railway routes public traffic to the nearest region, then distributes requests randomly to replicas within it. There are no sticky sessions, so replicas should be stateless.
Does Railway support EU data residency?
Yes, via the EU West Metal region in Amsterdam, europe-west4-drams3a, where you can place services and replicas for EU residency. Railway is SOC 2 Type II, SOC 3, HIPAA compliant, with HIPAA through a paid BAA add-on, offers a self-serve GDPR DPA, and is EU-US and Swiss-US DPF certified. It does not list ISO 27001.
How do I deploy across regions on Railway?
Set deploy.multiRegionConfig in railway.json, mapping region identifier keys to numReplicas, then deploy with the CLI using railway up, or the public GraphQL API at backboard.railway.com/graphql/v2. Config in code overrides dashboard settings, and adding or moving replicas is a staged change that does not trigger a full redeploy.
Sources & verification
| Source | What was checked | Last checked |
|---|---|---|
| Railway Official | Official product page | July 10, 2026 |
| Railway Developer docs | Config As Code | July 10, 2026 |
| Railway Developer docs | CLI | July 10, 2026 |
| Railway Developer docs | API reference | July 10, 2026 |
| Railway Developer docs | Regions and residency | July 10, 2026 |
| Railway Developer docs | Deployments Serverless | July 10, 2026 |
| Railway Developer docs | Scaling and concurrency | July 10, 2026 |
Every fact on this Railway page is tied to a named source and a verification date. Freshness-sensitive figures trace to the sources above; verify against the vendor before relying on them.
Explore Railway
Every page on Railway in one place, you are on regions & deployment.
Snapshot, score and verdict
You are here
Latency, throughput, uptime and behaviour under scale
Every tier and the entry price
Compared and ranked vs peers
Price and feature change history
Browse the full Cloud Hosting category
