Harbor vs. Gitea Container Registry: Self-Hosted Docker Registry 2026
Wer eigene Docker-Images hosten möchte, statt Docker Hub oder GitHub Container Registry zu nutzen, hat mehrere Optionen. Die beiden populärsten Self-Hosted-Lösungen sind Harbor und die in Gitea integrierte Container Registry. Beide erfüllen den gleichen Grundbedarf — unterscheiden sich aber erheblich in Komplexität, Features und Zielgruppe.
Das Problem: Warum eine eigene Container Registry?
Docker Hub hat Free-Tier-Einschränkungen (Rate Limits, Pull-Limits), und wer private Images hostet, möchte keine Abhängigkeit von externen Diensten. Eine eigene Registry bietet:
- Volle Kontrolle über Images und Zugriffsrechte
- Keine Pull-Rate-Limits
- Images nahe am Deployment-Cluster (niedrige Latenz)
- Compliance und Datenschutz
Was ist Harbor?
Harbor ist eine Enterprise-Grade Container Registry, die 2018 von VMware Open-Sourced wurde und heute ein CNCF-Graduiertenprojekt ist. Es ist speziell für Container-Images und Helm-Charts entwickelt worden.
Harbor-Features:
- Vulnerability Scanning — Integration mit Trivy/Clair zum automatischen Scannen von Images auf bekannte CVEs
- Content Trust und Image Signing — Cosign/Notary-Integration für signierte Images
- RBAC — feingranulare Rollenverteilung nach Projekten und Benutzergruppen
- Replication — automatische Spiegelung von Images zwischen Registries
- Retention Policies — automatisches Löschen alter Image-Tags nach definierten Regeln
- Audit Logs — vollständige Nachverfolgung aller Registry-Operationen
- OCI-Artefakte — nicht nur Container-Images, auch Helm-Charts und andere OCI-Artefakte
- LDAP/AD-Integration
Harbor ist das vollständigste Self-Hosted Registry-System überhaupt — aber auch das komplexeste.
Was ist die Gitea Container Registry?
Gitea ist primär eine Self-Hosted Git-Plattform — vergleichbar mit einem kleinen GitHub. Seit Version 1.17 (2022) ist eine Container Registry direkt integriert: das Gitea Package Registry mit OCI-Container-Support.
Die Gitea Container Registry ist keine eigenständige Software — sie ist ein Feature von Gitea. Wer Gitea bereits nutzt, bekommt die Registry gratis dazu:
# Image pushen zu Gitea
docker tag myimage git.example.com/myuser/myimage:latest
docker push git.example.com/myuser/myimage:latest
Features der Gitea Container Registry:
- OCI-kompatible Container Registry
- Integration mit Gitea-Benutzerverwaltung und Tokens
- Basis-RBAC (über Gitea-Organisationen)
- Keine zusätzliche Konfiguration nötig
- Auch Helm-Charts, npm, PyPI, Maven, etc. (Package Registry)
Funktionsvergleich
| Feature | Harbor | Gitea Container Registry |
|---|---|---|
| Standalone (ohne Git) | ✅ | ❌ (Teil von Gitea) |
| Vulnerability Scanning | ✅ (Trivy integriert) | ❌ |
| Image Signing | ✅ (Cosign/Notary) | ❌ |
| Replication | ✅ | ❌ |
| Retention Policies | ✅ | ❌ |
| Audit Logs | ✅ | ⚠️ (via Gitea-Logs) |
| RBAC | ✅ Granular | ⚠️ Über Gitea-Orgs |
| LDAP/OIDC | ✅ | ✅ (via Gitea) |
| OCI-Support | ✅ | ✅ |
| Helm-Charts | ✅ | ✅ |
| Web-UI | ✅ Vollständig | ✅ (Gitea-UI) |
| Setup-Komplexität | Hoch | Sehr gering |
| RAM-Verbrauch | ~1–2 GB | ~200–500 MB (Gitea gesamt) |
| Docker-Container | 5–8 Container | 1 Container |
Harbor: Setup und Komplexität
Harbor besteht aus mehreren Komponenten:
harbor-core— Haupt-APIharbor-portal— Web-UIharbor-db— PostgreSQLharbor-redis— Redis für Cachingregistry— Distribution-Serverharbor-jobservice— Background-Jobs (Scanning, Replication)trivy-adapter(optional) — Vulnerability Scanning
Die Installation erfolgt über ein Installer-Script:
tar xvf harbor-offline-installer-v2.x.x.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
# harbor.yml konfigurieren (hostname, https, db-password...)
./install.sh --with-trivy
Das Setup ist deutlich aufwändiger als eine einfache Docker Compose-Datei und erfordert gutes Verständnis der Komponenten.
Gitea Registry: Setup in 5 Minuten
Wenn Gitea bereits läuft, ist die Container Registry sofort verfügbar — kein zusätzliches Setup:
version: "3.8"
services:
gitea:
image: gitea/gitea:latest
restart: unless-stopped
ports:
- "3000:3000"
- "2222:22"
volumes:
- ./gitea:/data
environment:
- APP_NAME=Gitea
- RUN_MODE=prod
Die Registry ist unter git.example.com direkt als Container Registry nutzbar. Kein zusätzlicher Konfigurationsaufwand.
Wann Harbor verwenden?
Harbor ist die richtige Wahl für:
- Enterprise-Umgebungen mit Compliance-Anforderungen
- Teams, die regelmäßiges Vulnerability Scanning für Images benötigen
- Image Signing und Supply-Chain-Security
- Große Teams mit komplexen RBAC-Anforderungen
- Wenn Harbor als standalone Registry (ohne Git-Server) genutzt werden soll
- Image Replication zwischen mehreren Registries oder Rechenzentren
Wann Gitea Container Registry verwenden?
Gitea ist die bessere Wahl für:
- Self-Hoster und kleine Teams, die bereits Gitea für Git nutzen
- Wenn eine einfache, wartungsarme Registry reicht
- Ressourcenbeschränkte Server — Gitea verbraucht deutlich weniger als Harbor
- Wenn Code und Images am gleichen Ort verwaltet werden sollen
- CI/CD innerhalb von Gitea — Actions können Images direkt in die interne Registry pushen
Gitea Actions + Container Registry: Das perfekte Self-Hosting-Setup
Ein besonderer Vorteil der Gitea-Lösung: Gitea Actions (GitHub Actions-kompatible CI/CD) können Images direkt in die Gitea Container Registry pushen:
# .gitea/workflows/build.yml
name: Build & Push
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Login to Gitea Registry
uses: docker/login-action@v3
with:
registry: git.example.com
username: ${{ gitea.actor }}
password: ${{ secrets.GITEA_TOKEN }}
- name: Build and Push
uses: docker/build-push-action@v5
with:
push: true
tags: git.example.com/${{ gitea.repository }}:latest
Das ergibt eine komplett integrierte Self-Hosting-Pipeline: Code in Gitea → CI in Gitea Actions → Image in Gitea Registry → Deploy.
Fazit: Harbor oder Gitea Container Registry?
Für die meisten Self-Hoster ist Gitea Container Registry die praktischere Wahl: geringer Ressourcenverbrauch, einfaches Setup, direkte Integration mit Git und CI/CD.
Harbor ist die richtige Wahl, wenn Enterprise-Features wie Vulnerability Scanning, Image Signing oder komplexe Replication-Setups benötigt werden — typischerweise in Unternehmensumgebungen mit strengen Security-Anforderungen.
Meine Empfehlung: Mit Gitea und der integrierten Registry starten. Harbor einführen, wenn konkrete Anforderungen an Vulnerability Scanning oder Image Signing entstehen.