- Update Gitea configuration (remove DEFAULT_ACTIONS_URL) - Fix deployment documentation - Update Ansible playbooks - Clean up deprecated files - Add new deployment scripts and templates
198 lines
4.8 KiB
Markdown
198 lines
4.8 KiB
Markdown
# 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.
|