Zum Hauptinhalt springen

Netzwerk & Docker

Alle OpenVLE-Services laufen in Docker-Containern und kommunizieren über ein internes Docker-Netzwerk. Nur wenige Ports werden nach außen veröffentlicht. Für den Produktivbetrieb wird ein vorgelagerter Reverse Proxy empfohlen, ist aber nicht zwingend erforderlich.

Docker-Netzwerk

Der Docker-Compose-Stack erstellt automatisch ein internes Netzwerk (openvle-internal). Alle Container sind über dieses Netzwerk miteinander verbunden und können sich gegenseitig über ihre Service-Namen erreichen (z. B. backend, mariadb, redis).

DNS-Auflösung

Docker Compose stellt eine interne DNS-Auflösung bereit: Container können andere Container über den Service-Namen als Hostnamen ansprechen. Deshalb steht in den Umgebungsvariablen beispielsweise MARIADB_HOST = "db" statt einer IP-Adresse.

Exponierte Ports

In der Standard-docker-compose.yml werden nur zwei Ports nach außen veröffentlicht:

ServiceContainer-PortHost-PortZweck
frontend8080Weboberfläche (Vue.js/Nginx)
backend808000REST-API (FastAPI)

Beide Services müssen vom Browser des Endbenutzers erreichbar sein: Das Frontend liefert die Weboberfläche aus, und der Browser kommuniziert zur Laufzeit direkt mit dem Backend (API-Anfragen).

Alle anderen Services (MariaDB, MongoDB, Redis, Worker, Scheduler) veröffentlichen keine Ports und sind ausschließlich intern erreichbar.

Reverse Proxy (empfohlen)

Wird ein Reverse Proxy eingesetzt, sollten die Port-Veröffentlichungen auf 127.0.0.1 eingeschränkt werden, da der externe Zugriff dann über den Proxy erfolgt:

ports:
- 127.0.0.1:80:80
- 127.0.0.1:8000:8000

Kommunikationspfade

Externer Zugriff

Mit Reverse Proxy (empfohlen):

Browser → Reverse Proxy → Frontend (Port 80)
Browser → Reverse Proxy → Backend (Port 8000)

Ohne Reverse Proxy:

Browser → Frontend (Port 80)
Browser → Backend (Port 8000)

Ein Reverse Proxy ist optional, wird aber für den Produktivbetrieb empfohlen — er übernimmt SSL-Terminierung, Routing und ggf. Lastverteilung. Siehe Reverse Proxy für die Einrichtung.

Interne Kommunikation

VonNachZweck
backendmariadbLesen/Schreiben von Kernentitäten
backendmongodbSchreiben von Aktivitäten und Logs
backendredisEnqueue von Hintergrundaufgaben
workermariadbLesen/Schreiben bei Task-Ausführung
workerredisAbrufen von Jobs aus der Queue
schedulermariadbAbrufen von Jobs aus der Datenbank
schedulerredisEnqueue periodischer Tasks

Externe Systeme

OpenVLE kommuniziert mit folgenden externen Systemen:

SystemRichtungProtokollZweck
Proxmox VEBackend/Worker → ProxmoxHTTPS (8006/tcp)VM-Verwaltung über Proxmox-API
SMTP-ServerBackend/Worker → SMTPSSL/TLS (465/tcp)E-Mail-Versand
Apache Guacamole (optional, empfohlen)Backend/Worker → GuacamoleHTTPS (443/tcp)Verbindungsverwaltung über Guacamole-API
Moodle (optional)Backend/Worker → MoodleHTTPS (443/tcp)Kurs- und Teilnehmerverwaltung über Moodle Web Services API
LDAP-Server (optional)Backend/Worker → LDAPLDAP(S) (389/636)Benutzer-Authentifizierung
OIDC-Provider (optional)Backend → OIDCHTTPS (443/tcp)Single Sign-On
Firewall-Regeln

Der OpenVLE-Server muss ausgehende Verbindungen zu den oben genannten externen Systemen herstellen können. Stelle sicher, dass die entsprechenden Ports in der Firewall freigegeben sind.