πŸ›οΈ openDesk: Comfortabel en Soeverein?

πŸŽ“ openDesk Edu β€” Digitale Soevereiniteit aan Universiteiten

Chemnitzer Linux-Tage 2026 Β· 28.03.2026

Tobias Weiß · HRZ Zentrale Systeme · UniversitÀt Marburg

Digitale Soevereiniteit β€” De Vier Piijlers

  • Infrastructuursoevereiniteit πŸ–₯️
    Zelfstandig beheer van servers en netwerken
  • Data-soevereiniteit πŸ’Ύ
    Controle over gegevensopslag en toegang
  • Softwaresoevereiniteit πŸ’»
    Open-source software zonder propriΓ«taire afhankelijkheden
  • Operationele soevereiniteit πŸ”§
    Volledige controle over updates en onderhoud

Wat is openDesk?

  • Open-source alternatief voor M365 en Google Workspace 🐧
  • Door de overheid voor de overheid (BMI / ZenDiS) πŸ›οΈ
  • BSI-gecertificeerd (Duitse soevereiniteit) πŸ“œ
  • Cloud-Native: Kubernetes-gebaseerde werkplek ☁️
  • Modulaire Componenten:
    • Chat, Bestanden, Wiki, Projectbeheer
    • E-mail, Diagrammen, Webkantoor, Video
  • Self-Hosted of SaaS πŸ–₯️

Componentenoverzicht

Component Software
Chat πŸ’¬ Element / Synapse
Bestanden ☁️ Nextcloud
Wiki πŸ“– XWiki
Project βœ… OpenProject
E-mail βœ‰οΈ OX App Suite
Diagrammen πŸ“Š CryptPad
Webkantoor πŸ“„ Collabora
Video πŸ“Ή Jitsi

openDesk-projectstatistieken

Ontwikkeling πŸ”€ Community πŸ‘₯
Start: Juli 2023 Bijdragers: ~ 70
Looptijd: ~ 3 jaar Organisaties: ~ 27
Commits: ~ 1.500
Releases: ~ 150

OpenCode.de πŸ›‘οΈ | Supply Chain πŸ”’
Door BMI gefinancierd platform | Ondertekende containerimages
Soevereine cloudinfrastructuur | SBOM voor alle componenten

Infrastructuuropzicht

Metriek Waarde
Nodes 9 (3 Control-Plane + 6 Worker)
Distributie K3s v1.32.3
OS Debian 12
CPU (Minimum) 16 kernen
RAM (Minimum) 64 GB
Opslag 4+ TB Ceph

Virtualisatie met Proxmox

Helmfile & HRZ-omgeving

# Implementatie met Helmfile
helmfile apply -e hrz
  • Helmfile Orchestration βš“
    • Declaratieve configuratie in helmfile_generic.yaml.gotmpl
    • Omgevingsspecifieke overrides in environments/hrz/
    • Automatische afhankelijkheidsbackup
  • HRZ-omgeving aangemaakt πŸ–₯️
    • Kopie van staging met aanpassingen
    • Uni Marburg-specifieke configuratie
    • Testsysteem voor proefbedrijf

Lokale Chart-ontwikkeling

# Charts lokaal klonen/pullen
python3 dev/charts-local.py --match intercom
python3 dev/charts-local.py --revert
  • Lokale Chart-ontwikkeling & testen πŸ’»
  • Kloon/pull in charts-<branch>/ ⬇️
  • Helmfile-verwijzingen naar lokale paden πŸ“„
  • Backup & Terugdraaien met --revert ↩️

Gebruikersimport: Provisionering

  • UDM REST API β€” CSV/ODS-import, LDAP-groepen πŸ‘€
  • Accountkoppeling β€” SAML-identiteitskoppeling πŸ”—
  • Demomodus β€” Testaccounts, profielfoto's πŸ–ΌοΈ

Gebruikersimport: Deprovisionering

Tweefasen-deprovisioneringsworkflow:

  • Fase 1: Gebruiker uitschakelen
    • IAM API β†’ UCS Disable β†’ Tijdstempel in beschrijving
    • Keycloak: SAML verwijderen + groepen ontbinden
  • Fase 2: Gebruiker verwijderen
    • Respijtperiode (6 maanden) β†’ Definitieve verwijdering
    • Output: deprovisioned-*, deleted-*

πŸŽ“ openDesk Edu β€” Overzicht

  • Uitbreiding van openDesk CE voor universiteiten 🏫
  • Nieuwe componenten:
    • Learning Management Systems (ILIAS, Moodle)
    • Videoconferentie voor onderwijs (BigBlueButton)
    • Alternatieve bestandssynchronisatie (OpenCloud)
  • Allemaal geΓ―ntegreerd met Keycloak SSO πŸ”
  • Alles implementeren met helmfile apply ⚑

GitHub: github.com/opendesk-edu/opendesk-edu

πŸ“š Onderwijscomponenten

Component Status Beschrijving
πŸ“– ILIAS βœ… Stabiel LMS met SAML SSO β€” Cursussen, SCORM, Toetsen
πŸ“– Moodle πŸ”„ Beta LMS met Shibboleth β€” Plugins, Cijferlijst
πŸŽ₯ BigBlueButton πŸ”„ Beta Videoconferentie voor onderwijs β€” Opname, Whiteboard
☁️ OpenCloud πŸ”„ Beta CS3-gebaseerde bestandssync β€” Alternatief voor Nextcloud

πŸ” ILIAS SSO β€” Architectuur

6-staps SSO-flow:

  1. πŸ–₯️ Portal β†’ ILIAS-tegel
  2. πŸ”„ ILIAS β†’ Shibboleth SP
  3. πŸ”‘ Keycloak β†’ Uni-IdP
  4. πŸŽ“ Login (weblogin.uni-marburg.de)
  5. πŸ“¨ SAML-assertie terug
  6. βœ… ILIAS-dashboard

Stack: Apache + Shibboleth SP + Keycloak Broker

πŸ”§ ILIAS-implementatie β€” Lessen geleerd

Probleem Oplossing
Wrong Login or Password SAML NameFormat ontbrak in attribute-map.xml
Attribuutnamen onjuist Uni-IdP stuurt givenname/surname
handlerSSL β†’ 404 Intern TLS: Apache SSL op poort 8443 (v5)
Accounts uitgeschakeld shib_activate_new = 0
SAML Timeout 60 s β†’ 300 s
Health Check CronJob: curl SSO-Redirect (elk uur)

πŸš€ Snelstart β€” Implementatie in 3 stappen

# 1. Kloon de repository
git clone https://github.com/opendesk-edu/opendesk-edu.git
cd opendesk-edu

# 2. Configureer uw omgeving
# Bewerk helmfile/environments/default/global.yaml.gotmpl
# Stel uw domein, e-maildomein en imageregistry in

# 3. Implementeer
helmfile -e default apply

πŸ“– Volledige documentatie: docs/getting-started.md

Netwerkconfiguratie

  • Ingress Controller: haproxy-ingress
  • Reverse Proxy: Traefik β€” HTTP/HTTPS-terminatie πŸ”„
  • LoadBalancer: MetalLB
  • Alle Ingresses gemigreerd naar haproxy βœ…

Grafana-dashboard

Updateproces

# Laad nieuwste releases
git checkout -b myrelease upstream/tags/v1.12.2
git pull

# Bekijk wijzigingen
helmfile diff -e hrz

# Pas updates toe
helmfile apply -e hrz

# Terugdraaien indien nodig
helmfile rollback -e hrz
  • Gecontroleerde updates via Helmfile πŸ”„
  • Eenvoudige terugdraaimogelijkheid ↩️

HRZ-Upgrade: Ingress-migratie

  • Migratie: nginx β†’ haproxy-ingress πŸ”€
    • v1.11.2 β†’ v1.13.x (uniapps branch)
    • Alle Ingresses gemigreerd naar haproxy βœ…
  • Ingress-klassen:
    • ingressClassName: haproxy
    • nginx volledig verouderd
  • Configuratie:
    • replicaCount: 2, LoadBalancer
    • tune.bufsize: 65536, tune.http.maxhdr: 256

HRZ-Upgrade: Dubbele backup

  • Doelen: Redundante backupopslag πŸ—„οΈ
  • Strategie: S3-compatibel met restic-backend πŸ”„
    • Primair: s3.example.org:9000/backup-primary
    • Secundair: s3-backup.example.org:9000/backup-secondary
  • Planning: Dagelijks om 00:42, Wekelijkse check, Prune op zondag ⏰
  • Retentie: 14 Dagelijks, Bewaar Laatste 5 πŸ“¦

Institutionele hindernissen

  • Juridische afdeling βš–οΈ
    • AVG, AVV-contracten, Licentienaleving
  • Personeelsraad πŸ‘₯
    • Dienstverleningsovereenkomst, Medezeggenschap voor IT-systemen
  • Bestuur 🏒
    • Microsoft-voorkeuren, Formaatcompatibiliteit
  • Vereiste documenten πŸ“„
    • DSFA, TCO-berekening

Volgende stappen & Aanbevelingen

  1. Start proefbedrijf ▢️
  2. Gefaseerde uitrol (10 β†’ 100 β†’ 1.000 gebruikers) πŸ‘₯
  3. Duidelijke scheiding van productiesystemen πŸ”—
  4. Evaluatie: Categoriseer use cases op basis van soevereiniteitseisen βœ…
  5. Budget voor operationeel team (niet alleen implementatie) πŸ’°

🀝 Doe mee!

Help ons openDesk Edu voor universiteiten te bouwen!

  • ⭐ Ster de repo: github.com/opendesk-edu/opendesk-edu
  • πŸ§ͺ Lokaal testen: Implementeer met Helmfile en geef feedback
  • πŸ› Meld problemen: Issues voor bugs of feature-verzoeken
  • πŸ’» Draag bij: PR's welkom β€” zie CONTRIBUTING.md

Laten we samen soevereine universiteitssoftware bouwen! πŸŽ“

Technische bronnen

Organisatorische bronnen

  • HBDI-aanbeveling (M365-beoordeling):
    PDF
  • Hessischer Digitalpakt Hochschulen:
    PDF
  • EVB-IT Open Source (ZenDiS):
    zendis.de
  • EVB-IT & BVB (digitale-verwaltung.de):
    digitale-verwaltung.de
  • Digitale Soevereiniteit aan Universiteiten:
    PDF
  • CoCreate-WerkstattgesprΓ€ch:
    PDF