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-API
  • harbor-portal — Web-UI
  • harbor-db — PostgreSQL
  • harbor-redis — Redis für Caching
  • registry — Distribution-Server
  • harbor-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.