Skip to content

Serverless Registry

Active
cloudflare/serverless-registry

A Docker-compatible container registry running on Cloudflare Workers with image layers stored in R2.

View on GitHub
Stars
1.5k
Forks
124
Watchers
1.5k
Open issues
40

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.

Similar open-source projects, ranked by shared categories and tags.

All DevOps projects →