Handbuch

Systemarchitektur und Datenschutz

Wie Ephraim technisch aufgebaut ist und welche Maßnahmen den Datenschutz im schulischen Betrieb absichern. Ephraim ist die KI- und Projektplattform des Lessing-Gymnasiums Karlsruhe.

· Stand: Oktober 2026

1. Was ist das System?

Ephraim ist eine schulische Webplattform für KI-gestütztes Lernen, Chat, Dateiablage, Projektarbeit und Wissensquellen. Sie besteht aus zwei klar getrennten Teilen:

Kernprinzip: KI-Anfragen werden nicht an externe Cloud-APIs kommerzieller Anbieter geschickt. Webserver und Mailserver werden durch die Schule betrieben — der Mailserver auf einer eigenen Maschine. Der Browser greift auf die Webanwendung zu. Modell- und Sprachdienste sind für den internen Backendweg vorgesehen. Im Produktivbetrieb wird die Spark ausschließlich per HTTPS über die private Infrastruktur angebunden. Die Entwicklungsanbindung über Tailscale wird davon getrennt eingerichtet.

2. Physische und logische Infrastruktur

Infrastruktur-Übersicht Browser und Webserver sowie Webserver und Spark im Produktivbetrieb jeweils per HTTPS verbunden. Spark mit KI-Diensten, Broker, Observer, Runtime, Supervisor und Logrotation im isolierten LAN, getrennt vom Schulnetz. Mailserver auf eigener Maschine. Schulgebäude Browser pfSense Isoliertes LAN — getrennt vom Schulnetz Webserver Ephraim-Anwendung MySQL · Redis/Valkey Dateispeicher, Vault Basiswissen per URL Ephraim Spark Inference · Embeddings · TTS Runtime · Supervisor Broker · Observer · Logrotation kein URL-Abruf Mailserver eigene Maschine · Schulnetz Webserver ruft freigegebene URLs ab HTTPS HTTPS SMTP
Der Browser erreicht die Webanwendung per HTTPS. Webserver und Spark kommunizieren im Produktivbetrieb ausschließlich per HTTPS über den privaten Backendweg. Die Entwicklungsanbindung ist davon getrennt. Der Mailserver steht auf einer anderen Maschine in der Schule.

Optional kann auf dem Webserver ein Redis/Valkey-kompatibler Speed-Layer eingerichtet werden. Er dient als flüchtige, verschlüsselte Beschleunigung und ersetzt nicht die dauerhafte Datenbank. Nutzerinnen und Nutzer greifen per Browser über HTTPS auf die Webanwendung zu. E-Mails versendet die Webanwendung über den eingerichteten Mailserver. Auch die Verbindung vom Webserver zur Spark ist im Produktivbetrieb ausschließlich HTTPS. Die Entwicklung kann einen getrennten Tailscaleweg verwenden.

3. Aufbau der Ephraim-Anwendung

Bereich Aufgabe
Benutzeroberfläche Chat, Dateien, Projekte, Einstellungen, Hilfe
Anwendungslogik Anmeldung, Rollen, Vault, Chat-Verarbeitung, Projekte, Uploads
Datenbank (MySQL) Konten, Metadaten, verschlüsselte Chat-Inhalte, Projekte
Redis/Valkey-Speed-Layer Kurzlebige verschlüsselte Stream-Puffer und Worker-Wakeups auf demselben Host
Dateispeicher Verschlüsselte persönliche Dateien außerhalb des öffentlich erreichbaren Webroots
Basiswissen Schulische Quellen und freigegebene externe URLs — Abruf und Aufbereitung durch den Webserver

4. Ephraim Spark

Die schuleigene NVIDIA DGX Spark besitzt einen GB10-Chip und 128 GB gemeinsamen Arbeitsspeicher für CPU und GPU. Auf dem aktuellen Backend laufen acht getrennte Dienste. GPT-OSS-120B erzeugt Chatantworten mit vLLM, SGLang berechnet separat Embeddings und ein nativer S2-Pro-Dienst erzeugt die Sprachausgabe. Die Dienste teilen sich die Hardware. Getrennte Container schaffen deshalb keine voneinander unabhängigen GPU- oder Speicherreserven.

Das Sprachmodell ist als geprüftes Inferenzprofil eingerichtet. Die Chatengine ist derzeit auf höchstens 32 gleichzeitige Modellvorgänge und 32.768 Tokens je Kontext begrenzt. Der Webserver entscheidet weiterhin über Anmeldung, erlaubten Kontext, Aufnahme und Warteschlangen. SGLang bleibt die Grundlage des getrennten Embedding-Dienstes. Andere vorbereitete Modellprofile sind keine automatische Freigabe für den regulären V1-Chatpfad. Gemessene Kapazität und Wartezeiten stehen im Handbuch Inferenz-Benchmarks.

NVIDIA DGX Spark auf einem Tisch mit angeschlossenen Kabeln und USB-Stick
Die Ephraim Spark ist kein abstrakter Cloud-Dienst, sondern ein lokaler Rechner im Besitz der Schule. Foto: Dr. Daniel Roth, Lessing-Gymnasium Karlsruhe.
Komponente Funktion in V1
Inference Erzeugt Chatantworten mit GPT-OSS-120B über vLLM
Embeddings Berechnet mit SGLang Vektoren für semantische Suche, Projektmaterial und Basiswissen
TTS Wandelt ausgewählten Chattext mit dem nativen S2-Pro-Dienst in gesprochene Sprache um
Runtime Technisches Monitoring und administrierte Betriebsaktionen
Interner Broker Begrenzt Docker-Lesezugriffe auf fest freigegebene Dienste und technische Zustände
Observer Liefert der Runtime über lokale Unix-Sockets begrenzte Zustände und technische Logstreams vom Broker, ohne eigenen Docker-Socket oder Netzwerkport
Supervisor Geprüfte Updates, Jobstatus und geschützter Export technischer Sitzungsmetadaten mit redigierten Vorschauen für Super-Admins
Logrotate Rotiert technische Spark-Logdateien täglich und erscheint als eigener überwachter Container im Admin-Status

Embeddings und Retrieval in der Webanwendung

Der Retrieval-Pfad von Version 1 liegt in der Webanwendung. Ephraim extrahiert Text, zerlegt ihn in kurze Abschnitte, prüft Rechte, verschlüsselt Abschnittstext und Vektor und speichert beides in MySQL.

Für die reine Vektorberechnung ruft die Webanwendung den getrennten lokalen SGLang-Embedding-Dienst auf. Ephraim nutzt ihn für freigegebene Dateien, Projektmaterial und Basiswissen. Aus einem Textabschnitt und einer Suchfrage entstehen vergleichbare Zahlenlisten. Die Spark speichert diese Anfragetexte und Vektoren nicht dauerhaft. Auswahl, Rechteprüfung und verschlüsselte Speicherung bleiben beim Webserver.

Bei einer späteren Frage erzeugt der Webserver einen Fragevektor und vergleicht ihn mit den gespeicherten Vektoren. Bewertet werden nur Abschnitte, die für diese Person, Rolle und Situation zugelassen und entschlüsselbar sind. Auswahl, Zugriffskontrolle, Entschlüsselung, Cosinus-Vergleich und Kontextaufbau passieren in Ephraim auf dem Webserver.

Beim Vorlesen sendet der Webserver ausschließlich den ausgewählten Text an S2-Pro. Im Produktivbetrieb erfolgt auch dieser private Backendabruf ausschließlich per HTTPS. Der Webserver gibt den Audiostream an den Browser weiter. Die Stimmenliste und die Synthese verlangen den serverseitigen Bearer-Token. Nur die technische Healthabfrage des Sprachdienstes bleibt ohne diesen Token erreichbar. Eine solche Healthantwort beweist allein noch keine funktionsfähige authentifizierte Sprachausgabe.

Wichtig: Die Spark führt das Sprachmodell aus, surft aber nicht selbst im Internet. Wenn Ephraim Wetter, Wikipedia, Kalender oder andere freigegebene Webquellen einbezieht, holt der Webserver diese Inhalte per URL ab, prüft sie und reicht nur den freigegebenen Kontext an die Spark weiter.

5. Datenfluss: Vorlesen mit Spark-TTS

Die Vorlesefunktion verwendet den nativen S2-Pro-Dienst auf der Spark und ist vom Chatmodell getrennt. Der Webserver fordert die gewählte Stimme an, S2-Pro erkennt die Textsprache selbst. Die interne Adresse und der Authentifizierungstoken bleiben auf dem Webserver. Der Browser erhält gestreamte Audioteile zur Wiedergabe, keine Zugangsdaten zum Backend.

Datenfluss Vorlesen über Spark-TTS Browser markierter Text Webserver CSRF, Rate Limit, Prüfung Spark-TTS Geschützte Sprachsynthese Audio im Browser Audio-Stream, lokale Waveform POST HTTPS PCM Der TTS-Dienst erhält nur den Text, den die angemeldete Person bewusst vorlesen lässt. Text und Audio werden nicht dauerhaft gespeichert; Waveform entsteht lokal.
Spark-TTS ist ein interner Dienst. Der Webserver nimmt die Nutzeranfrage entgegen, prüft sie und leitet nur den normalisierten Text an die Spark weiter.
Schritt Schutzmaßnahme
Browser sendet Vorlesewunsch Nur angemeldete Sitzungen; mutierende Anfrage mit CSRF-Token.
Webserver prüft Text Anmeldung und CSRF-Schutz, Text- und Audiogrößenlimits, Aufnahmegrenzen je Sitzung und Nutzer sowie übergreifende Parallelitätsgrenzen. Die Stimme wird geprüft, Sprache und Sprechtempo werden nicht als Syntheseparameter vorgegeben.
Webserver ruft Spark-TTS auf Privater Backendweg, im Produktivbetrieb ausschließlich HTTPS, serverseitiger Bearer-Token sowie feste Verbindungs- und Laufzeitgrenzen.
Spark erzeugt Audio Streamt rohe PCM-Audioteile an den Webserver. Der Webserver reicht sie in begrenzten Teilen an den Browser weiter und legt keine Audiodatei an. Auslastung, falsche Konfiguration und Übertragungsfehler werden abgefangen.
Browser spielt Audio ab Antwort mit Cache-Control: no-store; Waveform-Peaks werden lokal berechnet und nicht gespeichert.

Wenn der interne TTS-Dienst nicht konfiguriert ist, bleibt die Vorlesefunktion deaktiviert. Die Oberfläche nutzt keine lokale Web-Speech-Funktion des Browsers als Ersatz. Die Architektur von Ephraim sieht für den schulisch kontrollierten Betrieb ausschließlich den Spark-TTS-Pfad vor.

6. Datenfluss: typischer KI-Chat

Datenfluss Chat Browser Webserver Vault, Kontext MySQL Spark GPT-OSS-120B Antwort-Stream über den Webserver HTTPS zur Spark 1. Frage 2. Entsperren 3. Speichern 4. Modell 5. Stream Anfrage und Kontext gelangen im Produktivbetrieb ausschließlich per HTTPS zur Spark. Dort verarbeitet die KI den freigegebenen Kontext im Arbeitsspeicher für die Antwort.
Der Chat wird schrittweise zurückgestreamt. Gespeichert wird der Verlauf verschlüsselt; die Spark sieht Prompt und freigegebenen Kontext nur für den jeweiligen Request.
  1. Die angemeldete Person sendet eine Nachricht über den Browser.
  2. Der Webserver prüft Sitzung, Berechtigung und ob der persönliche Vault entsperrt ist.
  3. Personalisierte Einstellungen, Projekt-Kontext und optional Basiswissen werden zusammengestellt.
  4. Die Anfrage gelangt im Produktivbetrieb ausschließlich per HTTPS über den privaten Backendweg an die Spark. GPT-OSS-120B erzeugt die Antwort.
  5. Die Antwort wird zurückgestreamt und der Verlauf verschlüsselt in MySQL abgelegt.

7. MySQL und Redis/Valkey

MySQL und Redis/Valkey erfüllen in Ephraim unterschiedliche Aufgaben. MySQL ist die dauerhafte Datenbank. Dort liegen Konten, Projekte, Einstellungen, Jobzustände, verschlüsselte Chatdaten, verschlüsselte Stream-Fallbacks, verschlüsselte Chunks und verschlüsselte Embedding-Vektoren. Redis/Valkey ist dagegen ein schneller Kurzzeitpuffer für laufende Arbeit.

Komponente Rolle Datenschutzgrenze
MySQL Dauerhafte Wahrheit des Systems Private Inhalte liegen verschlüsselt; Rechte und Schlüssel entscheiden, wer etwas nutzen kann.
Redis/Valkey Maschineninterner Speed-Layer für laufende Streams und Worker-Wakeups Keine Klartext-Chats, Dateien, Vault-Schlüssel, Passwörter, Nutzerprofile, Sessions oder RAG-Klartexte.
Datenbank-Fallback MySQL bleibt der dauerhafte Stream- und Jobpfad Redis/Valkey beschleunigt, speichert aber nichts persistent und ersetzt nicht die dauerhafte Speicherung.

Für Nutzer ist das am besten mit einem Schreibtisch vergleichbar: MySQL ist der verschlossene Aktenschrank. Redis/Valkey ist der kleine Zettel auf dem Tisch, der nur während einer laufenden Antwort hilft, den nächsten Schritt schnell zu finden. Auf diesem Zettel steht nicht der Chat im Klartext, sondern nur kurzlebige verschlüsselte Arbeitsdaten und technische Signale.

Produktionsgrenze: Redis/Valkey läuft auf demselben Host wie die Webanwendung und ist nur über ein maschineninternes Server-/Containernetz erreichbar. Es ist kein externer Dienst, kein Managed-Redis und kein neuer dauerhafter Speicherort.

8. Basiswissen und Internetzugriff

Ephraim kann schulisches Basiswissen in Chats einbeziehen — zum Beispiel freigegebene Dokumente, Kalender, Wetter oder Wikipedia. Diese Quellen werden vom Webserver abgerufen, geprüft und aufbereitet.

Private Kalender sind dabei kein zentrales Schulwissen. Sie gehören fachlich zum privaten Konto, sind an den persönlichen Vault gebunden und werden nur im normalen Chat dieses Kontos sowie in „Mein Ephraim“ berücksichtigt. Projektbuilder, Projektchats und andere Nutzer erhalten diesen privaten Kalenderkontext nicht.

Das unterscheidet Ephraim von einem öffentlichen Chatbot mit freiem Webzugang: Externe Inhalte fließen nur über festgelegte, schulisch kontrollierte Wege ein.

9. Hintergrundjobs, Datenlebenszyklus und Chat-Limit

Ephraim arbeitet nicht nur während eines Seitenaufrufs. Neben Browser, Webserver und Spark gibt es eine Wartungsschicht für Aufgaben, die geplant, begrenzt und kontrollierbar laufen müssen. Diese Schicht ist für den Datenschutz wichtig, weil sie Aufbewahrung, Aufräumen und technische Pflege erzwingt, ohne private Vaults im Hintergrund zu öffnen.

Bereich Was passiert Grenze
Cron Bereinigt Rate-Limits, abgelaufene KI-Jobs, temporäre Exporte, verwaiste Dateien, alte Sicherheitsereignisse und archivierte Projekte. Cron besitzt keinen User-DEK und öffnet keine persönlichen Vaults.
Knowledge-Refresh Aktualisiert freigegebene globale Quellen und Wetterdaten serverseitig. Private Kalender werden nicht massenhaft im Cron entschlüsselt; sie brauchen den entsperrten Vault des Besitzers.
KI-Jobs und Streams Verwalten Antwortgenerierung, Wiederaufnahme, Artefakte, MySQL-Fallback und Redis/Valkey als schnellen flüchtigen Stream-Puffer. Technische Puffer sind kein langfristiges Inhaltsarchiv; Redis/Valkey enthält keine Klartextinhalte.
Drittanbieter-Komponenten Werden lokal inventarisiert, geprüft und über Adminfreigaben kontrolliert. Die Manuals und die App-Oberfläche brauchen keine externen CDN-Ressourcen für den normalen Betrieb.

Für gespeicherte Chats kann die Schule ein Chat-Aufbewahrungslimit pro Konto setzen. Ist dieses Limit erreicht, legt Ephraim keinen weiteren gespeicherten Chat an. Bestehende Chats bleiben lesbar, fortsetzbar, exportierbar, umbenennbar und löschbar. Die Nutzerin oder der Nutzer entscheidet im Aufräumdialog, welcher nicht mehr benötigte Chat gelöscht wird; Ephraim löscht alte Chats nicht heimlich im Hintergrund.

Datenschutzgedanke: Ein Limit ist kein Komforthindernis, sondern eine Aufbewahrungsgrenze. Es verhindert, dass private Chaträume, Datenbank und Backups ohne pädagogischen Nutzen dauerhaft wachsen.

10. Verschlüsselung: der persönliche Vault

Vault-Modell Passwort Schlüsselableitung Persönlicher Schlüssel nur in der Sitzung Verschlüsselte Daten Chats Dateien Erinnerungen
Jede Nutzerin und jeder Nutzer hat einen eigenen verschlüsselten Tresor. Ohne Passwort sind gespeicherte Inhalte nicht lesbar.
Situation Was ist lesbar?
Nur Datenbank- oder Speicher-Backup Verschlüsselte Inhalte, keine privaten Klartexte ohne Passwort
Angemeldete Person, Vault entsperrt Eigene Chats, Dateien und Einstellungen
Lehrkraft im Projekt Projektmaterial und Metadaten — keine privaten Schüler-Chats
Administrator Konten, Rollen, Systemeinstellungen — kein Klartext fremder Vault-Inhalte
KI-Request auf der Spark Prompt und freigegebener Kontext nur für diesen Request im Arbeitsspeicher

Persönliche Dateien liegen verschlüsselt auf dem Webserver. Beim Download werden sie im Arbeitsspeicher entschlüsselt und direkt an den Browser gesendet — es entsteht keine dauerhafte Klartext-Kopie auf der Platte. Wird eine private Datei in ein Lehrerprojekt übernommen, entsteht eine getrennte Projektkopie; das private Original bleibt geschützt.

Onboarding, Passwortwechsel und Passwort-Recovery gehören deshalb zur Architektur: Wer sein Passwort kennt, kann den bestehenden Vault neu verpacken. Wer es vergessen hat, braucht eine vorbereitete datenerhaltende Recovery oder muss einen datenlöschenden Reset akzeptieren.

11. Rollen und Zugriffskontrolle

Rolle Typische Rechte Datenschutzrelevant
Schüler:in Chat, eigene Dateien, Einstellungen, Projektbeitritt Sieht nur eigene Vault-Inhalte
Lehrkraft Projekte anlegen, Materialien, Anweisungen für Projekte Kein Zugriff auf private Schüler-Chats
Administrator Nutzerverwaltung, Klassen, Quotas, Systemeinstellungen Verwaltungsdaten, keine fremden Vault-Klartexte
Super-Admin Technische Betriebsführung, Updates, Audit-Berichte Administration mit redigierten Protokollen

Anmeldung ist passwortgeschützt; optional mit Zwei-Faktor-Authentifizierung. Aktive Sitzungen können eingesehen und beendet werden.

Besonders wichtig ist die Projektgrenze: Eine Lehrkraft steuert Auftrag, Material, Teilnehmende und Abschlussregeln, aber sie öffnet keine privaten Schülerchats und keine Projektchat-Rohtexte. Sichtbar sind reduzierte Projektinformationen wie Teilnahme, Aktivität, Abschluss, Nachrichtenimpulse, Fazitstatus und die ausdrücklich aktivierten Fazit- oder Monitoring-Ergebnisse. Die Details stehen im Artikel Projekte: Datenschutz.

12. Wie Datenschutz technisch abgesichert wird

Organisatorisch und architektonisch

Technische Schutzmaßnahmen

Logging

Wichtig: KI muss eine Frage kurz im Klartext verarbeiten, um antworten zu können. Der Schutz liegt darin, wo (Spark im isolierten LAN, getrennt vom Schulnetz), wie übertragen (HTTPS zum Browser und im Produktivbetrieb ausschließlich HTTPS zur Spark), wofür (die freigegebene Antworterzeugung) und was dauerhaft gespeichert wird (verschlüsselte Inhalte im Websystem, keine fachlichen Anfrageinhalte in den Inferenzprotokollen). Daraus folgt keine Zusicherung, dass nach einer Antwort bereits jeder Speicherbereich physisch gelöscht ist.