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