6f293211a4
Der entrypoint prüft jetzt nach prisma db push, ob die User-Tabelle leer ist – wenn ja, wird automatisch geseeded. Damit muss man bei Erstinstallation nicht mehr daran denken, RUN_SEED=true zu setzen. Logik: RUN_SEED=true → Force-Seed (auch bei nicht-leerer DB; für Reset) User-Count = 0 → Auto-Seed (Default-Verhalten bei leerer DB) User-Count > 0 → kein Seed (DB schon initialisiert) Implementiert via "node -e" mit @prisma/client – kein extra Tool nötig. Fallback bei Fehlern: User-Count = -1, dann kein Seed. .env.example aktualisiert: RUN_SEED bleibt 'false' als Default und ist nur noch für Force-Reseed-Szenarien gedacht. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
71 lines
3.2 KiB
Bash
71 lines
3.2 KiB
Bash
# OpenCRM – zentrale Konfiguration
|
||
# ==================================
|
||
# Kopiere diese Datei zu .env und passe die Werte an.
|
||
# Diese .env wird sowohl vom Backend (npm run dev) als auch von Docker
|
||
# Compose verwendet.
|
||
|
||
# ============== PORTS (extern erreichbar auf dem Host) ==============
|
||
OPENCRM_PORT=3010 # Backend + Frontend (alles unter einer URL)
|
||
ADMINER_PORT=8090 # Adminer (Datenbank-UI). 8081 ist häufig schon belegt.
|
||
DB_PORT=3306 # MariaDB extern (für lokale Tools/Dev). 0 = nicht freigeben.
|
||
|
||
# ============== DATEN-PFADE (Bind-Mounts) ==============
|
||
# Relativ zum Projektverzeichnis. Werden zur Laufzeit angelegt.
|
||
DATA_DIR=./data
|
||
DB_DATA_DIR=./data/db
|
||
UPLOADS_DIR=./data/uploads
|
||
FACTORY_DEFAULTS_DIR=./data/factory-defaults
|
||
BACKUPS_DIR=./data/backups
|
||
|
||
# ============== DATENBANK ==============
|
||
# Der App-User (DB_USER) wird beim ersten Start automatisch von MariaDB
|
||
# angelegt (über MARIADB_USER/MARIADB_PASSWORD im docker-compose) – mit
|
||
# GRANT ALL PRIVILEGES auf ${DB_NAME}.*. Damit nutzt das Backend NICHT root.
|
||
# DB_ROOT_PASSWORD ist nur für Adminer / Notfall-Wartung.
|
||
DB_HOST=localhost # Im Container überschreibt docker-compose das auf "db"
|
||
DB_NAME=opencrm
|
||
DB_USER=opencrm
|
||
DB_PASSWORD=change-this-password
|
||
DB_ROOT_PASSWORD=change-this-root-password
|
||
|
||
# Connection-String wird aus den DB_*-Komponenten zusammengebaut (dotenv-expand).
|
||
# Manuell überschreiben nur wenn Sonderfälle (z.B. extra Query-Parameter).
|
||
# Hinweis: für lokales Dev mit MariaDB im Container nutze DB_HOST=localhost,
|
||
# weil docker-compose den DB-Port auf 127.0.0.1:DB_PORT mappt.
|
||
DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}
|
||
|
||
# ============== SECURITY ==============
|
||
# JWT-Secret: min. 32 Zeichen. Generieren: openssl rand -hex 64
|
||
JWT_SECRET=change-this-to-a-very-long-random-secret-please-rotate-before-production
|
||
JWT_EXPIRES_IN=7d
|
||
|
||
# Encryption-Key für Portal-Credentials: GENAU 64 Hex-Zeichen.
|
||
# Generieren: openssl rand -hex 32
|
||
ENCRYPTION_KEY=change-this-to-64-hex-characters-please-rotate-before-production-xx
|
||
|
||
# Server
|
||
NODE_ENV=development
|
||
PORT=3001 # Backend-internal Port (Dev: localhost:3001)
|
||
LISTEN_ADDR=0.0.0.0 # In Docker = 0.0.0.0, in Bare-Metal-Production = 127.0.0.1
|
||
|
||
# CORS – nur in Production setzen, wenn Frontend auf separater Domain läuft.
|
||
# Beispiel: CORS_ORIGINS=https://crm.deine-domain.de
|
||
# CORS_ORIGINS=
|
||
|
||
# ============== ADMINER (DB-UI) ==============
|
||
# Theme-Auswahl. Verfügbare Designs im offiziellen adminer:latest Image:
|
||
# adminer-dark, brade, bueltge, dracula, esterka, flat, galkaev,
|
||
# haeckel, hever, konya, lavender-light, lucas-sandery, mancave,
|
||
# mvt, nette, ng9, nicu, pappu687, paranoiq, pepa-linha, pokorny,
|
||
# price, rmsoft, rmsoft_blue, rmsoft_blue-dark, win98
|
||
# Empfehlung: dracula (dark) oder adminer-dark – beide modern.
|
||
ADMINER_DESIGN=dracula
|
||
|
||
# ============== SEED ==============
|
||
# Bei leerer DB seedet der Container automatisch (legt admin@admin.com / admin
|
||
# + 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
|