Overview
Serverless Registry is a container image registry that runs entirely on Cloudflare Workers, with layers and manifests stored in R2. It implements the push and pull workflows Docker expects, so you can host private images on Cloudflare without running a registry server.
Key Features
- Full push and pull support for standard container tooling
- R2 storage for image layers and manifests
- Authentication with username/password or public-key JWTs
- Pull fallback to upstream registries such as Docker Hub or GitHub Container Registry, with optional credentials to avoid rate limits
- No servers to manage — scales with Workers
Getting Started
The project uses pnpm:
pnpm install
cp wrangler.example.jsonc wrangler.jsonc
npx wrangler --env production r2 bucket create r2-registry
Bind the bucket in your Wrangler config as REGISTRY, store credentials with wrangler secret put (never in the config file), and deploy:
npx wrangler deploy --env production
Then log in and push like any other registry:
echo $PASSWORD | docker login --username $USERNAME --password-stdin $REGISTRY_URL
docker push $REGISTRY_URL/my-image:latest
Known Limitations
Pushing with Docker is limited to layers of about 500 MB, because each layer upload must fit within your Workers plan’s maximum request body size. Larger layers can be uploaded to the R2 bucket directly as a workaround.
Use Cases
- Private registry for small teams or side projects without a monthly registry bill
- Storing CI build artifacts as images next to your other Cloudflare resources
- A lightweight mirror for frequently pulled base images
License
Apache License 2.0.