Betrieb
Referenz der Umgebungsvariablen
Vollständige Referenz der QuoteNode-Umgebungsvariablen für Produktion, Development, Docker Compose, Backup-Worker und Vite-Frontend.
Referenz der Umgebungsvariablen
Diese Seite bündelt die Umgebungsvariablen, die aktuell im QuoteNode-Projekt verwendet werden.
Die wichtigsten Quellen der Wahrheit im Anwendungs-Repository sind:
infra/.env.prod.exampleinfra/.env.dev.exampleinfra/.env.dev-sidinfra/docker-compose.*.yml
Verwenden Sie diese Seite als operatororientierten Katalog. Für ein minimales Setup siehe den Installationsleitfaden. Für Deployment-Topologie siehe Bereitstellungsoptionen.
Wie diese Referenz zu lesen ist
- Prod bedeutet: Variable gehört in eine Produktions-
.env - Dev bedeutet: lokale Entwicklung oder Demo-Stack
- Compose bedeutet: hostseitige Docker-Compose-Verkabelung statt direktem Anwendungscode
- Leere Standardwerte bedeuten meist: nur dann explizit setzen, wenn das Feature wirklich benötigt wird
Compose- und lokaler Stack
Diese Variablen beeinflussen das lokale Docker-Compose-Setup und die Proxy-/API-Verdrahtung des Frontends.
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
COMPOSE_PROJECT_NAME | Dev / Compose | Verhindert Namenskollisionen zwischen mehreren lokalen Stacks. | quotenode-dev, quotenode-dev-sid |
POSTGRES_PORT | Dev / Compose | Host-Port für PostgreSQL. | 5433, 5434 |
MAILPIT_PORT | Dev / Compose | Host-Port für die Mailpit-Oberfläche. | 8025, 8026 |
BACKEND_PORT | Dev / Compose | Host-Port für das Backend-API. | 8091, 8092 |
FRONTEND_PORT | Dev / Compose | Host-Port für das Frontend. | 5174, 5175 |
VITE_PUBLIC_API_BASE | Dev / Frontend | Im Browser sichtbare API-Basis für lokale Vite-Stacks. | http://localhost:8091, http://localhost:8092 |
APP_VERSION | Prod / Dev / Compose | Docker-Image-Tag, das Compose auswählt. | latest, 1.0.0 |
PROXY_MODE | Prod / Dev / Compose | Steuert, ob Caddy im Stack (internal) oder extern (external) läuft. | internal, external |
DOMAIN | Prod / Compose | Öffentliche Domain für Caddy und öffentliche URLs im internal-Modus. | quotenode.example.com |
Datenbank und Kernlaufzeit
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
DB_URL | Prod / Dev | JDBC-Connection-String für PostgreSQL. | jdbc:postgresql://postgres:5432/quotenode |
DB_USERNAME | Prod / Dev | Datenbank-Benutzer. | quotenode, app |
DB_PASSWORD | Prod / Dev | Datenbank-Passwort. | 32+ Zufallszeichen in Produktion |
DB_NAME | Prod / Dev / Compose | Datenbankname für App und Compose. | quotenode, app |
SPRING_PROFILES_ACTIVE | Prod / Dev | Aktiver Spring-Profile-Name. | prod, dev |
CORS_ALLOWED_ORIGINS | Prod / Dev | Erlaubte Browser-Origins für das API. In Produktion kein *. | https://ihredomain.de |
LOG_LEVEL | Prod / Dev | Basis-Log-Level der Anwendung. | ERROR, INFO, DEBUG |
Docker-Logs und Support-Diagnostik
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
DOCKER_LOG_MAX_SIZE | Prod / Compose | Maximale Größe einer Container-Logdatei vor Rotation. | 10m |
DOCKER_LOG_MAX_FILE | Prod / Compose | Anzahl aufbewahrter rotierter Logdateien. | 5 |
SUPPORT_LOGS_BUFFER_SIZE | Prod | Größe des Support-Log-Vorschau-Puffers. | 4000 |
SUPPORT_LOGS_PREVIEW_RATE_LIMIT_PER_MINUTE | Prod | Rate Limit für Support-Logvorschau. | 30 |
SUPPORT_LOGS_LOG_LEVEL_DEFAULT_TTL_MINUTES | Prod | Auto-Revert-Zeit für temporär erhöhte Log-Level. | 15 |
SUPPORT_LOGS_LOG_LEVEL_MAX_TTL_MINUTES | Prod | Maximales Zeitfenster für temporäre Log-Level-Erhöhungen. | 30 |
SUPPORT_LOGS_LOG_LEVEL_ALLOWED_SCOPES | Prod | Paketbereiche, für die temporäres Hochsetzen erlaubt ist. | dev.quotenode,... |
Authentifizierung und Session-Sicherheit
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
DB_ENCRYPTION_KEY | Prod / Dev | Hauptschlüssel für Anwendungsverschlüsselung. | 64 Hex-Zeichen in Produktion |
TIMING_TOKEN_SECRET | Prod / Dev | HMAC-Secret für Timing-Schutz. | 32+ Zufallszeichen |
PUBLIC_LINK_PASSWORD_SESSION_SECRET | Prod / Dev | Session-Secret für geschützte öffentliche Links. | 32+ Zufallszeichen |
AUTH_PASSWORD_MIN_LENGTH | Prod / Dev | Mindestlänge für Passwörter. | 12 in Prod, 8 in Dev |
AUTH_PASSWORD_COMPLEXITY_LEVEL | Prod / Dev | Passwort-Komplexitätslevel. | 2 in Prod, 1 in Dev |
AUTH_SESSION_IDLE_TIMEOUT_MIN | Prod / Dev | Session-Idle-Timeout. | 30, 480 |
SECURITY_SESSION_ABSOLUTE_TIMEOUT_H | Prod / Dev | Maximale Sessiondauer unabhängig von Aktivität. | 12, 24 |
SECURITY_MAX_FAILED_LOGINS_SOFT | Prod / Dev | Schwelle für weiche Reaktion auf fehlgeschlagene Logins. | 5, 10 |
SECURITY_MAX_FAILED_LOGINS_TEMP_LOCK | Prod / Dev | Schwelle für temporäre Sperre. | 10, 20 |
SECURITY_MAX_FAILED_LOGINS_HARD_LOCK | Prod / Dev | Schwelle für harte Sperre. | 20, 50 |
SECURITY_TEMP_LOCK_MINUTES | Prod / Dev | Dauer der temporären Sperre. | 30, 5 |
FEATURE_2FA_ENABLED | Prod / Dev | globaler 2FA-Schalter. | true, false |
SECURITY_REQUIRE_2FA_ROLES | Prod / Dev | Rollen, die 2FA erzwingen. | ADMIN |
SECURITY_BOT_DETECTION_ENABLED | Prod / Dev | aktiviert Bot-Detection. | true, false |
SECURITY_BOT_SCORE_WARN_THRESHOLD | Prod / Dev | Warnschwelle für Bot-Score. | 30 |
SECURITY_BOT_SCORE_BLOCK_THRESHOLD | Prod / Dev | Blockschwelle für Bot-Score. | 70 |
SECURITY_IP_WHITELIST_FORCE_DISABLE | Runtime override | Notfall-Override zum Deaktivieren einer gespeicherten IP-Allowlist. | false |
CRM, Dateien, Import und Produktmedien
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
CRM_DEDUP_NAME_SIMILARITY_THRESHOLD | Prod / Dev | pg_trgm-Schwelle für Firmen-Duplikatswarnungen. | 0.8 |
CRM_DEDUP_EMAIL_DOMAIN_WARN | Prod / Dev | Warnung bei passender E-Mail-Domain zu bestehenden Datensätzen. | true |
CRM_ATTACHMENT_MAX_SIZE_MB | Prod / Dev | Maximale Größe eines CRM-Anhangs. | 25, 10 |
CRM_ATTACHMENT_ALLOWED_TYPES | Prod / Dev | Zulässige CRM-Anhangs-Endungen. | pdf,doc,docx,... |
CSV_IMPORT_MAX_ROWS | Prod / Dev | Zeilenlimit für CSV-Importe. | 5000 |
STORAGE_PATH | Prod / Dev | Hauptpfad für Uploads. | /data/uploads, ./data/uploads |
PIM_MEDIA_MAX_SIZE_MB | Prod / Dev | Maximale Größe eines einzelnen Produktbilds. | 5, 10 |
PIM_MEDIA_MAX_PER_PRODUCT | Prod / Dev | Maximale Anzahl Medien pro Produkt. | 5, 10 |
PIM_MEDIA_THUMBNAIL_WIDTH | Prod / Dev | Breite der Thumbnails in Pixeln. | 300 |
PIM_MEDIA_ALLOWED_TYPES | Prod / Dev | Erlaubte Produktmedien-Endungen. | jpg,jpeg,png,webp,svg |
IMPORT_ZIP_MAX_SIZE_MB | Prod / Dev | Maximale ZIP-Größe für Bildimport. | 100 |
IMPORT_ZIP_MAX_IMAGES | Prod / Dev | Maximale Bildanzahl pro ZIP. | 1000 |
IMPORT_IMAGE_MAX_SIZE_MB | Prod / Dev | Maximale Größe eines Einzelbilds im ZIP-Import. | 5 |
IMPORT_IMAGE_FUZZY_THRESHOLD | Prod / Dev | Schwelle für Fuzzy-Matching von Dateinamen. | 0.82 |
Versand, FX und Angebotsdefaults
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
SHIPPING_DEFAULT_VOLUMETRIC_DIVISOR | Prod / Dev | Divisor für volumetrisches Versandgewicht. | 4000 |
SHIPPING_OVERRIDE_REQUIRES_REASON | Prod / Dev | Begründungspflicht bei manuellem Versandkosten-Override. | true |
FX_PROVIDER | Prod / Dev | Quelle für Wechselkurse. | NBP, MOCK, ECB, CUSTOM |
FX_PROVIDER_URL | Prod / Dev | Override-URL für einen eigenen FX-Provider. | leer außer bei CUSTOM |
FX_REFRESH_INTERVAL_MIN | Prod / Dev | Intervall für automatischen FX-Refresh. | 60, 0 |
FX_DEFAULT_MARGIN_PERCENT | Prod / Dev | Standardaufschlag auf Provider-Kurse. | 0 |
FX_DEVIATION_WARN_PERCENT | Prod / Dev | Warnschwelle für manuelle Kursabweichungen. | 3 |
FX_DEVIATION_BLOCK_PERCENT | Prod / Dev | Blockschwelle für manuelle Kursabweichungen. | 8 |
OFFER_NUMBER_PREFIX | Prod / Dev | Präfix der Angebotsnummern. | OF |
E-Mail, öffentliche Links und Benachrichtigungen
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
SMTP_HOST | Prod / Dev | SMTP-Host für Versand. | Provider-Host, localhost |
SMTP_PORT | Prod / Dev | SMTP-Port. | 587, 1025, 1026 |
SMTP_USERNAME | Prod / Dev | SMTP-Benutzername. | Provider-Konto |
SMTP_PASSWORD | Prod / Dev | SMTP-Passwort. | Provider-Secret |
SMTP_AUTH | Prod / Dev | aktiviert SMTP-Authentifizierung. | true, false |
SMTP_STARTTLS | Prod / Dev | aktiviert STARTTLS. | true, false |
PUBLIC_LINK_TOKEN_BYTES | Prod / Dev | Entropiegröße für öffentliche Link-Tokens. | 32 |
PUBLIC_LINK_DEFAULT_EXPIRY_DAYS | Prod / Dev | Standardgültigkeit für öffentliche Links. | 0 = unbegrenzt |
PUBLIC_RATE_LIMIT_OPEN_PER_HOUR | Prod / Dev | Stundenlimit für öffentliche Angebotsaufrufe. | 60, 999 |
PUBLIC_RATE_LIMIT_ACTION_PER_HOUR | Prod / Dev | Stundenlimit für öffentliche Aktionen wie Annahme/Ablehnung. | 5, 999 |
TRACKING_IP_ANONYMIZE | Prod / Dev | aktiviert IP-Anonymisierung in Tracking-Daten. | false |
TRACKING_IP_ANONYMIZE_AFTER_DAYS | Prod / Dev | verzögerte IP-Anonymisierung nach N Tagen. | 0 |
TRACKING_RETENTION_DAYS | Prod / Dev | Aufbewahrung für Tracking-Daten öffentlicher Links. | 365 |
CLIENT_CONFIRM_EMAIL_ENABLED | Prod / Dev | versendet Bestätigung an den Kunden nach Annahme. | false |
NOTIFICATIONS_ENABLED | Prod / Dev | aktiviert das Benachrichtigungssystem. | true |
NOTIFICATIONS_EMAIL_ENABLED | Prod / Dev | aktiviert E-Mail-Zustellung für Benachrichtigungen. | true, false |
NOTIFICATIONS_PUBLIC_PREFERENCES_URL | Prod | öffentliche URL für Benachrichtigungseinstellungen. | https://ihredomain.de/notifications/preferences |
NOTIFICATIONS_PREFERENCE_TOKEN_TTL_DAYS | Prod | Gültigkeit des Einstellungs-Tokens. | 30 |
NOTIFICATIONS_OFFER_EXPIRY_WARN_DAYS | Prod / Dev | Erinnerungszeitplan vor Angebotsablauf. | 7,2 |
NOTIFICATIONS_LICENSE_EXPIRY_WARN_DAYS | Prod / Dev | Erinnerungen vor Lizenzablauf. | 30,14,7,1 |
REMINDERS_JOB_INTERVAL_MINUTES | Prod / Dev | Intervall des Reminder-Jobs. | 5 |
PDF-Erzeugung
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
PDF_ENABLED | Prod / Dev | aktiviert PDF-Erzeugung. | true, false |
PDF_GOTENBERG_URL | Prod / Dev | interne URL des Gotenberg-Dienstes. | http://gotenberg:3000 |
PDF_SYNC_TIMEOUT_MS | Prod / Dev | Timeout für synchrone PDF-Erzeugung. | 10000, 5000 |
PDF_SYNC_MAX_ITEMS | Prod / Dev | maximale Positionszahl für synchrone Erzeugung. | 50 |
PDF_STORAGE_PATH | Prod / Dev | Pfad für gespeicherte PDFs. | /data/pdfs, ./data/pdfs |
PDF_RETENTION_DAYS | Prod / Dev | Aufbewahrungsdauer erzeugter PDFs. | 365 |
PDF_RETRY_BACKOFF_SECONDS | Prod / Dev | Retry-Backoff für asynchrone PDF-Jobs. | 30,120,600 |
PDF_WORKER_CONCURRENCY | Prod / Dev | Parallelität des PDF-Workers. | 2 |
PDF_WORKER_POLL_INTERVAL_MS | Prod / Dev | Polling-Intervall des PDF-Workers. | 2000 |
Lizenzierung, Reports und Wartung
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
LICENSE_SKIP_SIGNATURE_CHECK | Prod / Dev | umgeht die Lizenzsignaturprüfung. Nie in Produktion. | false, true |
LICENSE_EXPIRY_CHECK_INTERVAL_H | Prod / Dev | Intervall zur Prüfung des Lizenzablaufs. | 24 |
REPORTS_DEFAULT_PERIOD_DAYS | Prod / Dev | Standard-Datumsbereich für Reports. | 30 |
REPORTS_EXPORT_MAX_ROWS | Prod / Dev | Zeilenlimit für Report-Exporte. | 10000 |
Backups, GeoIP und Privacy-Ops
| Variable | Bereich | Zweck | Typischer Wert |
|---|---|---|---|
BACKUP_ENABLED | Prod / Dev | aktiviert geplante Backups. | true, false |
BACKUP_CRON | Prod / Dev | Cron-Zeitplan für automatische Backups. | 0 0 2 * * * |
BACKUP_RETENTION_DAILY | Prod / Dev | Anzahl täglicher Backups, die gehalten werden. | 7 |
BACKUP_RETENTION_WEEKLY | Prod / Dev | Anzahl wöchentlicher Backups. | 4 |
BACKUP_RETENTION_MONTHLY | Prod / Dev | Anzahl monatlicher Backups. | 12 |
BACKUP_LOCAL_DIR | Runtime / Compose | lokaler Pfad für Backups und Worker. | /app/data/backups |
BACKUP_GPG_RECIPIENT | Prod / Dev | GPG-Empfänger für Backup-Verschlüsselung. | Fingerprint oder E-Mail |
BACKUP_RCLONE_REMOTE | Prod / Dev | rclone-Ziel für Offsite-Backups. | s3:bucket/path |
BACKUP_ENCRYPTION_ENABLED | Runtime override | interner oder testbezogener Override für Backup-Verschlüsselung. | false |
GEOIP_ENABLED | Prod / Dev | aktiviert GeoIP-Zugriffskontrolle. | false |
GEOIP_DB_PATH | Prod / Dev | Pfad zur MaxMind-GeoIP-Datenbank. | /app/data/geoip/... |
SECURITY_GEOIP_ALLOWED_COUNTRIES | Prod / Dev | ISO-Allowlist für GeoIP. | leer oder PL,DE,CZ |
MAXMIND_ACCOUNT_ID | Prod | MaxMind-Konto für GeoLite-Download. | Account-ID |
MAXMIND_LICENSE_KEY | Prod | MaxMind-Lizenzschlüssel. | Secret |
GEOIP_EDITION_ID | Prod | MaxMind-Editions-ID. | GeoLite2-Country |
GDPR_ANONYMIZE_AUTO_AFTER_DAYS | Prod / Dev | Zeitraum bis zur automatischen Anonymisierung. | 0 |
Praktische Hinweise
- Für echte Deployments sollten Sie mit der Produktionsvorlage starten, für lokale Arbeit mit der Dev-Vorlage.
DB_ENCRYPTION_KEY,TIMING_TOKEN_SECRET,PUBLIC_LINK_PASSWORD_SESSION_SECRETund SMTP-Zugangsdaten sind Secrets und müssen sicher gesichert werden.- Compose-only-Ports und Frontend-Variablen gehören nicht in produktive
.env-Dateien, außer Ihr Deployment benötigt sie explizit. - Wenn Sie nur den kleinsten sinnvollen Einstieg brauchen, ist der Installationsleitfaden bewusst kürzer als diese Referenz.