Sichere Weboberflaeche fuer IPv64/DDNS-Updates mit Erstinstallation im Browser, Login, optionalem Passkey/WebAuthn-Login, MySQL/MariaDB-Unterstuetzung und gehaertetem Docker-Image.
codeluxe1/ddns-manager:latest
codeluxe1/ddns-manager:v1
Unterstuetzte Plattformen:
linux/amd64
linux/arm64
/setup/healthzOrdner anlegen:
mkdir -p ~/ddns-manager
cd ~/ddns-manager
docker-compose.yml erstellen:
services:
app:
image: codeluxe1/ddns-manager:latest
container_name: ddns-manager-app
restart: unless-stopped
ports:
- "127.0.0.1:8087:5000"
volumes:
- ddns_data:/data
security_opt:
- no-new-privileges:true
read_only: true
tmpfs:
- /tmp
volumes:
ddns_data:
networks:
default:
name: ddns-manager_net
Container starten:
docker compose pull
docker compose up -d
docker compose logs -f app
Healthcheck:
curl -f http://127.0.0.1:8087/healthz
Setup-Seite oeffnen:
http://127.0.0.1:8087/setup
Wenn die App direkt im LAN erreichbar sein soll, aendere die ports-Zeile:
ports:
- "0.0.0.0:8087:5000"
Danach:
http://<server-ip>:8087/setup
Beim ersten Start gibst du alles im Browser ein:
Nach dem Absenden prueft die App die Datenbankverbindung, erstellt die Tabellen und speichert die Konfiguration im Docker-Volume. Danach startet die App neu und du kannst dich unter /login anmelden.
Empfohlen wird MySQL oder MariaDB.
Beispielrechte:
CREATE DATABASE ddns_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ddns_manager'@'%' IDENTIFIED BY '<starkes-passwort>';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX ON ddns_manager.* TO 'ddns_manager'@'%';
FLUSH PRIVILEGES;
Fuer externe Datenbanken wird TLS empfohlen. Im Browser-Setup kannst du den SSL-Modus auswaehlen. Nutze disabled nur in vertrauenswuerdigen privaten Netzwerken.
Die App speichert technische Konfiguration im Volume ddns_data:
/data/runtime_secrets.json: automatisch erzeugte interne App-Schluessel/data/runtime_config.json: Datenbank-Konfiguration, Datenbankpasswort verschluesselt/data/bootstrap_setup.db: interne temporaere SQLite-Datei fuer die erste Setup-SeiteDiese Dateien nicht loeschen, wenn die Installation weiter funktionieren soll.
Passkeys sollten mit HTTPS und einem festen Hostnamen genutzt werden.
Wenn du einen Reverse Proxy verwendest:
Host korrekt weiter.X-Forwarded-Proto korrekt weiter.Die App verwendet standardmaessig die aktuelle Browser-Adresse als WebAuthn-Origin. Nach der Erstinstallation kannst du Passkeys in den Einstellungen aktivieren und registrieren.
docker rundocker run -d \
--name ddns-manager-app \
--restart unless-stopped \
-p 127.0.0.1:8087:5000 \
-v ddns_data:/data \
--read-only \
--tmpfs /tmp \
--security-opt no-new-privileges:true \
codeluxe1/ddns-manager:latest
cd ~/ddns-manager
docker compose pull
docker compose up -d
docker image prune -f
Nutze codeluxe1/ddns-manager:v1 statt latest, wenn du einen festen Release-Tag verwenden moechtest.
Sichere vor allem deine MySQL/MariaDB-Datenbank. Zusaetzlich solltest du das Docker-Volume sichern, weil dort die internen Schluessel und die Datenbank-Verbindungskonfiguration liegen.
Beispiel:
docker run --rm \
-v ddns-manager_ddns_data:/data \
-v "$PWD:/backup" \
alpine tar czf /backup/ddns-manager-data.tar.gz -C / data
Wenn dein Compose-Projekt anders heisst, kann der Volume-Name abweichen. Pruefe ihn mit:
docker volume ls
ddns_data muss dauerhaft erhalten bleiben.127.0.0.1 binden.ddns_data erhalten bleibt.ports auf 0.0.0.0:8087:5000 setzen oder Reverse Proxy verwenden./setup leitet auf /login weiter: Die Erstinstallation ist bereits abgeschlossen.docker compose logs -f app ausfuehren.Content type
Image
Digest
sha256:5c07c0925…
Size
64.3 MB
Last updated
6 months ago
docker pull codeluxe1/ddns-manager