2.6 KiB
2.6 KiB
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
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
./generate-secret.sh
Traegt automatisch einen zufaelligen Schluessel in die .env Datei ein.
3. Starten
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
docker login registry.meinserver.de
Benutzername und Passwort eingeben (die in der Web-Oberflaeche angelegten Zugangsdaten).
Image taggen und pushen
# 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
docker pull registry.meinserver.de/mein-image:latest
Image mit Build direkt pushen
docker build -t registry.meinserver.de/mein-app:1.0 .
docker push registry.meinserver.de/mein-app:1.0
Nuetzliche Befehle
# 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:
tar czf backup-$(date +%Y%m%d).tar.gz data/ .env