From 69a52ffe0309635d784fca657a201977c76d3cb3 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 24 May 2026 14:56:55 +0200 Subject: [PATCH] =?UTF-8?q?README:=20Admin-Initial-Passwort=20ist=20seit?= =?UTF-8?q?=20Pentest-12=20zuf=C3=A4llig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die README versprach weiterhin "admin@admin.com / admin" als Default, aber Pentest Runde 12 hat das hardcoded "admin" entfernt (Komplexitäts-Policy-Verletzung). Der Seed generiert jetzt ein 28-Zeichen-Zufallspasswort und schreibt es einmal nach stdout. Aktualisiert: - Quick-Start-Header: Hinweis statt direktes Passwort - "Erste Inbetriebnahme"-Block: docker-logs-Befehl + SEED_ADMIN_PASSWORD-Alternative - "Erster Login"-Sektion: vollständige Anleitung inkl. Beispiel-Ausgabe - "Production-Deployment"-Checkliste: aktualisiert - .env.example: SEED_ADMIN_PASSWORD-Block dokumentiert Co-Authored-By: Claude Opus 4.7 (1M context) --- .env.example | 12 ++++++++++-- README.md | 55 +++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 56 insertions(+), 11 deletions(-) diff --git a/.env.example b/.env.example index acb50c16..d61aaae5 100644 --- a/.env.example +++ b/.env.example @@ -86,9 +86,17 @@ SSRF_BLOCK_PRIVATE_IPS=false ADMINER_DESIGN=dracula # ============== SEED ============== -# Bei leerer DB seedet der Container automatisch (legt admin@admin.com / admin -# + Stammdaten an) – nichts zu konfigurieren. +# Bei leerer DB seedet der Container automatisch (legt admin@admin.com + +# Stammdaten an) – nichts zu konfigurieren. # Nur wenn man eine NICHT-leere DB nochmal forciert seeden will (z.B. nach # Reset / Stammdaten-Update), kurz auf 'true' setzen, neu starten, dann # wieder zurück. RUN_SEED=false + +# Initial-Passwort für admin@admin.com beim Seed. Mindestens 25 Zeichen, +# sonst wird der Wert ignoriert und stattdessen ein 28-Zeichen-Zufalls- +# passwort erzeugt und EINMAL nach stdout geschrieben: +# docker logs opencrm-app 2>&1 | grep -A 5 "Initial-Passwort" +# Wer keine Lust auf die Log-Suche hat, setzt hier ein eigenes starkes +# Passwort vor dem ersten `docker compose up -d`. +# SEED_ADMIN_PASSWORD= diff --git a/README.md b/README.md index 7b93d59b..61887fc8 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ docker compose up -d ``` Browser: -- **CRM**: http://localhost:3010 (Login: `admin@admin.com` / `admin`) +- **CRM**: http://localhost:3010 (Login: `admin@admin.com` – Initial-Passwort siehe unten) - **Datenbank-UI** (Adminer): http://localhost:8081 (Server: `db`, User: `root`, DB: `opencrm`) Alle persistenten Daten liegen in `./data/`: @@ -75,9 +75,22 @@ Alle persistenten Daten liegen in `./data/`: Ports + Pfade konfigurierst du in `./.env` (Default-Werte siehe `.env.example`). -> **Erste Inbetriebnahme:** In der `.env` einmalig `RUN_SEED=true` setzen, -> `docker compose up -d` ausführen, dann wieder auf `false`. Danach existiert -> der initiale Admin-User `admin@admin.com` / `admin`. +> **Erste Inbetriebnahme:** Bei leerer DB läuft der Seed automatisch +> (kein Eingriff nötig). Nur wenn du eine bereits befüllte DB erneut +> seeden willst, einmalig `RUN_SEED=true` in der `.env` setzen, +> `docker compose up -d` ausführen, dann wieder auf `false`. +> +> Der initiale Admin-User ist **`admin@admin.com`**. Das Passwort wird +> beim Seed zufällig generiert (28 Zeichen) und genau einmal in den +> Container-Logs ausgegeben: +> ```bash +> docker logs opencrm-app 2>&1 | grep -A 5 "Initial-Passwort" +> ``` +> Alternativ kannst du **vor dem ersten Start** ein eigenes Passwort +> setzen, indem du `SEED_ADMIN_PASSWORD=…` (mindestens 25 Zeichen, sonst +> wird's ignoriert) in der `.env` einträgst. Nach dem ersten Login +> sollte das Passwort über *Einstellungen → Mein Profil* geändert +> werden. ## Voraussetzungen @@ -186,11 +199,33 @@ Das Frontend läuft auf `http://localhost:5173` Nach dem Seed sind folgende Zugangsdaten verfügbar: -- **E-Mail:** admin@admin.com -- **Passwort:** admin +- **E-Mail:** `admin@admin.com` +- **Passwort:** wird beim Seed zufällig generiert (28 Zeichen) und einmal + in den Container-Logs ausgegeben: + ```bash + docker logs opencrm-app 2>&1 | grep -A 5 "Initial-Passwort" + ``` + Beispiel-Ausgabe: + ``` + ======================================================== + Admin-User: admin@admin.com + Initial-Passwort: <28-zeichen-zufalls-passwort> + ⚠️ Dieses Passwort wird hier EINMAL ausgegeben! + Bitte sofort nach dem ersten Login ändern. + ======================================================== + ``` + Wer das Log nicht mehr findet (z.B. Container schon länger gerollt), + setzt `SEED_ADMIN_PASSWORD=` in der `.env` und startet + einmalig mit `RUN_SEED=true` neu – der Seed ist idempotent und + überschreibt das Admin-Passwort. Danach `RUN_SEED` wieder auf `false`. -> **Wichtig:** Vor dem ersten Production-Deployment das Default-Passwort sofort -> ändern und Secrets rotieren – siehe [Production-Deployment](#production-deployment). +> **Tipp:** Wer von Anfang an ein eigenes Admin-Passwort haben möchte, +> setzt `SEED_ADMIN_PASSWORD=` **bevor** der erste +> `docker compose up -d` läuft. Der Wert wird dann statt des Zufalls- +> passworts verwendet (siehe `.env.example`). + +> **Wichtig:** Vor dem ersten Production-Deployment Secrets rotieren – +> siehe [Production-Deployment](#production-deployment). ## Production-Deployment @@ -240,7 +275,9 @@ Plus: und der `/auth/refresh`-Endpoint kann den User nicht mehr nachladen (= alle 15 min Re-Login). Beim NPM-Setup landen Frontend und API automatisch auf derselben Domain via Proxy-Path. -- **Default-Admin-Passwort ändern** (admin@admin.com / admin). +- **Admin-Initial-Passwort ändern**: das beim Seed generierte Zufalls-Passwort + (siehe [Erster Login](#erster-login)) im Profil überschreiben – oder gleich + per `SEED_ADMIN_PASSWORD` in der `.env` vor dem ersten Start setzen. - **Manuelle Test-Checkliste** aus [docs/TESTING.md](docs/TESTING.md) einmal komplett durchklicken. - **Monitoring konfigurieren**: Einstellungen → Sicherheits-Monitoring → Alert-E-Mail