Hoardr
Open source · self-hosted · OCI-compatible

A container registry you'll actually enjoy running.

Hoardr speaks the OCI Distribution spec — so docker push and pull just work — runs as a single process with no external database, cleans up after itself, and ships with a genuinely nice admin UI. Free and open source.

docker run -d -p 8080:8080 -e Hoardr__MasterToken=change-me -v hoardr:/app/data ghcr.io/bernhardpollerspoeck/hoardr:latest

That's the whole install. One container, one volume.

Why teams pick Hoardr

Serious features — without nginx.conf and htpasswd gymnastics.

Hoardr Docker Registry
+ nginx / htpasswd
Harbor
Works with docker push/pull
Web UI to manage it
Built-in user management htpasswd files
Per-repo pull / push / delete proxy hacks
Auto-latest per repo ★ ✓
Automatic tag retention + GC manual
Disk-space alerts ~
No external database Postgres+
Backup / restore copy one folderfiles + htpasswdDB dump + volumes
Setup 1 containernginx + htpasswdmany services

Everything a registry needs. Nothing it doesn't.

Real features, without the operational weight.

🐳

Works with Docker, today

Full OCI Distribution spec. Point docker login at it and push — no client changes, no surprises.

📦

Dead-simple to host

One process. Blobs on disk, metadata in an embedded database. No Postgres, no Redis, no sidecars — it runs anywhere a container runs.

🧹

Cleans up after itself

Automatic tag retention keeps the newest tags and ages out the rest; two-stage garbage collection reclaims the disk. Set it and forget it.

🔔

Never silently fills up

Built-in disk-space alerts over ntfy warn you the moment storage crosses your threshold.

🔐

Real access control

Per-repository pull / push / delete permissions. A master token for admin, accounts for everyone else. No enterprise rituals.

🌿

Yours, forever

MIT-licensed and self-hosted. No seats, no usage limits, no SaaS lock-in. Your images stay on your infrastructure.

🧩

Multi-arch images

Manifest lists are first-class — push amd64 and arm64 under one tag, clients pull the right one.

🗂️

Backup is one folder

Blobs and all metadata — accounts, permissions, tags, even keys — live in one directory. Copy it and the whole registry is backed up.

🛟

Crash-safe by design

Atomic writes, race-safe dedup, and abandoned uploads cleaned up automatically. No corrupted layers, no babysitting.

One less chore

Push a version. latest just follows.

Stop hand-tagging latest in every pipeline. Flip on auto-latest per repository and Hoardr keeps latest pinned to your most recently pushed tag — automatically, on every push, with zero extra CI steps.

docker push registry.example.com/team/api:1.4.2 latest → 1.4.2 ✓

Built for your pipeline

Shaped around build → push → deploy, not bolted on after.

🔑

Push-only tokens

Give CI an account that can push but never delete. Least privilege by default.

🏷️

Auto-latest

Each build's tag becomes latest automatically — zero extra pipeline steps.

🧹

Hands-off cleanup

Retention + GC keep the registry lean as builds pile up. Set once, forget.

From zero to pushing in three steps

  1. 1

    Run it

    docker run -d -p 8080:8080 -e Hoardr__MasterToken=change-me -v hoardr:/app/data ghcr.io/bernhardpollerspoeck/hoardr:latest
  2. 2

    Log in

    docker login registry.example.com -u master -p change-me
  3. 3

    Push

    docker tag myapp registry.example.com/team/myapp:1.0 && docker push registry.example.com/team/myapp:1.0

Full setup guide →

Run the best registry you've ever self-hosted.

Free and open source under the MIT license. Star it, host it, own it.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.