// Migration Guide · 2026
Migrate from Platform.sh to Runsite
Platform.sh is powerful but configuration-heavy — three YAML files and a steep learning curve. Runsite reads your .platform.app.yaml and recreates the stack in Frankfurt with far less configuration and the same EU compliance.
- ~20 min
- typical migration
- Less YAML, same EU
- keep your workflow
- Keep Platform.sh running
- until you cut over
// the mental model
Every Platform.sh concept has a Runsite home
Platform.sh spreads config across .platform.app.yaml, services.yaml and routes.yaml. Runsite reads your app definition and maps each piece onto a simpler resource model.
name: app
type: 'nodejs:20'
relationships:
database: 'db:postgresql'
cache: 'redis:redis'
web:
commands:
start: 'npm start'
hooks:
build: 'npm ci && npm run build' - →type + build hookplatform.shWeb service + build command autoRuntime and build hook become service settings
- →web.commands.startplatform.shStart command autoCarried over unchanged
- →postgresql relationshipplatform.shManaged PostgreSQL you doProvision in Frankfurt; relationship becomes DATABASE_URL
- →redis relationshipplatform.shManaged Redis you doProvision Redis; relationship becomes REDIS_URL
- →Variablesplatform.shEnvironment variables autoNon-secret vars imported; secrets pasted once
- →routes.yamlplatform.shRouting rules you doRecreate routes and redirects in the dashboard
// step by step
From Platform.sh to live in the EU
Six steps. Most of them take seconds. Platform.sh 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 sales call.
- 2
Connect your Git repo
GitHub · GitLab · BitbucketAuthorize GitHub, GitLab or Bitbucket. Runsite scans the selected branch for your .platform.app.yaml and detects the stack automatically.
- 3
Review the detected setup
Full preview before provisioningRunsite lists every service, database and env var it found and how each maps onto a Runsite resource. Tweak build or start commands inline. Nothing is created yet.
- 4
Provision in Frankfurt
One click · eu-centralCreate the whole stack in one step. Cross-resource env vars are wired up for you, and you get fresh database and Redis credentials in the EU.
- 5
Drop in your secrets
Secrets stay out of GitSecret values are never read from your repo. Paste API keys and tokens once in the dashboard; they're encrypted at rest and never logged.
- 6
Push to go live
Live in < 2 mingit push and your app builds and deploys in the EU in under two minutes. Point your custom domain when ready. Platform.sh keeps running until you cut over.
// 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
- ✓ Runtime, build hook and start command
- ✓ Web service configuration
- ✓ Non-secret variables
- ✓ Auto-deploy on git push
You handle once
- → PostgreSQL relationship — import into managed PostgreSQL
- → Redis relationship — recreate as managed Redis
- → routes.yaml — recreate routing rules
- → Worker / cron processes — recreate in the dashboard
// platform.sh problems → runsite solutions
Common Platform.sh frustrations — sound familiar?
Every Platform.sh frustration, solved.
Platform.sh problem
"€30+/mo for a simple app"
Platform.sh/Upsun charges a project fee plus per-hour compute, disk, and backup costs. Even small apps are expensive.
Runsite solution
€5/mo, all included
Web service with compute, SSL, and monitoring for €5/mo. Add PostgreSQL for €5/mo. No hidden fees.
Platform.sh problem
"15-day trial is not enough"
Platform.sh gives you 15 days to evaluate. After that, you're on usage-based billing with no free option.
Runsite solution
Free tier forever
Prototype and test as long as you need. No countdown, no credit card, no pressure to convert.
Platform.sh problem
"Platform YAML config is verbose"
Platform.sh requires .platform.app.yaml, services.yaml, and routes.yaml with platform-specific syntax.
Runsite solution
Push code, we figure it out
Runsite auto-detects your stack. Or bring a Dockerfile — standard tools, no proprietary config.
// comparison
Runsite vs Platform.sh
Side-by-side. No marketing fluff — just facts.
| Feature | Runsite | Platform.sh |
|---|---|---|
| Minimum Cost | €5/mo | ~€30-60+/mo (project fee + compute) |
| Free Tier | ✓ Permanent, no credit card | ✗ 15-day trial only |
| Pricing Model | ✓ Fixed plans | Per-hour compute + disk + backup fees |
| EU Entity | ✓ EU-registered | ✓ French company (SAS) |
| GDPR Compliance | ✓ Full compliance | ✓ Full compliance |
| Multi-Environment | Coming soon | ✓ Git branch = environment |
| Configuration | ✓ Zero-config or Dockerfile | Platform-specific YAML |
| Spending Limits | ✓ Hard cap + Telegram alerts | ✗ Usage-based billing |
// migration questions
Migrating from Platform.sh, answered
Do I have to keep three YAML files like Platform.sh?
No. Platform.sh requires .platform.app.yaml, services.yaml and routes.yaml. Runsite reads your app definition and configures services through a simpler model, so you maintain far less YAML.
How do relationships map to Runsite?
Platform.sh relationships become standard environment variables. A postgresql relationship becomes DATABASE_URL and a redis relationship becomes REDIS_URL, auto-wired to the managed resources Runsite provisions.
What about my database data?
Runsite provisions managed PostgreSQL of the same major version in Frankfurt. Export from Platform.sh with pg_dump and restore with pg_restore; the connection string is wired in automatically.
Is there downtime?
No. Your Platform.sh environment keeps running while you build and verify on Runsite, then you cut over with DNS and can roll back at any time.
Why migrate from Platform.sh to Runsite?
You keep EU data residency and GDPR compliance but with much less configuration overhead, predictable EUR pricing with hard spending caps, and a permanent free tier.
Leave Platform.sh behind
Bring your .platform.app.yaml. We'll handle the rest — in Frankfurt.
Start your migration →