Zum Hauptinhalt springen

OpenVLE

OpenVLE wird als Docker-Compose-Stack betrieben und umfasst alle benötigten Dienste in einem einzigen Repository. Ein docker compose up -d startet die gesamte Anwendung.

Architektur

Der Docker-Compose-Stack besteht aus folgenden Services:

ServiceFunktion
backendPython/FastAPI — API-Server, Geschäftslogik
frontendVue.js/Nginx — Weboberfläche
workerRQ Worker — asynchrone Hintergrundaufgaben (VM-Operationen, E-Mail-Versand, etc.)
schedulerRQ Scheduler — periodische Tasks (Node-Info-Updates, etc.)
mariadbMariaDB — relationale Datenbank für Kernentitäten
mongodbMongoDB — Dokumentdatenbank für Aktivitäten und Logs
redisRedis — Task-Queue und Cache für Worker/Scheduler

Voraussetzungen

Installation

Repository herunterladen

Lade die docker-compose.yml und die .env.sample-Dateien aus dem offiziellen Repository herunter:

mkdir openvle && cd openvle
curl -fsSLO https://raw.githubusercontent.com/inettgmbh/openvle/main/docker-compose.yml
curl -fsSL -o .env https://raw.githubusercontent.com/inettgmbh/openvle/main/backend/.env.sample
curl -fsSL -o frontend.env https://raw.githubusercontent.com/inettgmbh/openvle/main/frontend/.env.sample

Docker Images herunterladen

docker compose pull

Konfiguration

OpenVLE verwendet zwei Konfigurationsdateien auf Root-Ebene: .env für Backend, Worker, Scheduler und Compose-Variablen-Interpolation, sowie frontend.env für die Frontend-Runtime-Konfiguration.

Backend (.env)

Generiere zuerst sichere, zufällige Passwörter und Secrets für alle sicherheitsrelevanten Variablen:

sed -i \
-e "s|AUTH_SECRET = \"\"|AUTH_SECRET = \"$(openssl rand -hex 32)\"|" \
-e "s|SESSION_SECRET_TOKEN = \"\"|SESSION_SECRET_TOKEN = \"$(openssl rand -hex 32)\"|" \
-e "s|MARIADB_PASSWORD = \"project\"|MARIADB_PASSWORD = \"$(openssl rand -hex 16)\"|" \
-e "s|MARIADB_ROOT_PASSWORD = \"root\"|MARIADB_ROOT_PASSWORD = \"$(openssl rand -hex 16)\"|" \
-e "s|MONGODB_PASSWORD = \"project\"|MONGODB_PASSWORD = \"$(openssl rand -hex 16)\"|" \
-e "s|REDIS_PASSWORD = \"password\"|REDIS_PASSWORD = \"$(openssl rand -hex 16)\"|" \
.env
vorsicht

Dieser Befehl ersetzt die Standard-Passwörter einmalig durch zufällige Werte. Führe ihn nur einmal aus — bei erneuter Ausführung würden die bereits gesetzten Werte nicht mehr den Standardwerten entsprechen und der Befehl hätte keine Wirkung. Sichere die generierte .env anschließend, da die Passwörter nicht wiederherstellbar sind.

Falls du den sed-Befehl nicht verwenden möchtest, musst du die folgenden Variablen unbedingt manuell auf sichere Werte setzen: AUTH_SECRET, SESSION_SECRET_TOKEN, MARIADB_PASSWORD, MARIADB_ROOT_PASSWORD, MONGODB_PASSWORD, REDIS_PASSWORD. Die Standardwerte in der .env.sample sind unsicher und dürfen nicht im Produktivbetrieb verwendet werden.

MARIADB_ROOT_PASSWORD

MARIADB_ROOT_PASSWORD wird nur beim initialen Start benötigt — MariaDB übernimmt das Passwort bei der ersten Initialisierung und speichert es in der Datenbank. Nach dem ersten erfolgreichen Start kannst du die Variable aus der .env entfernen und das Passwort stattdessen an einem sicheren Ort aufbewahren (z. B. Passwort-Manager), falls du es für Wartungsarbeiten oder Fehlerfälle benötigst.

Bearbeite anschließend die .env und setze die verbleibenden umgebungsspezifischen Variablen:

CORS

VariableBeschreibungBeispiel
CORS_ORIGINSErlaubte Ursprünge für CORS-Anfragen (URL des Frontends)["https://openvle.example.com"]

Proxmox VE — Zugangsdaten aus der Proxmox VE Integration

VariableBeschreibungBeispiel
PVE_HOSTNAMEHostname und Port des Proxmox-Servers"proxmox.example.com:8006"
PVE_USERProxmox-Benutzer"OpenVLE@pve"
PVE_TOKEN_NAMEName des API-Tokens"prod01"
PVE_TOKEN_VALUEGeheimer Wert des API-Tokens"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
PVE_FQDNFQDN des Proxmox-Servers"proxmox.example.com:8006"
PVE_VMS_POOLProxmox-Pool für verwaltete VMs"OpenVLE-VMs"
PVE_VM_SUBNETSubnetz für VMs"10.1.1.0/24"

E-Mail / SMTP

VariableBeschreibungBeispiel
SMTP_HOSTSMTP-Server"mail.example.com"
SMTP_PORTSMTP-Port465
SMTP_METHODVerbindungsmethode"ssl"
SMTP_USERNAMESMTP-Benutzername"openvle@example.com"
SMTP_PASSWORDSMTP-Passwort"smtp-passwort"
SMTP_FROM_MAILAbsenderadresse"openvle@example.com"
SMTP_FROM_NAMEAnzeigename des Absenders"OpenVLE"
info

Die Variablen müssen in Anführungszeichen (" ") gesetzt werden, da es andernfalls beim Start zu Parsing-Fehlern kommt.

Vollständige Referenz

Die obige Tabelle zeigt nur die erforderlichen Variablen. Für optionale Einstellungen (Guacamole, LDAP, OIDC, Moodle, Sentry, etc.) siehe die Konfigurationsreferenz.

Frontend (frontend.env)

Im Frontend muss lediglich die Backend-URL gesetzt werden:

VITE_BACKEND_URL='https://openvle.example.com/v1'

Weitere optionale Frontend-Variablen (z. B. Sentry) findest du in der Konfigurationsreferenz.

Container starten

docker compose up -d

Docker erstellt automatisch alle notwendigen Verzeichnisse, initialisiert die Datenbanken und startet alle Services.

Erster Start

Beim ersten Start führt das Backend automatisch die Datenbank-Migration durch. Dies kann einige Minuten dauern. Warte bis alle Container den Status healthy erreicht haben, bevor du fortfährst.

Netzwerk und Ports

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

ServicePortBindung
frontend800.0.0.0:80
backend80000.0.0.0:8000

Alle anderen Container (MariaDB, MongoDB, Redis, Worker, Scheduler) kommunizieren ausschließlich intern über das Docker-Netzwerk und veröffentlichen keine Ports — das soll auch so bleiben.

Reverse Proxy verwenden

Wenn ein Reverse Proxy eingesetzt wird (empfohlen), können die Port-Veröffentlichungen von Frontend und Backend in der docker-compose.yml entfernt oder auf 127.0.0.1 eingeschränkt werden, da der gesamte externe Zugriff dann zentral über den Reverse Proxy erfolgt. Beispiel:

ports:
- 127.0.0.1:80:80 # nur lokal erreichbar
- 127.0.0.1:8000:8000

Standard-Administrator

Nach dem ersten erfolgreichen Start wird automatisch ein Standard-Administrator-Konto erstellt:

Benutzernameopenvle
Passwortopenvle
Passwort sofort ändern

Ändere das Passwort des Standard-Administrators sofort nach dem ersten Login. Erstelle anschließend für jeden Administrator ein persönliches Konto und deaktiviere oder lösche den Standard-Account, sobald die individuellen Konten eingerichtet sind.

Verifizierung

Container-Status prüfen

docker ps -a

Alle 7 Container sollten den Status Running (healthy) haben.

Logs prüfen

docker logs openvle-backend 2>&1 | head -50

Die Logs sollten keine Fehlermeldungen zeigen und die erfolgreiche Datenbankverbindung bestätigen.

API-Zugang testen

Rufe die Systemeinstellungen über die API ab:

curl -s https://openvle.example.com/v1/system/settings | head -20

Eine JSON-Antwort mit den aktuellen Einstellungen bestätigt, dass Backend und Reverse Proxy korrekt konfiguriert sind. Eine leere oder fehlerhafte Antwort deutet auf ein Konfigurationsproblem hin.

Weboberfläche prüfen

Öffne https://openvle.example.com im Browser. Die Anmeldeseite sollte angezeigt werden.

Fehlerbehebung

ProblemLösung
Container startet nichtPrüfe die Logs mittels docker logs <container-name>. Weitere Informationen unter Logs.
Datenbank-Fehler beim StartStelle sicher, dass die MariaDB- und MongoDB-Variablen in der .env korrekt gesetzt sind. Siehe Konfigurationsreferenz.
Health-Check schlägt fehlWarte einige Minuten — die initiale Datenbank-Migration kann beim ersten Start länger dauern.
Weboberfläche nicht erreichbarStelle sicher, dass der Frontend-Container läuft und der Reverse Proxy korrekt konfiguriert ist.
API-Calls schlagen fehlPrüfe CORS_ORIGINS in der .env — die URL des Frontends muss enthalten sein.
E-Mail-Versand funktioniert nichtPrüfe die SMTP-Variablen in der .env und teste die Verbindung zum SMTP-Server.
Proxmox-Verbindung schlägt fehlPrüfe PVE_HOSTNAME, PVE_USER, PVE_TOKEN_NAME und PVE_TOKEN_VALUE. Siehe Proxmox VE Integration.