// Migration Guide · 2026
Migrate from Railway to Runsite
Love Railway's DX but stuck in US-West? Keep the git push flow and bring your railway.toml. Runsite runs the same stack in Frankfurt, with a permanent free tier instead of trial credit that runs out.
- ~15 min
- typical migration
- Same DX
- keep your workflow
- Keep Railway running
- until you cut over
// the mental model
Every Railway concept has a Runsite home
Railway's config is small and so is the move. Your railway.toml build and deploy settings map straight onto Runsite, and the plugins you added in the dashboard become managed resources in the EU. Honest about what's automatic and what you handle once.
[build]
builder = "nixpacks"
buildCommand = "npm run build"
[deploy]
startCommand = "npm start"
healthcheckPath = "/health"
restartPolicyType = "on_failure" - →railway up / git deployrailwaygit push → auto-build autoRuntime auto-detected, just like Nixpacks
- →[build] & [deploy] commandsrailwayBuild & start commands autobuildCommand and startCommand carried over
- →healthcheckPathrailwayHealth check path autoSame endpoint, same behaviour
- →Postgres pluginrailwayManaged PostgreSQL you doProvision in Frankfurt, then pg_dump → restore
- →Redis pluginrailwayManaged Redis you doSpin one up; point REDIS_URL at it
- →Service variables & referencesrailwayEnvironment variables you doCopy from the Railway dashboard, paste once
// step by step
From Railway to live in the EU
Six steps. Most of them take seconds. Railway keeps serving traffic until you flip your DNS.
- 1
Create a Runsite project
~30 secSign in at runsite.app and create an empty project. No credit card, no trial-credit countdown.
- 2
Connect your Git repo
GitHub · GitLab · BitbucketAuthorize GitHub, GitLab or Bitbucket. Runsite auto-detects your runtime and builds, the same zero-config flow Railway gives you.
- 3
Recreate your plugins in Frankfurt
Postgres · RedisProvision a managed PostgreSQL and Redis with one click each. They run in the EU and come with connection strings ready to wire into your env.
- 4
Copy your variables
Railway dashboard → envOpen your Railway service variables and paste the values into Runsite. Secrets are encrypted at rest and never logged.
- 5
Move your database
pg_dump → pg_restoreRun pg_dump against your Railway Postgres connection string and restore into your Runsite PostgreSQL with pg_restore. DATABASE_URL is already wired.
- 6
Deploy & cut over DNS
Live in < 2 mingit push, verify on your Runsite URL, then point your custom domain when ready. Railway keeps serving until you flip DNS, so you can roll back any time.
// no surprises
What moves on its own — and what you touch
Honest about the boundaries. The supported stack is recreated in one click; a short list needs a human, and Runsite flags every item.
Imported automatically
- ✓ git push deploys — runtime auto-detected (Node, Python, Ruby, Go, PHP)
- ✓ Build & start commands from railway.toml
- ✓ Health check paths & always-on containers
- ✓ Custom domains & automatic TLS certificates
- ✓ Built-in S3-compatible object storage Railway lacks
You handle once
- → Service variables & references — paste once
- → Postgres & Redis plugin data — move with pg_dump / pg_restore
- → Cron & worker services — recreate as separate services
- → Persistent volumes — map to a disk or S3-compatible storage
// railway problems → runsite solutions
Common Railway frustrations — sound familiar?
Every Railway frustration, solved.
Railway problem
"Railway only has US servers"
All Railway deployments run in US-West-1. European users experience higher latency.
Runsite solution
EU-only Frankfurt region
Deploy to Frankfurt (eu-central) with EU data residency. Sub-20ms latency for European users.
Railway problem
"$5 free trial runs out fast"
Railway's trial credit depletes quickly. After that, you're on usage-based billing with no free option.
Runsite solution
Permanent free tier
No trial. No credit card. Build and deploy side projects forever at zero cost.
Railway problem
"No built-in object storage"
Railway offers persistent volumes but no S3-compatible object storage. You need external providers.
Runsite solution
S3-compatible storage included
Store files, assets, and backups with built-in S3-compatible object storage. No third-party setup needed.
// comparison
Runsite vs Railway
Side-by-side. No marketing fluff — just facts.
| Feature | Runsite | Railway |
|---|---|---|
| EU Data Centers | ✓ Frankfurt (eu-central) | ✗ US-West only |
| GDPR Compliance | ✓ EU entity, full compliance | ✗ US company |
| Free Tier | ✓ Permanent | ✓ $5 trial credit |
| Web Service Pricing | €5/mo | ~$5/mo (usage-based) |
| Managed PostgreSQL | ✓ From €5/mo | ✓ Usage-based |
| Deploy from Git | ✓ | ✓ |
| Spending Limits | ✓ Hard cap + alerts | ✓ Usage limits |
| Object Storage | ✓ S3-compatible | ✗ Via volumes only |
// migration questions
Migrating from Railway, answered
Do I have to rewrite my railway.toml?
No. Runsite keeps the git push workflow and auto-detects your runtime the same way Railway's Nixpacks builder does. Your build and start commands carry over unchanged. You only adjust a value if you want to change behaviour.
How do I move my Railway Postgres data?
Run pg_dump against your Railway Postgres connection string, then restore into a freshly provisioned Runsite PostgreSQL with pg_restore. The new connection string is auto-wired into DATABASE_URL, so your app picks it up on the next deploy.
Will my app go down during the migration?
No. Your Railway deployment keeps serving traffic while you build and verify on Runsite. You cut over by switching DNS only once you're happy, and you can point DNS back at Railway to roll back.
What's actually better about Runsite vs Railway?
Railway runs only in US-West-1. Runsite is EU-native: a Frankfurt region, an EU-registered entity for real GDPR compliance, a permanent free tier instead of $5 trial credit, and built-in S3-compatible object storage.
What about Railway's plugins and add-ons?
PostgreSQL and Redis are first-class managed resources on Runsite. For other plugins, bring an EU-friendly provider and add its credentials as environment variables.
Leave Railway behind
Bring your railway.toml. We'll handle the rest — in Frankfurt.
Start your migration →