Deploy your own Docker registry & builder in 3 commands

Private registry plus remote building for Kamal 2. Zero external dependencies - no Docker Hub account required.

Knot Docker Registry & Builder

Perfect for Mac Users

🔧

ARM64 → AMD64

Build server images from your M1/M2/M3 Mac without architecture issues.

🚀

Zero Dependencies

No Docker Hub account needed. Uses smart bootstrapping to deploy your own registry.

🔒

Automatic HTTPS

Let's Encrypt SSL certificates automatically provisioned and renewed. Secure registry access out of the box.

Watch the Walkthrough

See Knot in action - from setup to deployment in just a few minutes

Quick Start

1. Configure DNS

Create an A record pointing your subdomain to your VPS IP address. This must be done first so your domain is ready for SSL certificate setup.

Record type: A
Name: registry  or  registry.yourdomain.com
Value: your-vps-ip
TTL: 300 seconds (5 minutes)
Important: If using Cloudflare, turn OFF the proxy (gray cloud ☁️). Cloudflare proxy limits uploads to 100MB (free) or 500MB (paid), and Docker image layers often exceed these limits.

2. Get Knot (locally)

git clone https://github.com/deployTo-Dev/knot.git
cd knot

3. Configure your Knot deployment

./knot setup

You'll be asked 3 questions:

  • VPS IP address: Your server's IP address
  • Registry domain: e.g., registry.yourdomain.com
  • SSH user: [root] (or ubuntu for AWS/GCP)

4. Deploy (Zero Dependencies!)

./knot deploy

Your registry & builder will be live at https://your-domain.com

What you need

  • VPS: 1GB RAM, any cloud provider
  • Domain: Pointing to your VPS
  • SSH: Access to your VPS
  • That's it! No Docker Hub or external registry accounts needed

Zero Dependencies

Unlike traditional Kamal setups that require Docker Hub accounts and external registries, Knot uses a clever workaround inspired by Jason Nochlin's blog post to bootstrap your own registry with zero external dependencies.

Using your registry & builder

Add to your Kamal 2 app's config/deploy.yml:

# Registry configuration
registry:
  server: registry.yourdomain.com
  username: admin
  password: <%= ENV["REGISTRY_PASSWORD"] %>

# Remote builder configuration  
builder:
  arch: amd64
  remote: ssh://user@your-vps-ip

Then build and deploy: kamal build (builds on VPS!) && kamal deploy