Zum Hauptinhalt springen

Konfigurationsreferenz

Vollständige Referenz aller verfügbaren Umgebungsvariablen für Backend und Frontend. Die Variablen werden über die Konfigurationsdateien im Root-Verzeichnis des Projekts konfiguriert: .env (Backend, Worker, Scheduler) und frontend.env (Frontend).

Die für den Start erforderlichen Variablen sind in der OpenVLE-Installationsanleitung beschrieben. Diese Seite dient als Nachschlagewerk für alle verfügbaren Optionen.

In den Tabellen bedeutet Ja = immer erforderlich und Ja* = erforderlich, wenn das jeweilige Feature aktiviert ist.

info

Alle Backend-Variablen müssen in Anführungszeichen (" ") gesetzt werden, da es andernfalls beim Start zu Parsing-Fehlern kommt. Nach jeder Änderung müssen die Container neu gestartet werden: docker compose down && docker compose up -d.

Backend (.env)

Allgemein

Grundlegende Einstellungen der Anwendung. CORS_ORIGINS ist die einzige erforderliche Variable in dieser Kategorie — sie muss die URL enthalten, unter der das Frontend erreichbar ist, da der Browser sonst API-Anfragen blockiert. Die übrigen Variablen steuern den angezeigten Projektnamen, Kontaktinformationen und die Umgebung (Produktion/Entwicklung).

VariableStandardwertErforderlichBeschreibung
API_HEALTH_TOKEN""NeinToken zur Authentifizierung von Health-Check-Requests
APP_ENV"prod"NeinUmgebung (z. B. prod, dev)
CONTACT_MAIL"support@inett.de"NeinKontakt-E-Mail
CONTACT_NAME"inett GmbH"NeinName der Kontaktperson/Organisation
CONTACT_URL"https://inett.de"NeinKontakt-Website
CORS_ORIGINS[""]JaErlaubte Ursprünge für CORS (URL des Frontends)
DOCS_ENABLEDFalseNeinOpenAPI-Endpoints (/docs, /redoc, /openapi.json) aktivieren
PROJECT_DESCRIPTION"Kursverwaltungssoftware - Backend"NeinProjektbeschreibung
PROJECT_NAME"OpenVLE"NeinInterner Projektname
PROJECT_TITLE"OpenVLE"NeinAngezeigter Titel in der Oberfläche
PROJECT_VERSION1.0NeinProjektversion

Authentifizierung

Steuert die Benutzersitzungen und Token-basierte Authentifizierung. AUTH_SECRET und SESSION_SECRET_TOKEN müssen auf sichere, zufällige Zeichenketten gesetzt werden — sie schützen die JWT-Tokens und Sitzungsdaten. Ein Wechsel von AUTH_SECRET meldet alle aktiven Benutzer sofort ab.

VariableStandardwertErforderlichBeschreibung
AUTH_ACCESS_TOKE_EXPIRE_MINUTES480NeinAblaufzeit für Access-Tokens (in Minuten)
AUTH_ALOGORITHM"HS256"NeinAlgorithmus für JWT-Authentifizierung
AUTH_SECRET""JaGeheimer Schlüssel für JWT-Authentifizierung
SESSION_SECRET_TOKEN""JaGeheimtoken für Sitzungsverwaltung

Datenbank — MariaDB

MariaDB ist die primäre relationale Datenbank und speichert alle Kernentitäten: Benutzer, Rollen, Berechtigungen, Umgebungen, Veranstaltungen, VMs, VM-Vorlagen und Verbindungen. Die Verbindungsdaten müssen mit der MariaDB-Instanz im Docker-Compose-Stack übereinstimmen. Die Pool-Einstellungen steuern, wie viele gleichzeitige Datenbankverbindungen das Backend offen hält — die Standardwerte sind für die meisten Installationen ausreichend.

VariableStandardwertErforderlichBeschreibung
MARIADB_CHARSET"utf8mb4"NeinZeichensatz
MARIADB_DATABASE"project"JaName der Datenbank
MARIADB_HOST"db"JaHostname des MariaDB-Servers
MARIADB_IMAGE_TAG"11.2"NeinDocker-Image-Tag
MARIADB_PASSWORD"project"JaPasswort
MARIADB_POOL_ACQUIRE15000NeinAcquire-Timeout (ms)
MARIADB_POOL_IDLE60000NeinIdle-Timeout (ms)
MARIADB_POOL_MAX12NeinMaximale Verbindungen im Pool
MARIADB_POOL_MIN2NeinMinimale Verbindungen im Pool
MARIADB_PORT3306JaPort der MariaDB
MARIADB_QUERY_RESULT_LIMIT200NeinMax. Datensätze pro Abfrage
MARIADB_ROOT_PASSWORD""JaRoot-Passwort für die MariaDB-Instanz
MARIADB_TIMEOUT120NeinVerbindungs-Timeout (Sekunden)
MARIADB_TYPE"mysql"JaDatenbanktyp
MARIADB_USER"project"JaBenutzername

Datenbank — MongoDB

MongoDB speichert Aktivitäten, System-Events und Audit-Logs. Diese Daten werden für die Aktivitätsübersicht in der Benutzeroberfläche verwendet. Die Verbindungsdaten müssen mit der MongoDB-Instanz im Docker-Compose-Stack übereinstimmen.

VariableStandardwertErforderlichBeschreibung
MONGODB_DATABASE"project"JaName der Datenbank
MONGODB_HOST"localhost"JaHostname des MongoDB-Servers
MONGODB_IMAGE_TAG"jammy"NeinDocker-Image-Tag
MONGODB_PASSWORD"project"JaPasswort
MONGODB_PORT27017JaPort
MONGODB_USER"project"JaBenutzername

Datenbank — Redis

Redis dient als Task-Queue und Cache für die Worker- und Scheduler-Prozesse. Alle asynchronen Aufgaben (VM-Operationen, E-Mail-Versand, periodische Tasks) werden über Redis-Queues verteilt.

VariableStandardwertErforderlichBeschreibung
REDIS_DATABASE0JaDatenbankindex
REDIS_HOST"localhost"JaHostname des Redis-Servers
REDIS_IMAGE_TAG"latest"NeinDocker-Image-Tag
REDIS_PASSWORD"password"JaPasswort
REDIS_PORT6379JaPort
REDIS_USERNAME"username"JaBenutzername

Proxmox VE

Konfiguriert die Verbindung zu Proxmox VE, dem Hypervisor der die virtuellen Maschinen verwaltet. Die Zugangsdaten (Benutzer, Token) müssen mit der Einrichtung aus der Proxmox VE Integration übereinstimmen.

Die Netzwerk- und VM-Einstellungen (PVE_VMS_*) bestimmen, wie neu erstellte VMs konfiguriert werden: in welchem Pool sie landen, welches Netzwerk und Subnetz sie verwenden, und ob Cloud-Init zur automatischen Konfiguration eingesetzt wird.

VariableStandardwertErforderlichBeschreibung
PVE_API_POLL_RATE5NeinAPI-Abrufintervall (Sekunden)
PVE_CI_DRIVE"cephssd"NeinStorage für Cloud-Init-Drive
PVE_CI_ENABLEDFalseNeinCloud-Init bei VM-Erstellung aktivieren
PVE_FQDN"domain.intern"JaFQDN des Proxmox-Servers
PVE_HOSTNAME"proxmox:8006"JaHostname und Port des Proxmox-Servers
PVE_TOKEN_NAME"my-token"JaName des API-Tokens
PVE_TOKEN_VALUE"my-token-secret"JaGeheimer Wert des API-Tokens
PVE_USER"user@pve"JaProxmox-Benutzer
PVE_VERIFY_SSLTrueNeinSSL-Zertifikate verifizieren
PVE_VM_SUBNET"0.0.0.0/16"JaSubnetz für VMs
PVE_VMS_CIPASSWORD""NeinCloud-Init-Passwort
PVE_VMS_CIUPGRADEFalseNeinSystem-Upgrade beim VM-Start
PVE_VMS_CIUSER"user"NeinCloud-Init-Benutzername
PVE_VMS_DNS_DOMAIN""NeinDNS-Domain für VMs
PVE_VMS_DNS_SERVER"1.1.1.1"NeinDNS-Server für VMs
PVE_VMS_EXCLUDED_IPS""NeinVon IP-Zuteilung ausgeschlossene Adressen. Kommaseparierte Liste aus IPs, IP-Bereichen (1-254) und CIDRs (/24). Standard: 172.20.0.200, 172.20.0.1-172.20.0.254, 172.20.100.0/24
PVE_VMS_FULL_CLONE_DEFAULTFalseNeinStandardmäßig Full Clones statt Linked Clones
PVE_VMS_GATEWAY""NeinGateway für VM-Netzwerke
PVE_VMS_NETWORK""JaNetzwerkkonfiguration für VMs
PVE_VMS_POOL"OpenVLE-VMs"JaProxmox-Pool für verwaltete VMs
PVE_VMS_SMBIOS_METADATATrueNeinVM-Metadaten über SMBIOS an Gastbetriebssystem übergeben
PVE_VMS_SUBNET"/24"NeinSubnetzgröße

E-Mail / SMTP

OpenVLE versendet System-E-Mails für verschiedene Ereignisse: Veranstaltungsbenachrichtigungen und Statusmeldungen zu VM-Operationen. Ein funktionierender SMTP-Server ist für den produktiven Betrieb erforderlich. MAIL_MAX_AGE_WEEKS steuert, wie lange versendete E-Mails in der Datenbank aufbewahrt werden, bevor sie automatisch gelöscht werden.

VariableStandardwertErforderlichBeschreibung
MAIL_MAX_AGE_WEEKS4NeinAufbewahrungsdauer für E-Mails (Wochen)
SMTP_FROM_MAIL"OpenVLE@example.com"JaAbsenderadresse
SMTP_FROM_NAME"OpenVLE"JaAnzeigename des Absenders
SMTP_HOST"localhost"JaHostname des SMTP-Servers
SMTP_METHOD"ssl"JaVerbindungsmethode (SSL/TLS)
SMTP_PASSWORD"password"JaSMTP-Passwort
SMTP_PORT465JaSMTP-Port
SMTP_USERNAME"username"JaSMTP-Benutzername

Veranstaltungen

Steuert das automatische Deployment und die Bereinigung von Veranstaltungen. Die Vorbereitungszeit (PREP_TIME_DAYS) bestimmt, wie viele Tage vor dem Start- bzw. nach dem Enddatum einer Veranstaltung die automatischen Prozesse (VM-Erstellung, VM-Löschung) ausgelöst werden. Mit EVENTS_START_REQUIRE_STUDENTS kann festgelegt werden, ob eine Veranstaltung nur gestartet wird, wenn mindestens ein Teilnehmer zugewiesen ist.

VariableStandardwertErforderlichBeschreibung
EVENTS_END_PREP_TIME_DAYS7NeinTage vor Veranstaltungsende für Nachbereitungen
EVENTS_START_PREP_TIME_DAYS7NeinTage vor Veranstaltungsbeginn für Vorbereitungen
EVENTS_START_REQUIRE_STUDENTSFalseNeinVeranstaltung erst starten wenn Teilnehmer vorhanden

Worker

Der Worker-Prozess führt asynchrone Hintergrundaufgaben aus: VM-Operationen (Klonen, Starten, Stoppen), E-Mail-Versand und Guacamole-Verbindungsverwaltung. Der Scheduler löst periodische Aufgaben aus, z. B. die regelmäßige Synchronisation von Proxmox-Node-Informationen. WORKER_MAX_RETRY steuert, wie oft ein fehlgeschlagener Job automatisch wiederholt wird, bevor er als dauerhaft fehlgeschlagen markiert wird.

VariableStandardwertErforderlichBeschreibung
WORKER_MAX_RETRY5NeinMax. Wiederholungen für fehlgeschlagene Jobs
WORKER_PVE_PERIODIC_INTERVAL60NeinIntervall periodischer Proxmox-Jobs (Sekunden)

Apache Guacamole (optional)

Optional

Diese Variablen sind nur erforderlich, wenn Apache Guacamole für Remote-Desktop-Zugang verwendet wird. Ohne Guacamole kann OpenVLE weiterhin zum Verwalten von VMs und VM-Vorlagen genutzt werden — der webbasierte Remote-Desktop-Zugang steht dann jedoch nicht zur Verfügung.

OpenVLE verbindet sich über diese Zugangsdaten mit der Guacamole-Datenbank, um Verbindungen automatisch anzulegen, zu aktualisieren und zu löschen. Der CONNECTIONS_PREFIX ermöglicht es, Verbindungen verschiedener OpenVLE-Instanzen auf demselben Guacamole-Server voneinander zu unterscheiden.

VariableStandardwertErforderlichBeschreibung
GUACAMOLE_CONNECTIONS_PREFIX""NeinPräfix für automatisch erstellte Verbindungen
GUACAMOLE_CONNECTIONS_PREFIX_EVENTSFalseNeinPräfix auch für Veranstaltungs-Verbindungen
GUACAMOLE_DB"mysql"Ja*Datenbanktyp von Guacamole
GUACAMOLE_PASSWORD"OpenVLE"Ja*Passwort des OpenVLE-Accounts
GUACAMOLE_URL"http://openvle-guacamole:8080"Ja*URL des Guacamole-Servers
GUACAMOLE_USER"OpenVLE"Ja*Benutzername des OpenVLE-Accounts in Guacamole

Verbindungsparameter — Allgemein

Diese Variablen steuern die Standardwerte für automatisch erstellte Guacamole-Verbindungen. Sie werden beim Anlegen neuer Verbindungen als Default-Konfiguration verwendet und können pro Verbindungstyp (RDP, VNC, SSH) angepasst werden.

VariableStandardwertBeschreibung
GUACAMOLE_CONN_TIMEZONEEurope/BerlinZeitzone für Verbindungen

Verbindungsparameter — RDP

Standardwerte für RDP-Verbindungen (Remote Desktop Protocol). Diese Einstellungen steuern die Darstellungsqualität, Dateitransfer-Berechtigungen und das Tastaturlayout für den Remote-Desktop-Zugang.

VariableStandardwertBeschreibung
GUACAMOLE_RDP_COLOR_DEPTH32Farbtiefe in Bit (8, 16, 24 oder 32)
GUACAMOLE_RDP_DISABLE_BITMAP_CACHINGFalseBitmap-Caching deaktivieren
GUACAMOLE_RDP_DISABLE_DOWNLOADTrueDateidownload vom Remote-Desktop unterbinden
GUACAMOLE_RDP_DISABLE_GFXFalseGFX-Pipeline deaktivieren
GUACAMOLE_RDP_DISABLE_OFFSCREEN_CACHINGFalseOffscreen-Caching deaktivieren
GUACAMOLE_RDP_DISABLE_UPLOADTrueDateiupload zum Remote-Desktop unterbinden
GUACAMOLE_RDP_ENABLE_AUDIO_INPUTFalseMikrofon-Umleitung aktivieren
GUACAMOLE_RDP_ENABLE_DESKTOP_COMPOSITIONFalseDesktop-Composition (Aero) aktivieren
GUACAMOLE_RDP_ENABLE_DRIVEFalseLaufwerksumleitung (Dateitransfer) aktivieren
GUACAMOLE_RDP_ENABLE_FONT_SMOOTHINGFalseSchriftglättung (ClearType) aktivieren
GUACAMOLE_RDP_ENABLE_FULL_WINDOW_DRAGTrueFensterinhalt beim Verschieben anzeigen
GUACAMOLE_RDP_ENABLE_MENU_ANIMATIONSFalseMenü-Animationen aktivieren
GUACAMOLE_RDP_ENABLE_PRINTINGFalseDruckerumleitung aktivieren
GUACAMOLE_RDP_ENABLE_THEMINGFalseWindows-Theme-Effekte aktivieren
GUACAMOLE_RDP_ENABLE_WALLPAPERTrueDesktop-Hintergrundbild anzeigen
GUACAMOLE_RDP_IGNORE_CERTTrueRDP-Serverzertifikat nicht validieren
GUACAMOLE_RDP_PRINTER_NAMEPrinter-NameName des umgeleiteten Druckers
GUACAMOLE_RDP_RESIZE_METHODreconnectMethode zur Fenstergrößenanpassung (reconnect oder display-update)
GUACAMOLE_RDP_SECURITY""RDP-Sicherheitsmodus (leer = automatisch, nla, tls, rdp, any)
GUACAMOLE_RDP_SERVER_LAYOUTde-de-qwertzTastaturlayout (z. B. de-de-qwertz, en-us-qwerty)
Darstellungsqualität vs. Performance

Die Optionen für Wallpaper, Desktop-Composition, Font-Smoothing, Theming und Menü-Animationen verbessern die visuelle Darstellung, erhöhen aber die benötigte Bandbreite. Für Verbindungen mit begrenzter Bandbreite empfiehlt es sich, diese Optionen deaktiviert zu lassen.

Dateitransfer

Standardmäßig sind Upload und Download deaktiviert (DISABLE_DOWNLOAD=True, DISABLE_UPLOAD=True). Aktiviere diese Optionen nur, wenn Dateitransfer zwischen Benutzer und VM gewünscht ist. Dafür muss zusätzlich ENABLE_DRIVE=True gesetzt werden.

Verbindungsparameter — VNC

Standardwerte für VNC-Verbindungen (Virtual Network Computing).

VariableStandardwertBeschreibung
GUACAMOLE_VNC_COLOR_DEPTH32Farbtiefe in Bit

Verbindungsparameter — SSH / SFTP

Standardwerte für SSH- und SFTP-Verbindungen. Die SERVER_ALIVE_INTERVAL-Werte steuern das Keep-Alive-Intervall, um inaktive Verbindungen vor einem Timeout zu bewahren.

VariableStandardwertBeschreibung
GUACAMOLE_SFTP_SERVER_ALIVE_INTERVAL30Keep-Alive-Intervall für SFTP-Verbindungen (Sekunden)
GUACAMOLE_SSH_SERVER_ALIVE_INTERVAL30Keep-Alive-Intervall für SSH-Verbindungen (Sekunden)

LDAP (optional)

Optional

Diese Variablen sind nur erforderlich, wenn Benutzer sich über einen bestehenden LDAP-Server (z. B. Active Directory, OpenLDAP) anmelden sollen. Bei aktiviertem LDAP können sich Benutzer mit ihren bestehenden Zugangsdaten anmelden, ohne ein separates OpenVLE-Passwort zu benötigen.

VariableStandardwertErforderlichBeschreibung
LDAP_ATTR_MAIL"mail"NeinLDAP-Attribut für E-Mail
LDAP_ATTR_USER"uid"NeinLDAP-Attribut für Benutzername
LDAP_DN_PEOPLE"ou=people,dc=org,dc=de"Ja*DN für Personensuche
LDAP_ENABLEDFalseNeinLDAP-Authentifizierung aktivieren
LDAP_HOST"localhost"Ja*Hostname des LDAP-Servers
LDAP_PORT389Ja*Port
LDAP_VERIFY_SSLTrueNeinSSL-Zertifikate verifizieren

OIDC (optional)

Optional

Diese Variablen sind nur erforderlich, wenn Benutzer sich über einen OpenID Connect Provider (z. B. Keycloak, Azure AD, Google) anmelden sollen. OIDC ermöglicht Single Sign-On (SSO) — Benutzer melden sich über den externen Identity Provider an und werden bei Bedarf automatisch in OpenVLE registriert (OIDC_ENROLL_USERS).

VariableStandardwertErforderlichBeschreibung
OIDC_ALLOWED_REDIRECT_URLS[""]NeinErlaubte Redirect-URLs
OIDC_ATTR_EMAIL"email"NeinAttribut für E-Mail
OIDC_ATTR_NAME"name"NeinAttribut für Anzeigename
OIDC_ATTR_USERNAME"sub"NeinAttribut für Benutzername
OIDC_CLIENT_ID""Ja*Client-ID
OIDC_CLIENT_SECRET""Ja*Client-Secret
OIDC_ENABLEDFalseNeinOIDC-Authentifizierung aktivieren
OIDC_ENROLL_USERSTrueNeinBenutzer beim ersten Login automatisch registrieren
OIDC_SCOPES"openid email profile"NeinOIDC-Scopes
OIDC_URL_METADATA""Ja*URL des OIDC-Metadaten-Dokuments

Moodle (optional)

Optional

Diese Variablen sind nur erforderlich, wenn OpenVLE mit einer Moodle-Instanz verbunden werden soll. Bei Nichtverwendung werden sämtliche Moodle-bezogenen Elemente in der Benutzeroberfläche nicht angezeigt. Die Integration ist standardmäßig deaktiviert.

VariableStandardwertErforderlichBeschreibung
MOODLE_COURSE_VISIBLE"True"NeinSichtbarkeit von duplizierten Moodle-Kursen
MOODLE_DELETE_COURSE_ON_EVENT_DELETE"False"NeinMoodle-Kurs löschen wenn Veranstaltung gelöscht wird
MOODLE_ENABLEDFalseNeinMoodle-Integration aktivieren
MOODLE_SYNC_TIMEOUT"10"NeinTimeout für Synchronisationsaufgaben (Sekunden)
MOODLE_TIMEOUT"30"NeinTimeout für API-Anfragen (Sekunden)
MOODLE_TOKEN""Ja*Web Services API Token
MOODLE_URL""Ja*URL der Moodle-Instanz (ohne trailing slash)
MOODLE_USER_AUTH"manual"NeinAuthentifizierungsmethode für neu erstellte Moodle-Benutzer (z. B. ldap, oauth2, manual)
MOODLE_USER_MATCH_FIELD"email"NeinFeld zum Abgleich von OpenVLE- und Moodle-Benutzern (email oder username)
MOODLE_VERIFY_SSLTrueNeinSSL-Zertifikat verifizieren

Sentry (optional)

Optional

Diese Variablen sind nur erforderlich, wenn Sentry für Fehlerüberwachung und Performance-Monitoring aktiviert werden soll. Sentry erfasst automatisch Exceptions, Traces und Performance-Profile aus Backend und Worker — sowohl in Entwicklungs- als auch in Produktionsumgebungen. OpenVLE stellt keinen öffentlichen Sentry-Endpunkt bereit. Du kannst hier die DSN-Werte deiner eigenen Sentry-Instanz (On-Premise oder SaaS) angeben.

VariableStandardwertErforderlichBeschreibung
SENTRY_BACKEND_DSN""Ja*DSN für Backend-Projekt
SENTRY_BACKEND_ENABLE_TRACINGTrueNeinTracing aktivieren
SENTRY_BACKEND_ENABLEDFalseNeinSentry für Backend aktivieren
SENTRY_BACKEND_PROFILES_SAMPLE_RATE1.0NeinAbtastrate für Profile
SENTRY_BACKEND_TRACES_SAMPLE_RATE1.0NeinAbtastrate für Traces
SENTRY_ENV"dev"NeinUmgebung (z. B. dev, prod)
SENTRY_WORKER_DSN""Ja*DSN für Worker-Projekt
SENTRY_WORKER_ENABLE_TRACINGTrueNeinTracing aktivieren
SENTRY_WORKER_ENABLEDFalseNeinSentry für Worker aktivieren
SENTRY_WORKER_PROFILES_SAMPLE_RATE1.0NeinAbtastrate für Profile
SENTRY_WORKER_TRACES_SAMPLE_RATE1.0NeinAbtastrate für Traces

Frontend

Die Frontend-Konfiguration erfolgt über die frontend.env. Nur VITE_BACKEND_URL ist erforderlich — sie muss auf die URL des Backends zeigen, über die das Frontend API-Anfragen stellt (z. B. https://openvle.example.com/v1). Alle anderen Variablen betreffen die optionale Sentry-Integration für clientseitiges Fehler-Tracking im Browser.

VariableStandardwertErforderlichBeschreibung
VITE_BACKEND_URL'http://localhost:8000/v1'JaBackend-API-URL
VITE_SENTRY_DSN''NeinSentry-DSN
VITE_SENTRY_ENABLED'false'NeinSentry aktivieren
VITE_SENTRY_ENV'dev'NeinSentry-Umgebung
VITE_SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE1.0NeinSamplerate für Fehlerwiederholungen
VITE_SENTRY_REPLAYS_SESSION_SAMPLE_RATE1.0NeinSamplerate für Sitzungswiederholungen
VITE_SENTRY_REPORT_ERROR_ENABLED'false'NeinFehlerberichterstattung aktivieren
VITE_SENTRY_REPORT_USER_ENABLED'false'NeinBenutzer-Reporting aktivieren
VITE_SENTRY_TRACE_PROPAGATION_TARGETS['localhost']NeinZiele für Trace-Verbreitung
VITE_SENTRY_TRACES_SAMPLE_RATE1.0NeinAbtastrate für Traces
VITE_SENTRY_TRANSMIT_USER_DETAILS'false'NeinDetaillierte Benutzerinformationen übertragen

Fehlerbehebung

ProblemLösung
Backend startet nicht nach .env-ÄnderungStelle sicher, dass alle Werte in Anführungszeichen stehen. Fehlende Quotes verursachen Parsing-Fehler.
Verbindung zur Datenbank schlägt fehlPrüfe ob MARIADB_HOST, MARIADB_PORT, MARIADB_USER und MARIADB_PASSWORD korrekt gesetzt sind und der Datenbank-Container läuft.
CORS-Fehler im BrowserStelle sicher, dass CORS_ORIGINS die URL deines Frontends enthält (z. B. ["https://openvle.example.com"]).
Variablenänderung zeigt keine WirkungContainer müssen nach .env-Änderungen neu gestartet werden: docker compose down && docker compose up -d.