// Migration Guide · 2026
Migrate from Cloudflare Pages to Runsite
Cloudflare Pages is great for static and edge functions, but full backends, databases and long-running services live elsewhere. Runsite hosts your whole app — frontend, API and database — in Frankfurt, and reads your existing wrangler.toml.
- ~15 min
- typical migration
- Full-stack, not just edge
- keep your workflow
- Keep Cloudflare Pages running
- until you cut over
// the mental model
Every Cloudflare Pages concept has a Runsite home
Pages handles the frontend; your backend, database and crons are scattered across Workers, D1, KV and external services. Here's how each piece maps onto a single Runsite project.
name = "my-app"
pages_build_output_dir = "dist"
[[d1_databases]]
binding = "DB"
database_name = "app-db"
[vars]
API_BASE = "https://api.example.com" - →Pages static buildcloudflare pagesStatic / SSR web service autoYour build output dir is served directly, SSR supported
- →Functions / Workerscloudflare pagesAlways-on web service autoRun your API as a persistent service — no edge runtime limits
- →D1 databasecloudflare pagesManaged PostgreSQL you doMove to standard Postgres; export D1 and import with psql
- →KV namespacecloudflare pagesManaged Redis you doRepoint reads/writes at a managed Redis URL
- →[vars] in wrangler.tomlcloudflare pagesEnvironment variables autoNon-secret vars imported; secrets pasted once
- →Cron triggerscloudflare pagesScheduled jobs you doRecreate cron schedules in the dashboard
// step by step
From Cloudflare Pages to live in the EU
Six steps. Most of them take seconds. Cloudflare Pages 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 wrangler.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. Cloudflare Pages 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 and start commands from your repo
- ✓ Non-secret [vars] from wrangler.toml
- ✓ Custom domains (after DNS cutover)
You handle once
- → D1 databases — export and import into managed PostgreSQL
- → KV namespaces — repoint at managed Redis
- → Workers bound to Pages — recreate as web services
- → Secret bindings — paste once after import
// cloudflare pages problems → runsite solutions
Common Cloudflare Pages frustrations — sound familiar?
Every Cloudflare Pages frustration, solved.
Cloudflare Pages problem
"Pages Functions can't run my backend"
Cloudflare's edge functions have CPU time limits and no native Node.js modules. Complex backends don't fit.
Runsite solution
Full Docker containers
Run any framework in persistent containers. No CPU time limits, no V8 isolate restrictions.
Cloudflare Pages problem
"I need PostgreSQL, not D1"
Cloudflare's D1 is SQLite-based with size limits. Production apps need a real relational database.
Runsite solution
Managed PostgreSQL from €5/mo
Standard PostgreSQL with auto-backups, point-in-time recovery, and no vendor lock-in.
Cloudflare Pages problem
"Cloudflare is a US company"
Even with EU data centers, Cloudflare is subject to US jurisdiction and the CLOUD Act.
Runsite solution
EU entity, full sovereignty
Runsite is registered in the EU. Your data is governed by European law with no US jurisdictional exposure.
// comparison
Runsite vs Cloudflare Pages
Side-by-side. No marketing fluff — just facts.
| Feature | Runsite | Cloudflare Pages |
|---|---|---|
| Backend Hosting | ✓ Full containers, any stack | Edge Functions only (V8 isolates) |
| Docker Support | ✓ Any Dockerfile | ✗ Not supported |
| Managed PostgreSQL | ✓ From €5/mo | ✗ Not available (use D1/KV) |
| Long-Running Processes | ✓ Persistent containers | ✗ Edge functions have CPU time limits |
| GDPR Compliance | ✓ EU entity | ✗ US company (San Francisco) |
| Static Site Hosting | Via S3 + CDN | ✓ Unlimited bandwidth, global CDN |
| Bandwidth Cost | Included in plan | ✓ Free, unlimited |
| Edge Network | EU-focused | ✓ 300+ global PoPs |
// migration questions
Migrating from Cloudflare Pages, answered
Can Runsite host a full backend, not just a frontend?
Yes. Unlike Cloudflare Pages, which is frontend-and-edge first, Runsite runs always-on web services, background workers, managed PostgreSQL and Redis in the same project — so your whole stack lives in one place in Frankfurt.
What happens to my D1 database?
Runsite provisions a managed PostgreSQL instance. Export your D1 data and import it with standard SQL tooling. The new connection string is auto-wired into your environment variables.
Do edge functions still work the same way?
Your function code runs as an always-on web service instead of in the edge runtime, which removes CPU-time and bundle-size limits. Most APIs port over with no code changes; edge-specific APIs may need small tweaks.
Is there downtime when migrating from Cloudflare Pages?
No. Your Pages deployment keeps serving until you switch DNS. Build and verify on Runsite first, then cut over when you're confident, and roll back by repointing DNS.
Why move from Cloudflare Pages to Runsite?
Runsite is EU-native with a Frankfurt region, an EU-registered entity for GDPR, predictable EUR pricing with hard spending caps, and full-stack hosting rather than a split between Pages, Workers, D1 and KV.
Leave Cloudflare Pages behind
Bring your wrangler.toml. We'll handle the rest — in Frankfurt.
Start your migration →