Die eigenstaendige Vorgaenger-App unter scanner.perinco.de ist auf dem Server entfernt: Unit project-scanner-backend (Port 5005), beide Apache-Vhosts, das Let's-Encrypt-Zertifikat samt Renewal-Config, /var/www/Projekt Scanner (486 MB) und die Datenbank project_scanner (Dump unter /root/backups). Damit entfallen die LEGACY_*-Variablen und das Importskript, dessen Quelle es nicht mehr gibt. /root/.cache/ms-playwright bleibt bewusst stehen: der Cache stammt aus der Installation der alten App, liegt aber ausserhalb beider Verzeichnisse und wird vom CRM-Scanner benutzt - playwright ist auf 1.60.0 gepinnt, damit es genau dieser Build (chromium-1223) bleibt. Der Hinweis steht jetzt in README und docs/06-betrieb.md, damit ihn beim naechsten Aufraeumen niemand mitnimmt. SCANNER_SCHEDULER_OFFSET geht auf 0: der Versatz sollte verhindern, dass beide Instanzen mit denselben Portal-Cookies gleichzeitig losziehen. Ohne zweite Instanz hat er keinen Zweck mehr, die Mechanik bleibt fuer kuenftige Erststarts im Code. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
97 lines
3.6 KiB
Bash
97 lines
3.6 KiB
Bash
# perinco CRM Backend
|
|
# Kopie als .env anlegen und Werte setzen. .env niemals committen.
|
|
|
|
PORT=5006
|
|
# Nur lokal binden - von aussen erreichbar ist die App ausschliesslich
|
|
# ueber den Apache-Reverse-Proxy.
|
|
HOST=127.0.0.1
|
|
|
|
DB_HOST=localhost
|
|
DB_PORT=3306
|
|
DB_USER=root
|
|
DB_PASSWORD=changeme
|
|
DB_NAME=perinco_CRM
|
|
|
|
# Signiert die JWT-Sessions. Muss ein langer Zufallswert sein.
|
|
JWT_SECRET=changeme-langer-zufallswert
|
|
JWT_EXPIRES_IN=12h
|
|
|
|
# Wird beim ersten Start angelegt, falls noch kein Benutzer existiert.
|
|
ADMIN_USERNAME=admin
|
|
ADMIN_NAME=Administrator
|
|
ADMIN_EMAIL=admin@perinco.de
|
|
ADMIN_PASSWORD=changeme-starkes-passwort
|
|
|
|
# Das Diktat braucht hier keine Konfiguration: Whisper laeuft im Browser des
|
|
# Benutzers, eingestellt wird es im Reiter "Whisper" der Anwendung.
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Postfachanbindung Microsoft 365 (crm@perinco.de)
|
|
# ---------------------------------------------------------------------------
|
|
# Lesender Zugriff ueber Microsoft Graph mit App-only-Berechtigung
|
|
# (Client Credentials). Benoetigt wird in Entra genau eine
|
|
# Anwendungsberechtigung: Mail.Read, mit Administratorzustimmung. Kein
|
|
# Schreibzugriff, kein Redirect-URI, kein interaktiver Login.
|
|
#
|
|
# Fehlen diese Werte, startet das CRM normal - die Postfachanbindung meldet in
|
|
# den Einstellungen, welche Angabe fehlt, und der Abgleich bleibt aus.
|
|
#
|
|
# In Exchange Online zusaetzlich den Zugriff auf dieses eine Postfach begrenzen,
|
|
# sonst darf die App jedes Postfach im Tenant lesen:
|
|
# New-ApplicationAccessPolicy -AppId <MS_CLIENT_ID> `
|
|
# -PolicyScopeGroupId crm@perinco.de -AccessRight RestrictAccess `
|
|
# -Description "perinco CRM: nur crm@perinco.de"
|
|
MS_TENANT_ID=
|
|
MS_CLIENT_ID=
|
|
MS_CLIENT_SECRET=
|
|
MS_MAILBOX=crm@perinco.de
|
|
|
|
# Ordner im Postfach. "inbox" ist ein von Graph vorgegebener Name.
|
|
# MS_MAIL_FOLDER=inbox
|
|
|
|
# Hintergrundabgleich. Standard ist AN; nur "false" schaltet ihn hart ab.
|
|
# Intervall, Zeitraum und automatische Kontaktuebernahme stehen dagegen in den
|
|
# Einstellungen der Anwendung (Tabelle crm_settings).
|
|
MAIL_SYNC=true
|
|
|
|
# Bremse fuer den Erstabgleich: so viele Delta-Seiten holt ein Lauf hoechstens.
|
|
# Der naechste Lauf setzt an derselben Stelle fort.
|
|
# MAIL_MAX_PAGES=20
|
|
|
|
# Obergrenze fuer den gespeicherten Mailtext je Nachricht (Zeichen).
|
|
# MAIL_MAX_BODY_CHARS=400000
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Projekt Scanner (portiert)
|
|
# ---------------------------------------------------------------------------
|
|
# Eigene Datenbank, eigener Schluessel, eigenes Upload-Verzeichnis, eigener
|
|
# Scheduler. Die eigenstaendige Vorgaenger-App wurde am 09.09.2026
|
|
# zurueckgebaut, es gibt keine zweite Instanz mehr.
|
|
|
|
# Wird beim Start automatisch angelegt, falls sie fehlt.
|
|
SCANNER_DB_NAME=perinco_scanner
|
|
# SCANNER_DB_HOST=localhost
|
|
# SCANNER_DB_PORT=3306
|
|
# SCANNER_DB_USER=root
|
|
# SCANNER_DB_PASSWORD=
|
|
|
|
# Schluessel fuer die Portal-Passwoerter (AES).
|
|
# Langer Zufallswert, z. B.: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
|
|
SCANNER_ENCRYPTION_KEY=
|
|
|
|
# Verzeichnis fuer die CV-PDFs. Leer = <server>/uploads.
|
|
SCANNER_UPLOAD_DIR=
|
|
|
|
# Hintergrund-Scraper (Playwright + OpenAI). Standard ist AN; nur "false"
|
|
# schaltet ihn ab.
|
|
SCANNER_SCHEDULER=true
|
|
|
|
# Minuten Versatz fuer den allerersten Lauf. Stammt aus dem Parallelbetrieb mit
|
|
# der alten App und ist seit deren Rueckbau ohne Wirkung, solange in der
|
|
# Datenbank ein last_scan_at steht - der traegt den Zeitplan ueber Neustarts.
|
|
# 0 = sofort loslegen.
|
|
SCANNER_SCHEDULER_OFFSET=0
|
|
|
|
# Fallback fuer den OpenAI-Key; bevorzugt wird der Wert aus den Einstellungen.
|
|
# OPENAI_API_KEY=
|