Cloudflare-native Minecraft Java hosting with persistent worlds, secure local bridge access, R2 backups, and a fleet console.
One command in your terminal. The deploy wizard signs into Cloudflare, creates every resource, builds the container image, deploys the Worker, and smoke-tests your fleet.
Screenshots · Features · Architecture · Deployment guide
Cubeflare runs a multi-tenant Minecraft hosting control plane on Cloudflare
Workers, Durable Objects, R2, Containers, and the Cloudflare Sandbox SDK. Each
Minecraft world maps to one MinecraftSandbox Durable Object and one Sandbox
container runtime, so lifecycle, backup, restore, bridge access, and server
state stay attached to the world instead of a central process.
The platform is built around ephemeral containers. A fresh container restores the latest backup before launch, active bridge sessions keep the runtime warm, periodic backups retain world state, and idle worlds naturally sleep.
- Account registration, login, sessions, and per-user server ownership through SQLite-backed Durable Objects.
- One Minecraft server maps to one
MinecraftSandboxDurable Object and one Sandbox SDK container runtime. - Presets for Vanilla, Paper, Purpur, Folia, Fabric, and custom launch scripts.
- R2-backed Sandbox SDK backups with retention pruning.
- Server lifecycle controls: create, start or wake, restart, stop, backup, restore, and delete.
- Secure CLI bridge for Minecraft Java TCP traffic.
- Owner console for logs, RCON, terminal, files, plugins, backups, settings, player activity, and Dynmap mirror status.
- Dynmap mirroring to R2 for supported server and plugin combinations.
- High-fidelity Paper defaults: Java 25, tuned G1 flags, 10G heap profile, 12 chunk view distance, and 10 chunk simulation distance.
Install the CLI and let the deploy wizard create the Cloudflare resources:
curl -fsSL https://raw.githubusercontent.com/AshishKumar4/Cubeflare/main/public/install.sh | sh
cubeflare deployThe wizard uses Wrangler login, creates the R2 bucket, configures Worker secrets, builds the Worker and Minecraft container image, deploys with an immediate container rollout, and smoke-tests the deployed health endpoint. A workers.dev hostname works by default; a custom domain is optional.
Tear everything down again — the Worker, its Durable Object data, and the R2 bucket including all backups — with:
cubeflare undeployPrefer a dashboard-first flow? Start from
Deploy to Cloudflare,
then finish with cubeflare deploy or the account-specific steps in
docs/deployment.md.
Manual deploy:
corepack enable
yarn install
cp .dev.vars.example .dev.vars
yarn release:check
node bin/cubeflare.mjs deployBrowser / Cubeflare CLI
|
v
Cloudflare Worker + Hono + Static Assets
|
+-- IdentityRegistryDO: email registry, CLI auth, invite code registry
+-- UserDO: profile, sessions, server summaries
+-- MinecraftSandbox DO: one Minecraft world and one Sandbox container
|
+-- Cloudflare Container: Java server, bridge, Dynmap sync
+-- R2 bucket: backups/ and dynmap/ prefixes
Minecraft Java uses TCP, while Workers expose HTTP and WebSocket request
handling. Players run cubeflare connect, which opens a local TCP listener and
bridges Minecraft traffic to the server container over an authenticated
WebSocket path. The CLI chooses an available local port and prints the
Minecraft address to join.
- Cloudflare account with Workers, Durable Objects, R2, and Containers enabled.
- Optional: a custom domain routed through Cloudflare.
- Node.js 20 or newer.
- Yarn 4 through Corepack.
- Docker for local container image builds during deployment.
Install from your deployed Cubeflare origin:
curl -fsSL https://your-cubeflare-worker.workers.dev/install.sh | shUse an account login:
cubeflare auth
cubeflare servers
cubeflare connect "Survival world"Or connect with a server invite code:
cubeflare connect CF-SURVIVAL-WORLD-....Keep the CLI process open while players are connected.
yarn dev
yarn typecheck
yarn test:unit
yarn buildThe project uses Yarn Plug'n'Play. Generated artifacts such as .pnp.cjs,
dist/, .wrangler/, node_modules/, and local Sandbox SDK checkouts are not
part of the repository.
Before publishing a release:
yarn release:checkFor production confidence, also run the protocol smoke test against a cleanup safe deployment:
BASE=https://your-cubeflare-domain.example yarn e2e:protocolMIT. See LICENSE.

