# Docker Registry mit Benutzerverwaltung Private Docker Registry mit Web-Oberflaeche zur Benutzerverwaltung, HTTPS via Caddy und SQLite als Datenbank. ## Voraussetzungen - Docker und Docker Compose - Eine Domain die auf den Server zeigt (A-Record) - Port 80 und 443 frei ## Einrichtung ### 1. `.env` Datei anpassen ```bash nano .env ``` Folgende Werte setzen: | Variable | Beschreibung | |----------|-------------| | `DOMAIN` | Deine Domain, z.B. `registry.meinserver.de` | | `ADMIN_USER` | Benutzername fuer die Web-Oberflaeche | | `ADMIN_PASSWORD` | Passwort fuer die Web-Oberflaeche | | `SECRET_KEY` | Zufaelliger Schluessel (siehe unten) | ### 2. Secret Key generieren ```bash ./generate-secret.sh ``` Traegt automatisch einen zufaelligen Schluessel in die `.env` Datei ein. ### 3. Starten ```bash docker compose up -d --build ``` Caddy holt sich automatisch ein Let's Encrypt HTTPS-Zertifikat fuer die konfigurierte Domain. ## Benutzerverwaltung Web-Oberflaeche oeffnen unter: ``` https://DEINE-DOMAIN/ ``` Dort mit den Admin-Zugangsdaten aus der `.env` anmelden. Ueber die Oberflaeche kannst du: - Neue Registry-Benutzer anlegen - Passwoerter aendern - Benutzer loeschen ## Images pushen und pullen ### Anmelden ```bash docker login registry.meinserver.de ``` Benutzername und Passwort eingeben (die in der Web-Oberflaeche angelegten Zugangsdaten). ### Image taggen und pushen ```bash # Lokales Image taggen docker tag mein-image:latest registry.meinserver.de/mein-image:latest # Image hochladen docker push registry.meinserver.de/mein-image:latest ``` ### Image pullen ```bash docker pull registry.meinserver.de/mein-image:latest ``` ### Image mit Build direkt pushen ```bash docker build -t registry.meinserver.de/mein-app:1.0 . docker push registry.meinserver.de/mein-app:1.0 ``` ## Nuetzliche Befehle ```bash # Alle Images in der Registry auflisten curl -u benutzer:passwort https://registry.meinserver.de/v2/_catalog # Tags eines Images auflisten curl -u benutzer:passwort https://registry.meinserver.de/v2/mein-image/tags/list # Logs anzeigen docker compose logs -f # Stoppen docker compose down # Stoppen und alle Daten loeschen docker compose down rm -rf data/ ``` ## Datenverzeichnisse Alle Daten liegen lokal im `./data/` Ordner: | Pfad | Inhalt | |------|--------| | `data/caddy/` | TLS-Zertifikate (Let's Encrypt) | | `data/registry/` | Gespeicherte Docker Images | | `data/auth/users.db` | SQLite Datenbank mit Benutzern | | `data/htpasswd/` | Generierte htpasswd fuer die Registry | ## Backup Fuer ein vollstaendiges Backup reicht es den `data/` Ordner und die `.env` Datei zu sichern: ```bash tar czf backup-$(date +%Y%m%d).tar.gz data/ .env ```