docker-repo/README.md

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