// 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.

{ }
wrangler.toml
on Cloudflare Pages
git push → build
EU
live stack
Frankfurt · eu-central
~15 min
typical migration
Full-stack, not just edge
keep your workflow
Keep Cloudflare Pages running
until you cut over
Full Backend Support
Docker Container Hosting
100% GDPR Compliant
Free Tier — Forever

// 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.

wrangler.toml
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 build
    cloudflare pages
    Static / SSR web service auto
    Your build output dir is served directly, SSR supported
  • Functions / Workers
    cloudflare pages
    Always-on web service auto
    Run your API as a persistent service — no edge runtime limits
  • D1 database
    cloudflare pages
    Managed PostgreSQL you do
    Move to standard Postgres; export D1 and import with psql
  • KV namespace
    cloudflare pages
    Managed Redis you do
    Repoint reads/writes at a managed Redis URL
  • [vars] in wrangler.toml
    cloudflare pages
    Environment variables auto
    Non-secret vars imported; secrets pasted once
  • Cron triggers
    cloudflare pages
    Scheduled jobs you do
    Recreate 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. 1

    Create a Runsite project

    ~30 sec

    Sign in at runsite.app and create an empty project. No credit card, no sales call.

  2. 2

    Connect your Git repo

    GitHub · GitLab · Bitbucket

    Authorize GitHub, GitLab or Bitbucket. Runsite scans the selected branch for your wrangler.toml and detects the stack automatically.

  3. 3

    Review the detected setup

    Full preview before provisioning

    Runsite 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. 4

    Provision in Frankfurt

    One click · eu-central

    Create 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. 5

    Drop in your secrets

    Secrets stay out of Git

    Secret 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. 6

    Push to go live

    Live in < 2 min

    git 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

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 →
No rewrites Zero downtime Deploy in 2 min EU servers