Zum Inhalt springen
Q
QuoteNode

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.example
  • infra/.env.dev.example
  • infra/.env.dev-sid
  • infra/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
PG_JIT Dev / Compose PostgreSQL-JIT-Kompilierung. Standardmäßig aus — hilft bei dieser OLTP-Last selten. Zum Aktivieren auf on setzen. off
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
APP_CHANNEL Prod / Dev / Compose Release-Kanal, eingebettet in Build-Metadaten und UI-Labels. alpha, stable
VITE_RELEASE_CHECK_ENABLED Prod / Dev / Frontend Aktiviert die Upstream-Release-Prüfung (nur Admin). true, false
VITE_RELEASE_MANIFEST_URL Prod / Dev / Frontend Öffentliche JSON-Manifest-URL für Upstream-Release-Prüfungen. https://quotenode.dev/releases/latest.json
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
SECURITY_TRUSTED_PROXIES Prod / Dev / Compose Normalerweise leer — die Client-IP wird hinter internen Proxys (private/Loopback-Bereiche) und CDNs wie Cloudflare (über CF-Connecting-IP) automatisch erkannt. Weiterleitungs-Header von einem direkten (nicht internen) Peer werden ignoriert. Nur für ein ungewöhnliches Proxy setzen, dessen Transport-Peer eine öffentliche Adresse ist. leer, 203.0.113.5/32

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
DB_AUTO_MIGRATE Prod / Dev Automatische Migration der PostgreSQL-Hauptversion beim Start (von stack-up.sh genutzt). Standardmäßig aus; bei true wird ein älteres Datenvolume vor dem Start gesichert und migriert. false
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 Prod / Dev Vom Operator durchgesetzte IP-Allowlist (durch Kommas getrennte literale IP/CIDR). Wenn aktiviert, schützt die Allowlist die gesamte Admin-Oberfläche — Login, die 2FA-Abfrage und jede authentifizierte Admin-Route — sodass nur Health/Infra und kundenseitige öffentliche Endpunkte erreichbar bleiben. Wenn gesetzt, ist sie maßgeblich gegenüber der In-App-Tenant-Allowlist und in der UI schreibgeschützt; eine Operatorliste wird beim Start ohne Auto-Rollback durchgesetzt, stellen Sie also sicher, dass Ihre eigene Adresse abgedeckt ist. Leer = die Tenant-Einstellung (falls vorhanden) gilt. Löst Clients über SECURITY_TRUSTED_PROXIES auf. leer, 203.0.113.10,198.51.100.0/24
SECURITY_IP_WHITELIST_FORCE_DISABLE Runtime override Notfall-Override zum Deaktivieren der gespeicherten IP-Allowlist-Durchsetzung (vor jeglichem Allowlist-Parsing geprüft, behebt also auch eine ungültige gespeicherte Liste — und da die Allowlist nun den Login schützt, stellt es die Anmeldemöglichkeit wieder her). Neustart erforderlich; nur ENV, nie über die UI. Deaktiviert nur die IP-Allowlist — nicht GeoIP, Bot-Erkennung oder Rate Limiting. false
SECURITY_IP_WHITELIST_CONFIRMATION_WINDOW_SECONDS Prod / Dev Wie lange ein In-App-Aktivieren/Einschränken der Allowlist auf erneute Bestätigung wartet, bevor es automatisch auf die vorherige Liste zurückgesetzt wird (Sperrschutz). Die bearbeitende Sitzung bestätigt automatisch, wenn ihre aktuelle Adresse abgedeckt ist. 120

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 (CRM). 5000
APP_PRODUCT_IMPORT_MAX_ROWS Prod / Dev Zeilenlimit für Produkt-Importe (CSV/XLSX). 50000
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. 3, 5
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
PIM_MEDIA_MAX_MEGAPIXELS Prod / Dev Lehnt Bilder ab, deren Pixelmaße diese Megapixelzahl überschreiten — aus dem Header geprüft vor jeder vollständigen Dekodierung (Speicherschutz gegen Dekompressionsbomben). 40
PIM_MEDIA_OPTIMIZE_ENABLED Prod / Dev Skaliert und kodiert das gespeicherte Original beim Upload neu. false behält Originale unverändert. true
PIM_MEDIA_OPTIMIZE_MAX_DIMENSION Prod / Dev Längste-Seite-Limit (px) für das gespeicherte Original bei aktivierter Optimierung (Angebote nutzen stets ein 300px-Thumbnail). 2560
PIM_MEDIA_OPTIMIZE_QUALITY Prod / Dev JPEG-Requalität (0.01.0) bei der Bildoptimierung. 0.85
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
MULTIPART_MAX_FILE_SIZE Prod / Dev Globale Obergrenze für eine einzelne hochgeladene Datei — der Upload-Rahmen. Die funktionsspezifischen Limits oben werden separat und strenger erzwungen. Bemessen für den größten legitimen Upload: ein Bild-ZIP-Archiv. 200MB
MULTIPART_MAX_REQUEST_SIZE Prod / Dev Globale Obergrenze für eine ganze Multipart-Anfrage, z. B. Mehrdatei-Upload. 220MB
MULTIPART_FILE_SIZE_THRESHOLD Prod / Dev Uploads größer als dies werden in eine temporäre Datei ausgelagert statt in den Speicher — hält große Uploads vom JVM-Heap fern. 2MB

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
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_ARCHIVE_ENCRYPTION_MODE Prod / Dev Archivverschlüsselung: AGE_RECIPIENT (empfohlen) oder NONE. AGE_RECIPIENT
BACKUP_AGE_RECIPIENT Prod / Dev Öffentlicher age-Empfänger (age1...) für verschlüsselte Archive. age1...
BACKUP_DATABASE_PAYLOAD_MODE Prod / Dev Datenbank-Payload: APP_ENCRYPTED (Standard) oder PII_DECRYPTED. APP_ENCRYPTED
JOBS_MODE Prod / Dev / Compose Welche geplanten Jobs der JVM-Scheduler ausführt: all (Web + Backups in einem Container), web (nur Web — mit einem backup-only-Worker kombinieren), backup-only (dedizierter Backup-Worker). all
BACKUP_RUNTIME_PROFILE Prod / Dev Laufzeitprofil-Label, das in Backup-Logs/Manifesten gespeichert wird: WORKER, WEB_MAINTENANCE, ONE_SHOT, OFFLINE_MAINTENANCE. WEB_MAINTENANCE mit JOBS_MODE=all kombinieren (kein separater Worker); WORKER mit JOBS_MODE=web + einem backup-only-Worker. WORKER
BACKUP_VERIFY_MODE Prod / Dev Verifizierung nach dem Backup: off, archive, sandbox. off
BACKUP_ALLOW_UNENCRYPTED_LOCAL_BACKUP Prod / Dev Erlaubt explizit ein unverschlüsseltes lokales Backup. false
BACKUP_RCLONE_REMOTE Prod / Dev rclone-Ziel für Offsite-Backups. s3:bucket/path
BACKUP_OFFLINE_NOTICE_SECONDS Prod Karenzzeit, bevor die Offline-Wartung Dienste stoppt. 300
BACKUP_MAINTENANCE_PAGE_ENABLED Prod Zeigt während des Offline-Backups eine statische Wartungsseite. false
BACKUP_DOWNLOAD_GRANT_TTL_SECONDS Prod / Dev TTL für einmalige Backup-Download-Freigaben. 120
GEOIP_ENABLED Prod / Dev Nur Schalter für die Länder-Durchsetzung (zugleich Notfallschalter). Die Datenbank wird unabhängig geladen und aktualisiert — siehe GEOIP_AUTO_UPDATE. false
GEOIP_DB_PATH Prod / Dev Pfad zur GeoIP-Datenbank (beim Start automatisch geladen; standardmäßig keyless DB-IP, MaxMind über MAXMIND_*). /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_SECRET und 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.

Last reviewed: Recently