readme and genereate key

This commit is contained in:
duffyduck 2026-02-13 08:31:56 +01:00
parent 272e2d6090
commit 0da0bfe8a3
3 changed files with 157 additions and 0 deletions

15
.env Normal file
View File

@ -0,0 +1,15 @@
# ===========================================
# Docker Registry - Konfiguration
# ===========================================
# Domain unter der die Registry erreichbar ist
# Muss auf die IP des Servers zeigen (DNS A-Record)
# Caddy holt automatisch ein Let's Encrypt Zertifikat
DOMAIN=registry.example.com
# Admin-Zugangsdaten fuer die Benutzerverwaltungs-Weboberflaeche
ADMIN_USER=admin
ADMIN_PASSWORD=changeme
# Geheimer Schluessel fuer Flask-Sessions (bitte aendern!)
SECRET_KEY=bitte-aendern-zu-einem-zufaelligen-schluessel

128
README.md
View File

@ -0,0 +1,128 @@
# 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
```

14
generate-secret.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
# Generiert einen zufaelligen SECRET_KEY und traegt ihn in die .env Datei ein
SECRET=$(openssl rand -hex 32)
if [ ! -f .env ]; then
echo "Fehler: .env Datei nicht gefunden. Bitte zuerst erstellen."
exit 1
fi
sed -i "s|^SECRET_KEY=.*|SECRET_KEY=${SECRET}|" .env
echo "SECRET_KEY wurde generiert und in .env eingetragen:"
echo "SECRET_KEY=${SECRET}"