# Docker Registry Credentials Testen Dieses Dokument erklärt, wie du die Docker Registry Credentials testen kannst. ## Lokales Testen ### Voraussetzungen 1. Docker muss installiert und laufend sein 2. Curl muss verfügbar sein (wird automatisch installiert falls fehlend) ### Verwendung ```bash # Setze die Credentials als Environment-Variablen export REGISTRY_USER="admin" export REGISTRY_PASSWORD="dein-registry-passwort" # Führe das Test-Script aus ./scripts/test-registry-credentials.sh ``` ### Mit expliziten Werten ```bash REGISTRY_USER="admin" \ REGISTRY_PASSWORD="dein-passwort" \ REGISTRY_DOMAIN="registry.michaelschiemer.de" \ REGISTRY_HOST="94.16.110.151" \ REGISTRY_PORT="5000" \ ./scripts/test-registry-credentials.sh ``` ## Was wird getestet? Das Script führt folgende Tests durch: ### 1. HTTP Connectivity - Testet ob die Registry über HTTP erreichbar ist (`http://94.16.110.151:5000`) - Erwartet Status 401 (Auth erforderlich) oder 200 ### 2. HTTPS Connectivity - Testet ob die Registry über HTTPS erreichbar ist (`https://registry.michaelschiemer.de`) - Erwartet Status 401 (Auth erforderlich) oder 200 ### 3. Docker Login über HTTP - Versucht Docker Login über HTTP - Benötigt `insecure-registry` Konfiguration im Docker-daemon ### 4. Docker Login über HTTPS - Versucht Docker Login über HTTPS - Keine zusätzliche Konfiguration nötig (empfohlen) ### 5. Registry API Zugriff - Testet ob die Registry API funktioniert - Listet verfügbare Repositories auf ## Test in CI/CD ### Via Gitea Workflow Das Script kann auch in einem Gitea Workflow verwendet werden: ```yaml - name: Test Registry Credentials shell: bash env: REGISTRY_USER: ${{ secrets.REGISTRY_USER }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} run: | ./scripts/test-registry-credentials.sh ``` ### Workflow ausführen Es gibt einen dedizierten Workflow `.gitea/workflows/test-registry.yml`: 1. Gehe zu: **Actions** → **Test Registry Credentials** 2. Klicke auf **Run workflow** 3. Der Workflow testet automatisch die Credentials aus Gitea Secrets ## Troubleshooting ### Problem: "REGISTRY_PASSWORD ist nicht gesetzt" **Lösung:** ```bash export REGISTRY_PASSWORD="dein-passwort" ``` ### Problem: "Unauthorized (401)" beim Login **Ursache:** Falsche Credentials **Lösung:** 1. Prüfe `REGISTRY_USER` - sollte `admin` sein (oder der richtige Username) 2. Prüfe `REGISTRY_PASSWORD` - muss mit dem Passwort in `deployment/stacks/registry/auth/htpasswd` übereinstimmen 3. Prüfe Gitea Secrets: - Repository → Settings → Secrets - Stelle sicher, dass `REGISTRY_USER` und `REGISTRY_PASSWORD` korrekt sind ### Problem: "HTTP response to HTTPS client" **Ursache:** Docker versucht HTTPS, aber Registry läuft auf HTTP **Lösung:** - Für HTTP: Docker-daemon muss mit `--insecure-registry` konfiguriert werden - Oder verwende HTTPS-Zugriff über `registry.michaelschiemer.de` (empfohlen) ### Problem: "Registry nicht erreichbar" **Ursache:** Registry läuft nicht oder Netzwerk-Problem **Lösung:** ```bash # Prüfe ob Registry läuft docker ps | grep registry # Prüfe Registry-Logs docker logs registry # Prüfe Netzwerk curl -v http://94.16.110.151:5000/v2/ ``` ### Problem: "404" bei HTTPS **Ursache:** Traefik-Routing ist nicht richtig konfiguriert **Lösung:** 1. Prüfe Traefik Labels in `deployment/stacks/registry/docker-compose.yml` 2. Prüfe ob Registry im `traefik-public` Netzwerk ist 3. Prüfe DNS-Konfiguration für `registry.michaelschiemer.de` ## Passwort prüfen/ändern ### Passwort auf dem Server prüfen ```bash ssh deploy@94.16.110.151 cd ~/deployment/stacks/registry cat auth/htpasswd ``` ### Neues Passwort setzen ```bash ssh deploy@94.16.110.151 cd ~/deployment/stacks/registry # Neues Passwort setzen htpasswd -B auth/htpasswd admin # Registry neu starten docker compose restart registry ``` Dann in Gitea Secrets aktualisieren: - Repository → Settings → Secrets - `REGISTRY_PASSWORD` mit neuem Passwort aktualisieren ## Script-Output ### Erfolgreich ``` ✅ Docker ist verfügbar ✅ curl ist verfügbar ✅ Registry erreichbar über HTTPS (Status: 401 - Auth erforderlich, das ist gut!) ✅ Docker Login erfolgreich! ✅ Credentials sind korrekt und funktionieren! ``` ### Fehlgeschlagen ``` ❌ Docker Login fehlgeschlagen (Exit Code: 1) ⚠️ Fehler: Unauthorized (401) ℹ️ Die Credentials sind falsch: ℹ️ - Username: admin ℹ️ - Password Länge: 24 Zeichen ``` ## Integration in CI/CD Das Script kann in jedem Workflow-Step verwendet werden: ```yaml - name: Verify Registry Access env: REGISTRY_USER: ${{ secrets.REGISTRY_USER }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} run: | ./scripts/test-registry-credentials.sh ``` Falls das Script fehlschlägt (Exit Code 1), wird der Workflow gestoppt und du bekommst klare Fehlermeldungen.