Harbor vs. Nexus Repository: Die richtige Artefakt-Registry für dein DevOps-Setup
Wer Kubernetes, Docker-Pipelines oder mehrsprachige Enterprise-Projekte betreibt, braucht früher oder später eine Artefakt-Registry — einen zentralen Speicher für Container-Images, Helm-Charts, Maven-Artifacts, npm-Pakete und mehr. Zwei der bekanntesten Lösungen im Self-Hosting-Bereich sind Harbor von VMware (heute CNCF-graduiert) und Nexus Repository von Sonatype. Beide sind Open Source (Community-Edition), lösen aber unterschiedliche Probleme. Dieser Artikel zeigt, welche Lösung für dein Setup besser passt.
Was ist Harbor?
Harbor ist eine cloud-native, OCI-konforme Container-Registry, die 2016 von VMware als Open-Source-Projekt gestartet wurde. 2018 spendete VMware Harbor der Cloud Native Computing Foundation (CNCF), wo es 2020 den Graduated-Status erreichte — ein Qualitätsmerkmal für Enterprise-Readiness im Kubernetes-Ökosystem.
Harbor ist spezialisiert auf Container-Artefakte: Docker-Images, OCI-Artefakte und Helm-Charts. Es bringt ein vollständiges Feature-Set für sichere Container-Workflows mit:
- RBAC (rollenbasierte Zugriffskontrolle) auf Projekt-Ebene
- Vulnerability-Scanning via Trivy (integriert) oder Clair
- Image-Signing via Cosign / Notary v2
- Replication zwischen mehreren Harbor-Instanzen oder externen Registries (Docker Hub, ECR, GCR)
- Quota-Management per Projekt
- Content Trust und Image-Signaturverifizierung
- Webhooks für CI/CD-Integrationen
- Proxy Cache für öffentliche Registries (schützt vor Docker Hub Rate Limits)
Harbor lässt sich sowohl über Docker Compose als auch als Kubernetes-Helm-Chart deployen und ist für container-zentrierte DevOps-Teams optimiert.
Was ist Nexus Repository?
Nexus Repository Manager (kurz: Nexus) von Sonatype ist ein universeller Artefakt-Manager, der seit 2008 Enterprise-Teams in mehrsprachigen Umgebungen unterstützt. Die Open-Source-Version heißt Nexus Repository OSS; die Pro-Version enthält erweiterte Features wie High Availability und fortgeschrittenes Staging.
Nexus unterstützt über 20 Paketformate, darunter:
- Maven/Gradle (Java-Ökosystem)
- npm, Yarn (JavaScript)
- PyPI (Python)
- Docker/OCI (Container-Images)
- Helm (Kubernetes)
- apt, yum/RPM (Linux-Pakete)
- NuGet (.NET)
- RubyGems, Go modules, Conda, R
Nexus ist damit deutlich breiter aufgestellt als Harbor, kommt aber mit höherem Ressourcenverbrauch (JVM-basiert) und einer steileren Lernkurve.
Feature-Vergleich: Harbor vs. Nexus Repository
| Feature | Harbor | Nexus Repository OSS |
|---|---|---|
| Primärfokus | Container-Images, OCI | Multi-Format (20+ Typen) |
| Docker/OCI | ✅ Nativ | ✅ Unterstützt |
| Helm-Charts | ✅ Nativ | ✅ Unterstützt |
| Maven/npm/PyPI | ❌ Nicht unterstützt | ✅ Kernstärke |
| Vulnerability Scanning | ✅ Trivy integriert | ⚠️ Nur Pro (IQ Server) |
| Image Signing | ✅ Cosign/Notary | ❌ Nicht nativ |
| RBAC | ✅ Granular | ✅ Vorhanden |
| Proxy/Pull-through Cache | ✅ | ✅ |
| Replikation | ✅ Multi-Registry | ⚠️ Eingeschränkt in OSS |
| CNCF-Projekt | ✅ Graduated | ❌ |
| Technologie-Stack | Go + Vue.js | Java (JVM) |
| RAM-Bedarf | ~2 GB | ~4–8 GB |
| Lizenz | Apache 2.0 | Apache 2.0 (OSS) |
Installation & Betrieb
Harbor installieren
Harbor bietet zwei Installationswege:
1. Docker Compose (empfohlen für Single-Node):
# Harbor Installer herunterladen
wget https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-online-installer-v2.11.0.tgz
tar xzvf harbor-online-installer-v2.11.0.tgz
cd harbor
# Konfiguration anpassen
cp harbor.yml.tmpl harbor.yml
# hostname, https-Zertifikat, admin-Passwort setzen
nano harbor.yml
# Installation starten
./install.sh --with-trivy
2. Kubernetes Helm Chart:
helm repo add harbor https://helm.goharbor.io
helm install harbor harbor/harbor \
--namespace harbor --create-namespace \
--set expose.type=ingress \
--set expose.ingress.hosts.core=harbor.example.com \
--set externalURL=https://harbor.example.com
Harbor läuft mit einem Stack aus mehreren Containern (Registry, Core, Portal, Job Service, Database, Redis, Trivy). Der Resource-Footprint ist moderat (~2 GB RAM im Idle).
Nexus Repository installieren
# Via Docker (einfachste Methode)
docker run -d -p 8081:8081 \
--name nexus \
-v nexus-data:/nexus-data \
sonatype/nexus3:latest
Nexus startet langsam (60–120 Sekunden JVM-Warmup) und benötigt deutlich mehr RAM. Empfohlen werden mindestens 4 GB, für produktive Setups eher 8 GB. Das Admin-Passwort findet sich beim ersten Start unter /nexus-data/admin.password.
Sicherheit: Vulnerability Scanning und Image Signing
Harbor bietet hier einen klaren Vorteil für Container-Workloads:
- Trivy-Integration: Jedes gepushte Image wird automatisch auf bekannte CVEs gescannt. Im Dashboard sieht man direkt, welche Images kritische Schwachstellen haben.
- Image Signing mit Cosign: Harbor unterstützt die OCI-konforme Signaturverifizierung — Container-Images lassen sich kryptografisch signieren und die Signatur beim Pull verifizieren.
- Content Trust: Unsigned Images können pro Projekt blockiert werden, was Software-Supply-Chain-Angriffe erschwert.
Nexus OSS bietet kein integriertes Vulnerability-Scanning für Container-Images. Sonatype vertreibt dafür Nexus IQ Server als separate (kostenpflichtige) Lösung, die sich mit Nexus Repository integrieren lässt.
Für Maven/npm-Pakete gibt es eigene Scanning-Tools wie OWASP Dependency Check oder Snyk, die in CI/CD-Pipelines integriert werden können — unabhängig vom verwendeten Repository Manager.
Proxy-Cache und Rate-Limit-Schutz
Beide Tools unterstützen Proxy-Repositories (Pull-through Cache): Anfragen an Docker Hub, npm Registry oder Maven Central werden über die eigene Instanz gecacht, was:
- Docker Hub Rate Limits umgeht (200 Pulls/6h für anonyme Nutzer)
- Ausfallsicherheit bei Upstream-Problemen bietet
- Netzwerk-Traffic und Build-Zeiten reduziert
Harbors Proxy-Cache-Feature ist besonders für Container-Heavy-Setups nützlich und einfach per UI konfigurierbar. Nexus glänzt als Proxy für Maven Central und npm Registry in Enterprise-Java-Umgebungen.
Wann Harbor wählen?
Harbor ist die richtige Wahl, wenn:
- Container-First-Umgebung: Dein Stack dreht sich primär um Docker, Kubernetes und Helm-Charts
- Sicherheit ist kritisch: Du brauchst integrierten Vulnerability-Scan (Trivy) ohne zusätzliche Tools
- CNCF-Ökosystem: Du willst eine CNCF-graduierte Lösung mit breiter Community-Unterstützung
- Image Signing: Software-Supply-Chain-Sicherheit via Cosign ist ein Muss
- Leichtgewichtigere Alternative: Harbor braucht weniger RAM als Nexus (2 GB vs. 4–8 GB)
Typische Harbor-Nutzer: DevOps-Teams, die Kubernetes betreiben, auf Sicherheits-Scanning angewiesen sind und eine dedizierte Container-Registry brauchen — ohne den Overhead eines universellen Artefakt-Managers.
Wann Nexus Repository wählen?
Nexus ist die bessere Wahl, wenn:
- Multi-Language-Umgebung: Dein Team entwickelt in Java, JavaScript, Python und mehr gleichzeitig
- Maven/Gradle ist Kern: Java-Enterprise-Projekte brauchen eine Maven-Registry — das ist Nexus' ureigene Stärke
- Legacy-Enterprise: Nexus ist in vielen Enterprise-Teams seit Jahren etabliert und tief integriert
- One-Stop-Shop: Du willst alle Artefakte (Container, Pakete, Binaries) in einem einzigen System verwalten
- apt/yum-Repos: Für Linux-Paketverteilung in der Infrastruktur ist Nexus deutlich besser aufgestellt
Typische Nexus-Nutzer: Enterprise-Teams mit heterogenem Tech-Stack, Java-lastige Umgebungen, Firmen mit langjähriger Nexus-Nutzung.
Migration: Zwischen den Tools wechseln
Wer von Nexus zu Harbor wechselt (oder umgekehrt), muss Container-Images mit docker tag und docker push migrieren. Ein Skript wie das folgende übernimmt das automatisch:
#!/bin/bash
SOURCE="nexus.example.com:8082"
TARGET="harbor.example.com"
PROJECT="myproject"
for image in $(docker images --format "{{.Repository}}:{{.Tag}}" | grep $SOURCE); do
new_image="${TARGET}/${PROJECT}/${image#$SOURCE/}"
docker tag $image $new_image
docker push $new_image
echo "Migriert: $image → $new_image"
done
Nexus-Repositories für Maven, npm oder PyPI lassen sich nicht direkt nach Harbor migrieren — Harbor unterstützt diese Formate schlicht nicht. Wer von Nexus zu Harbor wechselt, benötigt für nicht-Container-Artefakte eine alternative Lösung (Gitea Packages, Verdaccio für npm, etc.).
Fazit: Harbor für Container, Nexus für Multi-Format
Harbor ist die klare Wahl für Teams, die primär mit Kubernetes und Containern arbeiten. Die integrierten Security-Features (Trivy-Scanning, Cosign-Signing) und der CNCF-Graduated-Status machen Harbor zur Enterprise-tauglichen Container-Registry par excellence.
Nexus Repository ist besser für Enterprise-Umgebungen, die multiple Sprachen und Build-Systeme vereinen müssen. Wer neben Container-Images auch Maven-Artifacts, npm-Pakete und PyPI-Module in einem System verwalten will, kommt an Nexus kaum vorbei.
Für reine Self-Hosting-Setups auf Kubernetes ist Harbor die schlankere, modernere Lösung. Für polyglotte Enterprise-Teams mit Java-Kernkompetenz bleibt Nexus der bewährte Standard — auch wenn der Ressourcenhunger erheblich ist.
Weiterführende Artikel
- Harbor vs. Gitea Container Registry: Self-Hosted Docker-Registry im Vergleich
- ArgoCD vs Flux CD: GitOps-Tools für Kubernetes
- Kubernetes vs. Docker Swarm: Container-Orchestrierung im Vergleich