Voraussetzungen
Zielgruppe: Technische Administration
Überblick
Dieses Kapitel listet alles, was vor der Installation bereitstehen muss: ein Docker-Host, freie Ports, eine Netzwerkverbindung zum opsi-Configserver und ein technischer opsi-Benutzer. Prüfe die Punkte der Reihe nach, bevor du mit der Installation beginnst.
Host
oPBWeb läuft auf jedem Linux-Host mit Docker. Du kannst den Stack direkt auf dem opsi-Configserver betreiben oder auf einem eigenen Host, der den Configserver per HTTPS erreicht.
- Betriebssystem: Linux mit aktuellem Docker Engine.
- Docker Compose: das Compose-Plugin (Version 2, Aufruf
docker compose). Das alte eigenständigedocker-compose(Version 1) reicht nicht, weil die Compose-Datei Funktionen wie Datei-Secrets undservice_completed_successfullynutzt. - Bash und OpenSSL: Die Skripte
setup-opbweb.sh,start.sh,stop.shundscripts/init-secrets.shsind Bash-Skripte, die Secrets werden mitopensslerzeugt. - Git: zum Holen der Quellen.
- Speicherplatz: Der Objektspeicher wächst mit den Paketdateien. Plane genug Platz für die Docker-Volumes ein (Datenbank, Objektspeicher). Feste Mindestwerte für CPU, Arbeitsspeicher oder Plattenplatz gibt es nicht; die Container laufen ohne Ressourcenlimits.
Ports
Nach außen öffnet der Stack nur den Frontend-Container. Alle anderen Dienste kommunizieren in internen Docker-Netzen.
Variable in .env | Standard | Verwendung |
|---|---|---|
FRONTEND_HTTP_PORT | 80 | leitet auf HTTPS weiter |
FRONTEND_HTTPS_PORT | 443 | HTTPS (immer mit Zertifikat, notfalls self-signed) |
Die Oberfläche läuft nur per HTTPS; der HTTP-Port leitet dorthin weiter. Läuft auf dem Host bereits ein Webserver (zum Beispiel auf dem Configserver), wähle andere Ports.
Netzwerk zum opsi-Configserver
Der Worker-Container spricht direkt mit opsiconfd auf dem Configserver:
- HTTPS auf Port 4447 für JSON-RPC.
- WebDAV über denselben Port für die Freigaben
/repository,/workbenchund/depot.
Die Verbindung geht vom Worker aus über das Docker-Netz opsi-net. Firewalls zwischen Docker-Host und Configserver müssen Port 4447 zulassen.
opsi-seitige Voraussetzungen
oPBWeb ist für opsi 4.3 ausgelegt. Auf dem Configserver brauchst du:
- Technischer Benutzer mit opsi-Admin-Rechten: Der Worker meldet sich mit diesem Benutzer an (Vorgabe in der Oberfläche:
opsiadm). Ohne Admin-Rechte schlägt der Verbindungstest mit „… hat keine opsi-Admin-Rechte“ fehl; außerdem verlangen/repositoryund/workbenchAdmin-Rechte. admin-networksin opsiconfd: Ist diese Einstellung gesetzt, muss das Docker-Netz des Workers darin enthalten sein. Sonst lehnt opsiconfd die Admin-Aufrufe mit HTTP 403 ab. Das Subnetz ermittelst du nach dem ersten Start mitdocker network inspect opbweb_opsi-net(EintragSubnet).- FQDN des Configservers: Trage den Configserver später mit seinem vollständigen Hostnamen ein, nicht mit der IP-Adresse. Das Serverzertifikat von opsiconfd lautet auf den Namen; mit einer IP-Adresse scheitert die TLS-Prüfung. Der Name muss aus dem Worker-Container auflösbar sein.
URL, technischer Benutzer, Passwort und CA-Zertifikat des opsi-Servers stehen nicht in Konfigurationsdateien. Du trägst sie nach der Installation in der Oberfläche ein, siehe Ersteinrichtung .
Zertifikate
- TLS-Zertifikat für die Weboberfläche (empfohlen): Für HTTPS brauchst du ein Zertifikat mit vollständiger Kette (
fullchain.pem) und den passenden privaten Schlüssel (key.pem) für den Hostnamen, unter dem die Benutzer oPBWeb aufrufen. Leg die beiden Dateien vor dem Setup nebensetup-opbweb.sh. Ohne eigenes Zertifikat erzeugt das Setup ein self-signed Zertifikat; dann warnt der Browser. - CA des opsi-Servers: Sie wird bei der Ersteinrichtung direkt vom Configserver geholt. Halte für den Abgleich des Fingerabdrucks einen Shell-Zugang zum Configserver bereit.
- LDAPS-CA (optional): Für die Anmeldung per LDAP mit eigener CA legst du die CA-Datei als
ldap-ca.pemneben das Skript oder untercerts/ldap/ab, siehe LDAP-Anmeldung .
Images und Internetzugang
Die eigenen Images von oPBWeb (Backend, Frontend, garage-init) kannst du auf zwei Wegen bereitstellen:
- Lokal bauen mit
./start.sh --build. Dafür braucht der Host Zugriff auf:- Docker Hub für die Basis-Images (Python, Node.js, nginx, Alpine),
- GitHub für python-opsi und die Hugo-Module des Handbuchs,
- PyPI für die Python-Pakete,
- npm-Registry für die Frontend-Abhängigkeiten,
- den Go-Modul-Proxy proxy.golang.org für das Handbuch-Theme.
- Fertig aus einer Registry ziehen, zum Beispiel aus der Registry der GitLab-CI des Projekts oder einem internen Mirror. Dann braucht der Host nur Zugriff auf diese Registry; ein Konto (
docker login) nur, wenn sie eine Anmeldung verlangt. Die Registry des Projekts ist öffentlich. Internetzugang zum Bauen braucht nur der Rechner, auf dem die Images gebaut werden.
Die Fremd-Images für MariaDB, Redis und Garage kommen in beiden Fällen von Docker Hub, sofern du keinen Mirror verwendest. Welchen Weg du nimmst, legst du bei der Installation
mit setup-opbweb.sh fest.
Im laufenden Betrieb braucht der Stack keinen Internetzugang.
Versionen
Dieses Handbuch beschreibt folgenden Stand:
| Komponente | Version |
|---|---|
| Backend | 0.18.8 |
| Frontend | 0.18.16 |
| Launcher | 0.18.0 |
Technische Basis:
| Komponente | Version |
|---|---|
| Python | 3.13 (python:3.13-slim) |
| FastAPI | 0.143.1 |
| SQLAlchemy | 2.1.4 |
| Alembic | 1.20.0 |
| arq (Job-Worker) | 0.28.0 |
| Vue | 3.5 |
| Vite | 8.3 |
| Node.js (nur Build) | 22 |
| nginx | stable-alpine |
| MariaDB | 11.4 |
| Redis | 7 |
| Garage (S3) | v2.2.0 |
| opsi (Configserver) | 4.3 |
Die installierten Versionen von Frontend und Backend siehst du jederzeit in der Statusleiste unten in der Oberfläche.