// Migration Guide · 2026
Migrate from Netlify to Runsite
Netlify is built for Jamstack — static sites plus functions. Runsite reads your netlify.toml and hosts the full stack, including always-on APIs and managed databases, in Frankfurt, with hard spending limits instead of metered surprises.
- ~15 min
- typical migration
- More than Jamstack
- keep your workflow
- Keep Netlify running
- until you cut over
// the mental model
Every Netlify concept has a Runsite home
Netlify splits your app across static hosting, functions and add-ons. Runsite consolidates all of it into one project, reading your existing netlify.toml.
[build]
command = "npm run build"
publish = "dist"
functions = "netlify/functions"
[[redirects]]
from = "/api/*"
to = "/.netlify/functions/:splat"
status = 200 - →Static build + publish dirnetlifyStatic / SSR web service autopublish dir served directly; SSR frameworks supported
- →Netlify FunctionsnetlifyAlways-on web service autoRun your API as a persistent service, no invocation metering
- →Redirects & rewritesnetlifyRouting rules you doRecreate /api/* proxies as service routes
- →Environment variablesnetlifyEnvironment variables autoNon-secret build vars imported; secrets pasted once
- →External database add-onnetlifyManaged PostgreSQL you doProvision in Frankfurt; import with psql
// step by step
From Netlify to live in the EU
Six steps. Most of them take seconds. Netlify 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 netlify.toml 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. Netlify 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
- ✓ Static and SSR build output
- ✓ Build command and publish directory
- ✓ Non-secret environment variables
- ✓ Custom domains (after DNS cutover)
You handle once
- → Functions with stateful needs — recreate as services
- → Redirect/rewrite rules — map to service routes
- → External databases — import into managed PostgreSQL
- → Secret environment variables — paste once after import
// netlify problems → runsite solutions
Common Netlify frustrations — sound familiar?
Every Netlify frustration, solved.
Netlify problem
"Netlify can't host my backend"
Netlify Functions are limited to 10-second execution. Long-running APIs need a separate hosting provider.
Runsite solution
Persistent containers for any backend
Run long-lived processes, WebSocket servers, background workers — anything Docker can run.
Netlify problem
"No managed databases"
Netlify doesn't offer databases. You need PlanetScale, Supabase, or AWS RDS on top.
Runsite solution
PostgreSQL + Redis included
Managed databases on the same platform. One bill, one dashboard, one support channel.
Netlify problem
"Compute runs in the US"
Netlify Functions run in US regions by default. EU users get higher latency.
Runsite solution
EU-only compute and storage
Everything runs in our Frankfurt (eu-central) region. Sub-20ms for users in DACH and Benelux, single-digit ms within Germany.
// comparison
Runsite vs Netlify
Side-by-side. No marketing fluff — just facts.
| Feature | Runsite | Netlify |
|---|---|---|
| Backend Hosting | ✓ Full containers, any stack | Serverless functions only |
| EU Data Centers | ✓ Frankfurt (eu-central) | ✗ CDN edge only |
| GDPR Compliance | ✓ EU entity, full compliance | ✗ US company |
| Docker Support | ✓ Any Dockerfile | ✗ Not supported |
| Managed Database | ✓ PostgreSQL from €5/mo | ✗ Not available |
| Static Hosting | Via S3 + CDN | ✓ Best-in-class |
| Free Tier | ✓ Permanent | ✓ Generous for static |
// migration questions
Migrating from Netlify, answered
Can Runsite run my Netlify Functions?
Your function code runs as an always-on web service rather than per-invocation serverless. This removes execution metering and timeout limits; most handlers port over with minor routing changes.
What about my netlify.toml redirects?
Static redirects map to routing rules, and /api/* proxy rewrites become routes to your web service. Runsite flags each rule during the preview so you can recreate it explicitly.
Does Runsite include a database?
Yes. Runsite offers managed PostgreSQL and Redis in Frankfurt, so you no longer need a separate database add-on. Import your data with standard SQL tooling after provisioning.
Will my Netlify bill surprises stop?
Runsite bills in EUR with hard spending caps, so a traffic spike or heavy function usage cannot produce a surprise invoice the way Netlify's metered bandwidth and function execution can.
Why migrate from Netlify to Runsite?
Runsite hosts your full stack — not just Jamstack — in the EU, with a Frankfurt region, an EU entity for GDPR, predictable EUR pricing, hard spending caps and a permanent free tier.
Leave Netlify behind
Bring your netlify.toml. We'll handle the rest — in Frankfurt.
Start your migration →