Zum Hauptinhalt springen

Environment-Variablen

Nach einer Änderung: Konfiguration anwenden. Laufzeitwerte werden durch Neuerstellen der betroffenen Container übernommen; VITE_*-Werte benötigen einen Frontend-Build. Ein bloßer Neustart genügt dafür nicht.

Environment-Variablen steuern den Betrieb von StatO. Der Environment Generator erzeugt sichere Standardwerte als deploy.yaml oder stato.env. Für besondere Infrastruktur, externe Datenbanken oder Entwicklungsumgebungen dient diese Seite als Referenz.

:::caution Secrets JWT_SECRET, Datenbank- und SMTP-Passwörter sowie S3-Schlüssel sind Secrets. Sie gehören in einen Secret Store, eine geschützte lokale Datei oder die sichere Variablenverwaltung der Hosting-Plattform – nie in Git. :::

Laufzeit, HTTP und Reverse Proxy​

VariableStandard / FormatZweck
NODE_ENVproductionNode-Laufzeitmodus. In Produktion immer production.
APP_ENVproduction, staging, developmentApp-spezifischer Betriebsmodus.
STRICT_SECURITY_MODEtrue, falseErzwingt produktionsnahe Sicherheitsprüfungen.
TZz. B. Europe/BerlinZeitzone für Container und Logs.
PORTmeist 3000Interner Backend-Port; bei Compose normalerweise nicht extern freigeben.
API_PREFIXmeist apiPrefix der API-Routen.
APP_ORIGINvollständige URLÖffentliche Browser-Adresse; Grundlage für Einladungen, Reset- und 2FA-Links.
CORS_ORIGINSeine oder mehrere OriginsErlaubte Browser-Ursprünge, durch Komma getrennt.
TRUST_PROXYtrue, falseHinter Reverse Proxy normalerweise true, damit Client-IP und Rate Limits stimmen.
SWAGGER_ENABLEDtrue, falseBackend-API-Dokumentation; in Produktion normalerweise false.
HTTP_BIND_ADDRESSz. B. 0.0.0.0Bind-Adresse des On-Premises-Frontends im Release-Bundle.
HTTP_PORTz. B. 80, 8088Veröffentlichter HTTP-Port im Release-Bundle.
STATO_TLS_MODEoff, internalSchaltet internes Caddy-TLS im Release-Bundle.
STATO_PUBLIC_HOSTDNS-NameÖffentlicher Name für internes Caddy-TLS.
HTTPS_BIND_ADDRESSz. B. 0.0.0.0Bind-Adresse von Caddy.
HTTPS_PORTmeist 443HTTPS-Port von Caddy.

Datenbank und Migrationen​

VariableStandard / FormatZweck
DB_TYPEpostgresDatenbanktreiber des Backends.
DB_HOSTHostnameDatenbankhost, im Stack meist postgres.
DB_PORTmeist 5432Datenbankport, wichtig bei externer Datenbank.
DB_USERNAMEBenutzernameDatenbankbenutzer des Backends.
DB_PASSWORDSecretPasswort der Backend-Datenbankverbindung.
DB_DATABASEDatenbanknameName der genutzten Datenbank.
POSTGRES_DBstato_prodInitialer Datenbankname des mitgelieferten Postgres-Containers.
POSTGRES_USERstato_userInitialer Benutzer des Postgres-Containers.
POSTGRES_PASSWORDSecretPasswort des Postgres-Containers.
DB_SYNCHRONIZEfalseAutomatische TypeORM-Schema-Synchronisierung; in Produktion immer false.
DB_MIGRATIONS_RUNtrueFührt kontrollierte Migrationen beim Backend-Start aus.
DB_BOOTSTRAP_ON_EMPTYtrue, falseInitialisiert eine leere Datenbank im vorgesehenen Erststartpfad.
DB_LOGGINGfalseSQL-Logging; nur kurzzeitig zur Diagnose aktivieren.
DB_REQUIRE_SSLtrue, falseErzwingt TLS für externe Datenbanken.
DB_SSLtrue, false, requireAktiviert TLS für die DB-Verbindung.
DB_SSL_REJECT_UNAUTHORIZEDtrue, falsePrüft DB-Zertifikate; für vertrauenswürdige Produktionszertifikate true.

Anmeldung, Sitzungen und Sicherheit​

VariableStandard / FormatZweck
JWT_SECRETmindestens 64 zufällige ZeichenSignatur-Secret für Anmeldung und Sessions; stabil halten.
JWT_ACCESS_EXPIRATIONz. B. 15mLaufzeit des Access-Tokens.
JWT_REFRESH_EXPIRATIONz. B. 7dLaufzeit der Refresh-Session.
AUTH_REFRESH_COOKIE_SAMESITElax, strict, noneSameSite-Regel des Refresh-Cookies.
AUTH_REFRESH_COOKIE_SECUREtrue, falseSecure-Flag des Cookies; bei HTTPS true.
INVITE_TOKEN_EXPIRATIONz. B. 24hGültigkeit von Einladungslinks.
RESET_TOKEN_EXPIRATIONz. B. 1hGültigkeit von Passwort-Reset-Links.
PASSWORD_RESET_MODEemail, admin_temp_password, hybridPasswort-Reset per E-Mail, Admin oder beides.
USER_PROVISIONING_MODEemail, localBenutzer:innen per E-Mail einladen oder lokal mit temporärem Passwort anlegen.
AUTH_2FA_ENABLEDtrue, falseAktiviert E-Mail-basierte Zwei-Faktor-Anmeldung; SMTP ist dann Pflicht.
AUTH_2FA_CODE_TTLSekunden, z. B. 600Gültigkeit eines 2FA-Codes.

Siehe auch Einladungen, lokale Zugänge und Passwort-Reset und Zwei-Faktor-Anmeldung per E-Mail.

Rate Limits und Listen​

VariableStandard / FormatZweck
RATE_LIMIT_TTLSekunden, meist 60Zeitfenster des allgemeinen Rate Limits.
RATE_LIMIT_MAXGanzzahl, meist 100Maximale Requests pro Client im allgemeinen Fenster.
AUTH_RATE_LIMIT_TTLSekunden, meist 60Zeitfenster für Login und andere Auth-Endpunkte.
AUTH_RATE_LIMIT_MAXGanzzahl, meist 10Maximale Auth-Requests im Auth-Fenster.
LOGIN_MAX_FAILED_ATTEMPTSmeist 5Fehlversuche bis zur Sperre.
LOGIN_LOCKOUT_MINUTESmeist 10Dauer der temporären Kontosperre.
DEFAULT_PAGE_SIZEz. B. 20Standardgröße paginierter API-Antworten.
MAX_PAGE_SIZEz. B. 100Obergrenze für API-Listen pro Request.

Ersteinrichtung, Branding und Verhalten​

VariableStandard / FormatZweck
SUPERADMIN_EMAILgültige E-MailSuperadmin für den Erststart oder bewussten Reset.
SUPERADMIN_PASSWORDstarkes SecretInitiales Superadmin-Passwort, falls nicht über Browser-Ersteinrichtung gesetzt.
SUPERADMIN_EMAIL_FORCEtrue, falseÜberschreibt bestehende Superadmin-E-Mail nur bei bewusstem Reset.
SUPERADMIN_PASSWORD_FORCEtrue, falseSetzt ein bestehendes Superadmin-Passwort nur bei bewusstem Reset neu.
INITIAL_SETUP_ENABLEDtrue, falseErlaubt bei leerer Datenbank einmalig die Passwortvergabe im Browser.
PUBLIC_APP_NAMEFreitextAnzeigename der Anwendung.
PUBLIC_ORG_NAMEFreitextOptionaler Organisationsname auf der Login-Seite.
PUBLIC_LOGIN_SUBTITLEFreitextUntertitel der Login-Seite.
PUBLIC_LIVE_REFRESH_INTERVAL_MSMillisekunden, z. B. 30000Aktualisierungsintervall für Dashboard, Aktivitäten und Statistik; 0 deaktiviert es.
STATS_OVERVIEW_CACHE_TTL_MSMillisekunden, z. B. 30000Cache-Dauer zusammengefasster Statistikabfragen; 0 deaktiviert sie.

SMTP und E-Mail​

VariableStandard / FormatZweck
SMTP_HOSTHostnameSMTP-Server für Einladungen, Passwort-Reset und 2FA.
SMTP_PORTmeist 587 oder 465SMTP-Port.
SMTP_USERBenutzername oder E-MailSMTP-Anmeldung.
SMTP_PASSSecretSMTP-Passwort.
SMTP_FROMgültige E-MailAbsenderadresse der StatO-Systemmails.

Rechtstexte​

VariableStandard / FormatZweck
LEGAL_CONTENT_DIRContainerpfadAblageort für eingebundene Rechtstexte.
LEGAL_CONTENT_DIR_HOSTHostpfadHost-Verzeichnis, das schreibgeschützt als Rechtstexte eingebunden wird.

Feature-Flags und Seeds​

VariableStandard / FormatZweck
ENABLE_ORG_MOVEtrue, falseAktiviert Organisationsverschiebungen im Backend.
VITE_ENABLE_ORG_MOVEtrue, falseFrontend-Build-Flag für Organisationsverschiebungen.
VITE_ENABLE_DEV_TOOLStrue, falseFrontend-Build-Flag für Dev Tools; Produktion: false.
SEED_ALLOW_PRODtrue, falseErlaubt Seeds ausnahmsweise in produktionsnahen Umgebungen.
SEED_ORGSGanzzahlAnzahl erzeugter Organisationen.
SEED_STAFF_PER_ORGGanzzahlAnzahl erzeugter Mitarbeitender je Organisation.
SEED_ACTIVITIESGanzzahlAnzahl erzeugter Aktivitäten.
SEED_PROJECTS_PER_ORGGanzzahlAnzahl erzeugter Projekte je Organisation.
SEED_CLEARtrue, falseEntfernt frühere Seed-Daten vor einem Seed-Lauf.

Praktische Regeln​

  • Nutze in Produktion DB_SYNCHRONIZE=false, DB_MIGRATIONS_RUN=true, SWAGGER_ENABLED=false und VITE_ENABLE_DEV_TOOLS=false.
  • Ändere APP_ORIGIN und CORS_ORIGINS gemeinsam und immer auf die tatsächlich verwendete Browser-Adresse.
  • Änderungen an VITE_*-Variablen benötigen ein neu gebautes Frontend-Image; reine Backend-Variablen können meist per Container-Neustart wirksam werden.
  • Bei externer Datenbank müssen Host, Port und TLS-Optionen zur Vorgabe des Datenbank-Hostings passen.