learn

Cloudflare

What Cloudflare can and cannot do for this project.

UseVerdictCost
Frontend on Workers via the OpenNext adapterFeasible and free-tier friendly, but untested with this appFree tier
Cron Trigger keep-alive WorkerYes — see the keep-alive pageFree tier
DNS and CDN with a custom domain in front of RenderOptional; verify WebSocket traffic through the proxy firstFree tier
Express HTTP server on WorkersNot a drop-in — Workers are not a long-running Node runtimeN/A
ws WebSocket server on WorkersNot a drop-in, same reasonN/A
BullMQ flush worker on WorkersNot a drop-in, same reasonN/A
Backend on Cloudflare ContainersPossible, but not free — Containers need the Workers Paid plan and bill per running time, with no inbound raw TCPPaid
WebSocket server rebuilt on Durable ObjectsPossible as a redesign (SQLite-backed objects are on the free plan), not as a deploymentFree tier, rewrite required

For the frontend, read Cloudflare's current Next.js guide first.

It may recommend a different adapter for new apps. Remember NEXT_PUBLIC_* values are build-time variables, and flag this app as needing a full test pass — sign-in, rooms, and presence — before trusting it there.

For the backend, do not lift and shift.

The HTTP server, the WebSocket server, and the flush worker all assume a continuously running Node process. Say it plainly: that is a redesign project (Durable Objects for realtime state, Queues for flush work), not a deployment afternoon.

Recommended setup: free demo stays Vercel plus Render HTTP and WS plus Neon plus Upstash plus a keep-alive window. Production-like adds an always-on paid worker so snapshots never wait on a sleeping process.

Last verified: 2026-10-11. Free-tier limits change — check the providers before relying on any number.

Provider docs

What it owns

  • The honest verdict on each Cloudflare option
  • The recommended free and production-like setups

Talks to

Sources: apps/web/package.json, apps/web/.env.example, apps/http-server/package.json, apps/ws-server/package.json, apps/flush-worker/package.json (documented at commit b0026d9)

On this page