readme and genereate key
This commit is contained in:
parent
272e2d6090
commit
0da0bfe8a3
|
|
@ -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
128
README.md
|
|
@ -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
|
||||||
|
```
|
||||||
|
|
@ -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}"
|
||||||
Loading…
Reference in New Issue