Works with Docker, today
Full OCI Distribution spec. Point docker login at it and push — no client changes, no surprises.
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.
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 folder | files + htpasswd | DB dump + volumes |
| Setup | 1 container | nginx + htpasswd | many services |
Real features, without the operational weight.
Full OCI Distribution spec. Point docker login at it and push — no client changes, no surprises.
One process. Blobs on disk, metadata in an embedded database. No Postgres, no Redis, no sidecars — it runs anywhere a container runs.
Automatic tag retention keeps the newest tags and ages out the rest; two-stage garbage collection reclaims the disk. Set it and forget it.
Built-in disk-space alerts over ntfy warn you the moment storage crosses your threshold.
Per-repository pull / push / delete permissions. A master token for admin, accounts for everyone else. No enterprise rituals.
MIT-licensed and self-hosted. No seats, no usage limits, no SaaS lock-in. Your images stay on your infrastructure.
Manifest lists are first-class — push amd64 and arm64 under one tag, clients pull the right one.
Blobs and all metadata — accounts, permissions, tags, even keys — live in one directory. Copy it and the whole registry is backed up.
Atomic writes, race-safe dedup, and abandoned uploads cleaned up automatically. No corrupted layers, no babysitting.
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.
Shaped around build → push → deploy, not bolted on after.
Give CI an account that can push but never delete. Least privilege by default.
Each build's tag becomes latest automatically — zero extra pipeline steps.
Retention + GC keep the registry lean as builds pile up. Set once, forget.
docker run -d -p 8080:8080 -e Hoardr__MasterToken=change-me -v hoardr:/app/data ghcr.io/bernhardpollerspoeck/hoardr:latest
docker login registry.example.com -u master -p change-me
docker tag myapp registry.example.com/team/myapp:1.0 && docker push registry.example.com/team/myapp:1.0
Free and open source under the MIT license. Star it, host it, own it.