Zum Hauptinhalt springen

Umgebungsvariablen

edulution Moodle wird vollständig über Umgebungsvariablen konfiguriert. Diese Referenz listet alle verfügbaren Optionen.

Allgemein

VariableStandardBeschreibung
ENVIRONMENTproductionUmgebung: production oder development
TIMEZONEEurope/BerlinZeitzone des Containers
DATA_PATH/srv/docker/moodleBasis-Pfad für alle Daten

Moodle-Grundkonfiguration

VariableStandardBeschreibung
MOODLE_URL-Erforderlich. Vollständige URL zu Moodle
MOODLE_SITE_NAMEMoodleName der Moodle-Site
MOODLE_SITE_SHORTNAMEmoodleKurzname der Site
MOODLE_ADMIN_USERadminAdmin-Benutzername
MOODLE_ADMIN_PASSWORD(generiert)Admin-Passwort
MOODLE_ADMIN_EMAILadmin@localhostAdmin-E-Mail-Adresse
MOODLE_LANGdeStandard-Sprache
MOODLE_VERSIONMOODLE_405_STABLEMoodle-Version (Branch)

Moodle-Pfade

VariableStandardBeschreibung
MOODLE_PATH/var/www/html/moodleMoodle-Installationspfad
MOODLE_DATA_PATH/var/www/moodledataMoodledata-Verzeichnis
MOODLE_CACHE_DIR/var/www/moodledata/cacheCache-Verzeichnis

Moodle-Performance

VariableStandardBeschreibung
MOODLE_CACHE_STORESredisCache-Speicher: redis, file, memcached
MOODLE_SESSION_HANDLERredisSession-Handler: redis, file, database
MOODLE_LOCK_FACTORYredisLock-Factory: redis, file, database

Datenbank

VariableStandardBeschreibung
MARIADB_HOSTdbDatenbank-Host
MARIADB_PORT3306Datenbank-Port
MARIADB_DATABASEmoodleDatenbank-Name
MARIADB_USERmoodleDatenbank-Benutzer
MARIADB_PASSWORD-Datenbank-Passwort
MARIADB_PASSWORD_FILE-Pfad zu Passwort-Datei (für Secrets)
MARIADB_ROOT_PASSWORD-Root-Passwort
MARIADB_ROOT_PASSWORD_FILE-Pfad zu Root-Passwort-Datei

Datenbank-Optionen

VariableStandardBeschreibung
DB_PREFIXmdl_Tabellen-Präfix
DB_COLLATIONutf8mb4_unicode_ciDatenbank-Collation
DB_MAX_CONNECTIONS100Maximale Verbindungen

Redis

VariableStandardBeschreibung
REDIS_HOSTredisRedis-Host
REDIS_PORT6379Redis-Port
REDIS_PASSWORD-Redis-Passwort (optional)
REDIS_PREFIXmoodle_Key-Präfix
REDIS_SESSION_DB0Redis-DB für Sessions
REDIS_CACHE_DB1Redis-DB für Cache
REDIS_LOCK_DB2Redis-DB für Locks

Keycloak/OAuth2

OAuth2-Client (für SSO)

VariableStandardBeschreibung
KEYCLOAK_URL-Erforderlich. Keycloak-URL
KEYCLOAK_REALM-Erforderlich. Realm-Name
KEYCLOAK_CLIENT_IDmoodleClient-ID für SSO
KEYCLOAK_CLIENT_SECRET-Client-Secret
KEYCLOAK_CLIENT_SECRET_FILE-Pfad zu Secret-Datei

OAuth2-Optionen

VariableStandardBeschreibung
OAUTH2_ENABLEDtrueOAuth2 aktivieren
OAUTH2_ISSUER_NAMEKeycloakAngezeigter Name
OAUTH2_LOGIN_TEXTLogin mit SSOButton-Text
OAUTH2_LINK_BY_EMAILtrueBenutzer via E-Mail verknüpfen
OAUTH2_CREATE_USERSfalseBenutzer automatisch erstellen

Sync Service Account

VariableStandardBeschreibung
KEYCLOAK_SYNC_CLIENT_IDmoodle-syncSync-Client-ID
KEYCLOAK_SYNC_CLIENT_SECRET-Sync-Client-Secret
KEYCLOAK_SYNC_CLIENT_SECRET_FILE-Pfad zu Secret-Datei

Synchronisation

Allgemein

VariableStandardBeschreibung
SYNC_ENABLEDtrueSynchronisation aktivieren
SYNC_INTERVAL300Sync-Intervall in Sekunden
SYNC_ON_STARTUPtrueSync beim Start ausführen
SYNC_LOG_LEVELINFOLog-Level: DEBUG, INFO, WARNING, ERROR

Benutzer-Sync

VariableStandardBeschreibung
SYNC_USERStrueBenutzer synchronisieren
SYNC_ROLESrole-teacher,role-student,role-schooladministratorZu synchronisierende Rollen (kommagetrennt)
SYNC_USER_ATTRIBUTESfirstName,lastName,emailZu synchronisierende Attribute
SYNC_USER_FILTER-LDAP-Filter für Benutzer

Gruppen-Sync

VariableStandardBeschreibung
SYNC_GROUPStrueGruppen synchronisieren
SYNC_GROUP_PREFIX-Nur Gruppen mit diesem Präfix
SYNC_GROUP_ATTRIBUTE-Attribut für Gruppen-Filter
SYNC_CREATE_COURSEStrueKurse automatisch erstellen
SYNC_COURSE_CATEGORYSynced CoursesKategorie für erstellte Kurse

Rollen-Mapping

VariableStandardBeschreibung
SYNC_ROLE_TEACHEReditingteacherMoodle-Rolle für role-teacher
SYNC_ROLE_STUDENTstudentMoodle-Rolle für role-student
SYNC_ROLE_ADMINmanagerMoodle-Rolle für role-schooladministrator

Soft-Delete

VariableStandardBeschreibung
SYNC_SOFT_DELETEtrueSoft-Delete aktivieren
SYNC_SOFT_DELETE_DAYS30Tage bis zur endgültigen Löschung
SYNC_SUSPEND_DELETEDtrueGelöschte Benutzer suspendieren

Plugins

VariableStandardBeschreibung
PLUGIN_CONFIG/srv/config/plugins.jsonPfad zur Plugin-Konfiguration
PLUGIN_STATE_FILE/srv/data/plugin_state.jsonState-Datei für Plugin-Manager
PLUGIN_INSTALL_DELAY3Verzögerung zwischen Plugin-Installationen
PLUGIN_SYNC_ON_STARTUPtruePlugins beim Start synchronisieren

Admin-UI

VariableStandardBeschreibung
ADMIN_UI_ENABLEDtrueAdmin-UI aktivieren
ADMIN_UI_PATH/moodle-adminURL-Pfad zur Admin-UI
ADMIN_UI_PORT8081Port für Admin-UI
ADMIN_UI_USERNAMEadminAdmin-UI Benutzername
ADMIN_UI_PASSWORD-Admin-UI Passwort
ADMIN_UI_PASSWORD_FILE-Pfad zu Passwort-Datei

Backup

VariableStandardBeschreibung
BACKUP_ENABLEDtrueAutomatische Backups aktivieren
BACKUP_SCHEDULE0 2 * * *Cron-Ausdruck für Backup-Zeitplan
BACKUP_PATH/srv/backupsBackup-Verzeichnis
BACKUP_RETENTION_DAYS30Tage bis zur Löschung alter Backups
BACKUP_COMPRESSIONgzipKompression: gzip, bzip2, none
BACKUP_INCLUDE_DBtrueDatenbank in Backup einschließen
BACKUP_INCLUDE_DATAtrueMoodledata in Backup einschließen

E-Mail

VariableStandardBeschreibung
SMTP_HOST-SMTP-Server
SMTP_PORT587SMTP-Port
SMTP_USER-SMTP-Benutzername
SMTP_PASSWORD-SMTP-Passwort
SMTP_SECUREtlsVerschlüsselung: tls, ssl, none
SMTP_FROM-Absender-Adresse
SMTP_FROM_NAMEMoodleAbsender-Name

PHP-Konfiguration

VariableStandardBeschreibung
PHP_MEMORY_LIMIT512MMemory-Limit
PHP_MAX_EXECUTION_TIME300Max. Ausführungszeit
PHP_MAX_INPUT_TIME300Max. Input-Zeit
PHP_POST_MAX_SIZE100MMax. POST-Größe
PHP_UPLOAD_MAX_FILESIZE100MMax. Upload-Größe
PHP_MAX_INPUT_VARS5000Max. Input-Variablen
PHP_OPCACHE_ENABLE1OPcache aktivieren
PHP_OPCACHE_MEMORY256OPcache Memory (MB)

Sicherheit

VariableStandardBeschreibung
MOODLE_SECURE_COOKIEStrueSichere Cookies erzwingen
MOODLE_SSL_PROXYtrueHinter SSL-Proxy
MOODLE_CRON_PASSWORD-Passwort für Web-Cron
MOODLE_PASSWORD_POLICYtruePasswort-Policy aktivieren

Logging

VariableStandardBeschreibung
LOG_LEVELINFOContainer-Log-Level
LOG_FORMATjsonLog-Format: json, text
LOG_PATH/var/log/moodleLog-Verzeichnis
LOG_ROTATIONdailyLog-Rotation: daily, weekly, monthly
LOG_RETENTION_DAYS30Log-Aufbewahrung in Tagen

Webhook-Benachrichtigungen

VariableStandardBeschreibung
WEBHOOK_URL-Webhook-URL für Benachrichtigungen
WEBHOOK_ON_ERRORtrueBenachrichtigung bei Fehlern
WEBHOOK_ON_SYNCfalseBenachrichtigung nach Sync
WEBHOOK_ON_BACKUPfalseBenachrichtigung nach Backup

Migration

VariableStandardBeschreibung
MIGRATION_MODEfalseMigrationsmodus aktivieren
MIGRATION_OLD_URL-URL der alten Installation
MIGRATION_URL_REPLACEfalseURLs automatisch ersetzen

Beispiel .env-Datei

# Basis
ENVIRONMENT=production
TIMEZONE=Europe/Berlin
MOODLE_URL=https://moodle.schule.de
MOODLE_SITE_NAME=Unsere Schule Moodle

# Datenbank
MARIADB_PASSWORD=geheim123
MARIADB_ROOT_PASSWORD=supergeheim456

# Keycloak
KEYCLOAK_URL=https://sso.schule.de
KEYCLOAK_REALM=schule
KEYCLOAK_CLIENT_SECRET=abc123...
KEYCLOAK_SYNC_CLIENT_SECRET=xyz789...

# Sync
SYNC_ENABLED=true
SYNC_INTERVAL=300
SYNC_GROUP_PREFIX=moodle_

# Backup
BACKUP_ENABLED=true
BACKUP_SCHEDULE=0 2 * * *

Secrets-Management

Für sensible Daten empfehlen wir die Verwendung von Docker Secrets:

secrets:
moodle_db_password:
file: ./secrets/db_password

Und in der .env:

MARIADB_PASSWORD_FILE=/run/secrets/moodle_db_password

:::tip Best Practice Verwenden Sie immer _FILE-Varianten für Passwörter in Produktionsumgebungen. :::