Konfiguration
parcours wird größtenteils über Umgebungsvariablen konfiguriert. Komplexere Konfigurationen sind zusätzlich über ein Python-Modul möglich.
Umgebungsvariablen, die mit ❗ gekennzeichnet sind, müssen gesetzt werden. Die mit 👀 gekennzeichneten sollten zumindest überprüft werden.
Umgebungsvariablen der Anwendung
❗ PARCOURS_SECRET_KEY
Eine passwortähnliche Zeichenfolge mit hoher Entropie. Dieser wird zur Verschlüsselung von Sitzungen verwendet.
❗ PARCOURS_ALLOWED_HOSTS
Der Hostname, unter dem parcours arbeitet (z.B. parcours.example.org
). Mehrere Einträge können durch ein Komma getrennt werden.
❗ PARCOURS_DATABASE_URL
Datenbank-URL für den Zugriff auf die Datenbank. Das Format wird in der dj_database_url Dokumentation beschrieben.
parcours* unterstützt offiziell nur PostgreSQL.
👀 PARCOURS_EMAIL_DEFAULT_FROM
Standard-E-Mail-Adresse für den From
-Header, die in von parcours versendeten E-Mails verwendet wird.
👀 PARCOURS_EMAIL_SMTP
Der Mailserver, der für den Versand von E-Mails verwendet wird. Muss als URL angegeben werden.
Beispiele:
smtp+tls://user:pw@mail.example.org:465?timeout=10
smtp+starttls://user:pw@mail.example.org:587
👀 PARCOURS_SESSION_TIMEOUT_SECONDS
Bestimmt die Lebensdauer einer Sitzung. Der Standardwert ist 2 Wochen. Falls Nutzer:innen schneller abgemeldet werden sollen, muss ein kleinerer Wert gesetzt werden (z.B. 86400
für einen Tag).
👀 PARCOURS_CHANNEL_LAYER
Wird verwendet, um eine Client-übergreifende Kommunikation zu ermöglichen und wird für die Funktion zum kollaborativen Arbeiten benötigt.
Muss als URL zu einem Redis-kompatiblen Server angegeben werden (z.B. redis://my.redis.host:6379/0
).
👀 PARCOURS_ENVIRONMENT
Ein frei wählbarer Name der Ausführungsumgebung (z.B. production
), der in Debugging-Meldungen verwendet wird.
👀 PARCOURS_SENTRY_DSN
Eine Sentry-DSN-URL, an die Fehlerberichte gesendet werden.
👀 PARCOURS_DATA_DIR
Ein Verzeichnispfad, der als Speicherort für dynamische Daten verwendet wird.
PARCOURS_DEBUG
Aktiviert den Debug-Modus der Anwendung, wenn die Variable auf yes
gesetzt wird.
PARCOURS_CSRF_TRUSTED_ORIGINS
Vertrauenswürdige Origins für CSRF-Tokens (muss Protokoll und Port enthalten, z.B. https://parcours.example.org
). Standardmäßig wird der Inhalt der PARCOURS_ALLOWED_HOSTS
Variable mit https://
-Präfix verwendet.
Umgebungsvariablen des Anwendungsservers
parcours verwendet uvicorn als Anwendungsserver. uvicorn verfügt über eine Vielzahl von Konfigurationsoptionen, von denen einige über Umgebungsvariablen gesteuert werden können. Eine komplette Liste, aller Einstellungsmöglichkeiten findet sich in der uvicorn Dokumentation.
Die wichtigsten sind:
👀 FORWARDED_ALLOW_IPS
Bestimmt die vertrauenswürdigen Proxies, die Netzwerkverkehr zum Anwendungsserver weiterleiten dürfen.
👀 WEB_CONCURRENCY
Bestimmt die Anzahl der Worker, die für die Bearbeitung eingehender Anfragen verwendet werden. Die Voreinstellung ist 1
. Wir empfehlen diesen Wert zu erhöhen.
Django Python-Konfigurationsdatei
Es kann eine eigene Django-Konfiguration mit dem Namen parcours_settings.py
in /etc/parcours
im Dateisystem des Containers eingebunden werden. Diese wird automatisch geladen und lässt die Konfiguration beliebiger Django-Konfigurationsoptionen zu.
LDAP-Integration
LDAP-Unterstützung ist direkt in parcours integriert und basiert auf dem django-python3-ldap
Modul.
Es können sämtliche Konfigurationsoptionen aus der Dokumentation des django-python3-ldap
Moduls verwendet werden. Allerdings muss hierfür die Django Python-Konfigurationsdatei verwendet werden.
Beispielkonfiguration
AUTHENTICATION_BACKENDS = [
# Aktivieren des LDAP Authentifizierungs-Backends
"django_python3_ldap.auth.LDAPBackend",
# Eventuell soll das ModelBackend deaktiviert werden, falls Nutzer:innen
# sich ausschließlich per LDAP anmelden können sollen.
# Dies hat allerdings zur Folge, dass admin-Accounts, die mit createsuperuser
# angelegt wurden, sich nicht mehr anmelden können.
"django.contrib.auth.backends.ModelBackend",
]
LDAP_AUTH_URL = "ldaps://my-ldap-server.example.org:636"
LDAP_AUTH_USER_TLS = True
LDAP_AUTH_SEARCH_BASE = "cn=users,dc=example,dc=org"
LDAP_AUTH_OBJECT_CLASS = "posixAccount"
LDAP_AUTH_USER_LOOKUP_FIELDS = ("username",)
LDAP_AUTH_USER_FIELDS = {
"username": "uid",
"email": "mail",
"name": "displayName",
}