Zugangsdaten & Rotation

Jedes Geheimnis, das eine selbst gehostete Conzent OCI-Installation erzeugt, wo es gespeichert wird und wie man es rotiert – einschließlich der Wiederherstellung eines verlorenen Admin-Passworts ohne E-Mail.

Zugangsdaten & Rotation

Das Installationsprogramm generiert alle Geheimnisse, die Ihre Installation benötigt, sodass nichts mit einem Standardpasswort ausgeliefert wird. Diese Seite listet auf, was generiert wurde, wo die einzelnen Werte gespeichert sind und wie man sie ändert, ohne die Installation zu beeinträchtigen.

Was das Installationsprogramm generiert hat

Geheimnis Generiert als Gespeichert in Schützt
Admin-Passwort 16-stellige Zufallszeichenfolge .conzent-credentials (Modus 600) und bcrypt-gehasht in der Datenbank Dashboard-Anmeldung
DB_PASSWORD 24-stellige Zufallszeichenfolge .env, zweimal: DB_PASSWORD= und innerhalb von DATABASE_URL= MariaDB-Zugriff
SCANNER_API_KEY 32-stellige Zufallszeichenfolge .env App-zu-Scanner-Authentifizierung
APP_SECRET 64-stellige Hex-Zeichenfolge .env Reserviert – kein Code-Pfad liest es derzeit

Die gespeicherten Admin-Zugangsdaten können jederzeit mit bash scripts/install.sh --config eingesehen werden.

Als Erstes: .conzent-credentials enthält Ihr Admin-Passwort im Klartext. Diese Datei existiert, damit das Installationsprogramm es Ihnen erneut anzeigen kann, falls Sie es verpasst haben. Sobald das Passwort in einem Passwort-Manager gespeichert ist, löschen Sie die Datei mit rm .conzent-credentials. Nichts hängt von ihr ab.

Das Admin-Passwort rotieren

Wenn Sie sich anmelden können, ändern Sie es im Dashboard unter Konto → Profil.

Wenn Sie sich nicht anmelden können, setzen Sie es vom Host aus zurück. Dies war früher eine Sackgasse: bin/oci setup verweigert die Ausführung, sobald ein Konto existiert, und der „Passwort vergessen"-Link per E-Mail erfordert einen funktionierenden SMTP-Server, den selbst gehostete Installationen oft nicht haben.

# Ein neues Passwort generieren und ausgeben
docker compose exec app php bin/oci user:password --email=you@example.com

# Oder ein bestimmtes setzen
docker compose exec app php bin/oci user:password --email=you@example.com --password='your-new-password'

Der Befehl bcrypt-hasht und speichert das neue Passwort, meldet alle bestehenden Sitzungen dieses Benutzers ab und löscht jede Sperrung durch fehlgeschlagene Anmeldeversuche. Er funktioniert für jeden Benutzer, nicht nur für Admins – nützlich, wenn ein Kunde sein Passwort vergessen hat und Sie keinen Mail-Server haben.

Um stattdessen den E-Mail-Ablauf zu nutzen, konfigurieren Sie SMTP in .env (MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_ENCRYPTION, MAIL_FROM_ADDRESS), starten Sie neu und testen Sie mit docker compose exec app php bin/oci test:email --to=you@example.com. Wenn MAIL_HOST leer ist, protokolliert Conzent „Email not sent: no SMTP server configured" und fährt fort – Reset-Links werden nie zugestellt.

Das Datenbankpasswort rotieren

Vier Stellen müssen übereinstimmen: MariaDB selbst, DB_PASSWORD, DATABASE_URL und die laufenden Container.

# 1. Ein neues Passwort wählen
NEW_PASS=$(openssl rand -hex 16)

# 2. Es innerhalb von MariaDB ändern
docker compose exec -T mariadb mariadb -uroot -p"$DB_ROOT_PASSWORD" \
  -e "ALTER USER 'oci'@'%' IDENTIFIED BY '$NEW_PASS'; FLUSH PRIVILEGES;"

# 3. BEIDE Stellen in .env aktualisieren
sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=$NEW_PASS|" .env
sed -i "s|^DATABASE_URL=.*|DATABASE_URL=mysql://oci:$NEW_PASS@mariadb:3306/oci?charset=utf8mb4|" .env

# 4. Die Dienste mit aktiven Verbindungen neu starten
docker compose up -d --force-recreate app worker scheduler beacon-worker

# 5. Bestätigen
docker compose exec app php bin/oci health

Wenn health einen Datenbankfehler meldet, stimmen die beiden .env-Werte nicht überein. DATABASE_URL ist das, was die Anwendung tatsächlich verwendet; DB_PASSWORD ist das, womit MariaDB initialisiert wird. Beide müssen den neuen Wert tragen.

DB_ROOT_PASSWORD ist standardmäßig root. Der MariaDB-Container veröffentlicht keinen Host-Port im selbst gehosteten Stack und ist daher nur aus dem Compose-Netzwerk heraus erreichbar – setzen Sie jedoch einen echten Wert, bevor Sie eigene Host-Port-Zuordnungen hinzufügen.

Den Scanner-API-Schlüssel rotieren

sed -i "s|^SCANNER_API_KEY=.*|SCANNER_API_KEY=$(openssl rand -hex 16)|" .env
docker compose up -d --force-recreate scanner app worker scheduler
docker compose exec app php bin/oci scanner:register
docker compose exec app php bin/oci scanner:health

Die Registrierung ist URL-basiert und idempotent, sodass eine erneute Ausführung den bestehenden Eintrag aktualisiert, anstatt ein Duplikat hinzuzufügen. Wenn Sie zusätzliche Scanner betreiben, rotieren Sie den Schlüssel bei jedem und registrieren Sie jede URL erneut.

API-Schlüssel und Website-Schlüssel

Zwei Zugangsdaten, die das Installationsprogramm nicht generiert:

  • API-Schlüssel – werden pro Benutzer für den programmgesteuerten Zugriff erstellt. Im Dashboard widerrufen und neu ausstellen.
  • Website-Schlüssel – der data-key-Wert in jedem Einbettungs-Snippet. Dies ist ein öffentlicher Bezeichner, kein Geheimnis: Er erscheint im Quellcode jeder Website, die das Banner verwendet. Er kann nicht rotiert werden, ohne das Einbettungs-Snippet der jeweiligen Website zu aktualisieren.

Umgang mit .env

.env ist die sensibelste Datei in der Installation. Sie ist per gitignore ausgeschlossen und wird mit Modus 600 erstellt – wenn Sie sie weitergegeben haben, stellen Sie das mit chmod 600 .env wieder her. Sie ist in Backup-Archiven enthalten, weshalb diese ebenfalls mit Modus 600 geschrieben werden und an einem privaten Ort aufbewahrt werden sollten.

Die vollständige Referenz befindet sich beim Code: docs/credentials.md auf GitHub.

Zurück zur Dokumentation