Zum Inhalt springen

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 ​

py
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",
}