openDesk Edu auf Ihrer Hochschulinfrastruktur deployen
Dieser Leitfaden fĂŒhrt Sie durch das Deployment von openDesk Edu auf der Kubernetes-Infrastruktur Ihrer Hochschule. Am Ende verfĂŒgen Sie ĂŒber einen voll funktionsfĂ€higen digitalen Arbeitsplatz mit integrierten Diensten â alle verbunden durch ein einheitliches Keycloak-SSO.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Folgendes vorhanden ist:
- Kubernetes-Cluster â Version 1.28 oder neuer. Dies kann ein Bare-Metal-Cluster, ein Cloud-Angebot oder eine On-Premises-Installation wie Proxmox VE oder OpenStack sein.
- Helm 3 â der Paketmanager fĂŒr Kubernetes. Installieren Sie ihn von helm.sh.
- Helmfile â die Orchestrierungsschicht, die alle openDesk-Edu-Charts verwaltet. Installieren Sie es von helmfile.readthedocs.io.
- Eine Domain und DNS-EintrĂ€ge â Sie benötigen eine Basisdomain (z. B.
desk.hochschule-beispiel.de) mit Wildcard-DNS, der auf Ihren Ingress-Controller zeigt. TLS-Zertifikate werden automatisch bereitgestellt. - Ausreichende Ressourcen â Planen Sie mindestens 8 CPU-Kerne und 16 GB RAM fĂŒr ein Produktionsdeployment ein. Der Speicherbedarf hĂ€ngt von der Benutzerzahl und den aktivierten Diensten ab.
Schritt 1: Repository klonen
Klonen Sie zunÀchst das openDesk-Edu-Repository:
git clone https://codeberg.org/opendesk-edu/opendesk-edu.git
cd opendesk-edu
Werfen Sie einen Blick auf die Verzeichnisstruktur. Die wichtigsten Verzeichnisse sind:
helmfile/â enthĂ€lt alle Helmfile-Konfigurationen und Umgebungencharts/â individuelle Helm-Charts fĂŒr jeden Dienstdocs/â detaillierte Dokumentation zu Konfiguration, Skalierung und Monitoring
Schritt 2: Werte konfigurieren
Die zentrale Konfigurationsdatei ist helmfile/environments/default/global.yaml.gotmpl. Diese Go-Templatedatei steuert die Einstellungen fĂŒr alle Dienste im Stack. Ăffnen Sie sie in Ihrem Editor und passen Sie Folgendes an:
Domain-Konfiguration:
global:
domain: "desk.hochschule-beispiel.de"
E-Mail-Einstellungen â erforderlich fĂŒr Groupware und Benachrichtigungsdienste:
global:
mail:
host: "smtp.hochschule-beispiel.de"
port: 587
fromAddress: "noreply@hochschule-beispiel.de"
Storage-Class â setzen Sie diesen Wert entsprechend dem Speicheranbieter Ihres Clusters:
global:
storageClass: "ceph-rbd"
Dienstauswahl â Sie können einzelne Dienste aktivieren oder deaktivieren. Wenn Ihre Hochschule bereits Moodle einsetzt, können Sie es deaktivieren und ILIAS beibehalten:
services:
ilias:
enabled: true
moodle:
enabled: false
bigbluebutton:
enabled: true
Das Templatingsystem verteilt diese Werte an alle abhĂ€ngigen Charts, sodass Sie keine individuellen Chart-Wertedateien bearbeiten mĂŒssen.
Schritt 3: Deployment mit Helmfile
FĂŒhren Sie das Deployment mit Ihrer Konfiguration durch:
helmfile -e default apply
Dieser einzelne Befehl rendert alle Helm-Charts mit Ihrer Konfiguration, löst die AbhĂ€ngigkeitsreihenfolge auf und deployt den gesamten Stack in Ihren Cluster. Helmfile steuert die Rollout-Reihenfolge â Infrastrukturdienste wie Keycloak und der Ingress-Controller werden zuerst deployt, gefolgt von den Anwendungsdiensten.
Das initiale Deployment dauert in der Regel 10 bis 20 Minuten, je nach KapazitĂ€t und Netzwerkgeschwindigkeit Ihres Clusters. Den Fortschritt können Sie ĂŒberwachen mit:
kubectl get pods -n opendesk -w
Warten Sie, bis alle Pods den Status Running anzeigen, bevor Sie fortfahren.
Schritt 4: SAML/SSO mit Keycloak konfigurieren
openDesk Edu verwendet Keycloak als zentralen Identity Provider. FĂŒr Hochschuldeployments empfiehlt sich die Integration mit der bestehenden SAML-Föderation Ihrer Einrichtung â DFN-AAI in Deutschland oder eduGAIN international.
Konfigurieren Sie den SAML-Identity Provider in Keycloak:
- Greifen Sie auf die Keycloak-Admin-Konsole unter
https://keycloak.desk.hochschule-beispiel.dezu - Navigieren Sie zu Ihrem Realm und fĂŒgen Sie einen neuen SAML-Identity Provider hinzu
- Importieren Sie Ihre Föderationsmetadaten-XML (verfĂŒgbar ĂŒber Ihre DFN-AAI- oder eduGAIN-VerwaltungsoberflĂ€che)
- Ordnen Sie SAML-Attribute Keycloak-Benutzerattributen zu:
| SAML-Attribut | Keycloak-Zuordnung | Zweck |
|---|---|---|
eduPersonPrincipalName |
username | Eindeutiger Identifikator |
eduPersonAffiliation |
roles | Student/Mitarbeiter/Dozent |
eduPersonEntitlement |
groups | Kurs- und Berechtigungsgruppen |
mail |
Kontaktadresse |
FĂŒr ILIAS, Moodle und BigBlueButton deployt openDesk Edu Shibboleth als SAML-Proxy. Diese Dienste erhalten ihre Attribute ĂŒber Shibboleth anstatt direkt von Keycloak. Der Proxy ĂŒbernimmt das Attribut-Filtering und die dienstspezifischen Richtlinien, wodurch Ihre Föderationsmetadaten sauber bleiben.
Nach der Konfiguration des Identity Providers testen Sie den Login-Flow, indem Sie auf das Nubus-Portal zugreifen. Sie sollten zur Anmeldeseite Ihrer Einrichtung weitergeleitet und mit Ihren Föderationsattributen zum Portal zurĂŒckkehren.
Schritt 5: Deployment ĂŒberprĂŒfen
Gehen Sie diese Checkliste durch, um zu bestÀtigen, dass alles funktioniert:
- Portalzugriff â öffnen Sie
https://desk.hochschule-beispiel.deim Browser. Das Nubus-Portal sollte mit allen aktivierten Diensten geladen werden. - SSO-Login â klicken Sie auf einen beliebigen Dienst. Sie sollten sich ĂŒber Keycloak authentifizieren, ohne erneut nach Anmeldeinformationen gefragt zu werden.
- Dateifreigabe â erstellen Sie eine Testdatei in Nextcloud oder OpenCloud und prĂŒfen Sie, ob sie ĂŒber Seitenaktualisierungen hinweg erhalten bleibt.
- Videokonferenzen â starten Sie einen Testmeeting in Jitsi oder BigBlueButton und prĂŒfen Sie Audio und Video.
- LMS-Zugriff â loggen Sie sich in ILIAS oder Moodle ein und bestĂ€tigen Sie, dass Ihre Föderationsattribute (Name, E-Mail, Rolle) korrekt angezeigt werden.
Wenn ein Dienst Fehler anzeigt, prĂŒfen Sie die Pod-Logs:
kubectl logs -n opendesk -l app.kubernetes.io/name=<dienst-name> --tail=50
Fehlerbehebung
Hier sind die hÀufigsten Probleme und ihre Lösungen:
Pods bleiben im Status Pending â meist ein Ressourcen- oder Speicherproblem. PrĂŒfen Sie die KnotenkapazitĂ€t mit kubectl describe pod <name> und stellen Sie sicher, dass Ihre Storage-Class verfĂŒgbar ist.
Zertifikatsfehler â der openDesk-Certificates-Operator verwaltet TLS automatisch. Wenn Zertifikate nicht bereitgestellt werden können, ĂŒberprĂŒfen Sie die DNS-EintrĂ€ge Ihrer Domain und stellen Sie sicher, dass der Operator die Bundesdruckerei-CA erreichen kann. Alternativ können Sie cert-manager mit Let's Encrypt als Fallback konfigurieren.
SSO-Weiterleitungsschleife â dies bedeutet in der Regel, dass die SAML-Identity-Provider-Metadaten falsch konfiguriert sind oder die Assertion Consumer Service URL nicht mit Ihrer Domain ĂŒbereinstimmt. ĂberprĂŒfen Sie die Keycloak-Identity-Provider-Einstellungen und stellen Sie sicher, dass Ihre Dienst-URLs HTTPS verwenden.
Hoher Speicherverbrauch â BigBlueButton und Collabora sind die ressourcenintensivsten Dienste. Wenn Sie auf begrenzter Hardware arbeiten, deaktivieren Sie BigBlueButton und verwenden Sie stattdessen Jitsi, oder setzen Sie Ressourcenlimits in der globalen Konfiguration.
Backup-Fehler â openDesk Edu verwendet k8up fĂŒr automatisierte Backups. Wenn Backups fehlschlagen, prĂŒfen Sie die k8up-Operator-Logs und stellen Sie sicher, dass Ihr S3-kompatibler Speicherendpunkt aus dem Cluster erreichbar ist.
NĂ€chste Schritte
Sobald Ihr Deployment lÀuft, sollten Sie folgende Schritte in Betracht ziehen:
- Richten Sie Monitoring mit Prometheus und Grafana-Dashboards fĂŒr die Dienstgesundheit ein
- Konfigurieren Sie Backup-ZeitplÀne und testen Sie Wiederherstellungsverfahren
- Passen Sie das Portal-Design an das Branding Ihrer Hochschule an
- PrĂŒfen Sie die Dokumentation zu Berechtigungen, um rollenbasierte Zugriffskontrolle einzurichten
Weitere Details finden Sie in der vollstÀndigen Dokumentation unter codeberg.org/opendesk-edu/opendesk-edu.