Installation auf dem Server (Schritt für Schritt)
In diesem Kapitel verbinden Sie sich per SSH mit Ihrem VPS, installieren die Basis-Werkzeuge, klonen das Middleware-Repository, installieren die Python-Abhängigkeiten und starten den Server. Außerdem zeigen wir, wie Sie den Dienst im Hintergrund mit systemd betreiben.
Die Beispiele gehen von einer frischen Ubuntu-LTS-VM (22.04/24.04) mit öffentlicher IP aus.
3.1 Per SSH verbinden
SSH ist der Standard, um sich sicher mit einem Linux-Server zu verbinden.
Windows
Unter Windows nutzen Sie am einfachsten PuTTY (kostenloser SSH-Client).
- PuTTY installieren und starten
- In „Host Name" die öffentliche IP des Servers eintragen
- Port
22, ConnectionSSH - Dann Open klicken
- Mit dem vom Anbieter genannten Benutzernamen anmelden (häufig
rootoderubuntu)
SSH-Schlüssel
Nutzen Sie nach Möglichkeit SSH-Schlüssel (PuTTYgen erzeugt die Schlüssel).
macOS / Linux
Terminal öffnen und:
ssh ubuntu@<IHRE_SERVER_IP>Ersetzen Sie ubuntu durch den Standardbenutzer Ihres Images (oft root oder ubuntu).
3.2 System aktualisieren & Basis-Tools installieren
sudo apt update && sudo apt -y upgrade
sudo apt -y install git python3 python3-venv python3-pipRoot-Benutzer
Wenn Sie als root arbeiten, lassen Sie sudo weg.
3.3 Arbeitsverzeichnis anlegen
sudo mkdir -p /opt/bud-e
sudo chown -R "$USER":"$USER" /opt/bud-e
cd /opt/bud-e3.4 Repository klonen
git clone https://github.com/christophschuhmann/school-bud-e-middleware.git
cd school-bud-e-middleware3.5 (Empfohlen) Python-Virtuelle Umgebung
Eine virtuelle Umgebung (venv) hält die Python-Pakete der App vom System-Python getrennt.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip3.6 Abhängigkeiten installieren
pip install -r requirements.txt3.7 Konfiguration (Admin-Passwort, Ports, …)
Manche Builds lesen Einstellungen aus Umgebungsvariablen. Falls Ihre Version eine Variable für das Admin-Passwort vorsieht, setzen Sie sie jetzt (Wert anpassen):
export ADMIN_PASSWORD="ein-starkes-passwort"Alternative Konfiguration
Falls Ihre Version andere Namen oder einen Einrichtungs-Dialog nutzt, siehe README des Repos. Sie können exports auch in /opt/bud-e/env.sh ablegen und später sourcen oder über systemd einbinden.
3.8 Server (im Vordergrund) testen
Starten Sie die App direkt. In den meisten Builds gibt es einen Einstiegspunkt serve.py:
python serve.py --host 0.0.0.0 --port 8000Lassen Sie das Terminal offen und rufen Sie im Browser http://<IHRE_SERVER_IP>:8000/admin auf.
Test erfolgreich?
Erscheint die Admin-Anmeldung, beenden Sie den Test mit Strg+C.
3.9 Optional: Reverse-Proxy & HTTPS (Caddy oder Nginx)
Für den produktiven Betrieb ist eine Domain mit HTTPS sinnvoll. Am bequemsten ist ein Reverse-Proxy vor Port 8000, der automatisch TLS-Zertifikate von Let's Encrypt bezieht.
- Caddy-Installation – sehr einfache Auto-HTTPS-Variante
- Nginx + Certbot – verbreitete Alternative
Firewall-Ports
Öffnen Sie in Cloud-Firewall und/oder ufw die Ports 80 und 443.
3.10 Betrieb als Dienst mit systemd
Schritt 1: Optional – Env-Datei anlegen
cat <<'EOF' | sudo tee /opt/bud-e/env.sh
export ADMIN_PASSWORD="ein-starkes-passwort"
export BIND_HOST="0.0.0.0"
export BIND_PORT="8000"
EOF
sudo chown root:root /opt/bud-e/env.sh
sudo chmod 600 /opt/bud-e/env.shSchritt 2: systemd-Unit erstellen
cat <<'EOF' | sudo tee /etc/systemd/system/admin-bude.service
[Unit]
Description=Admin Bud-E (Middleware)
After=network.target
[Service]
Type=simple
User=%i
WorkingDirectory=/opt/bud-e/school-bud-e-middleware
EnvironmentFile=/opt/bud-e/env.sh
ExecStart=/opt/bud-e/school-bud-e-middleware/.venv/bin/python serve.py --host ${BIND_HOST:-0.0.0.0} --port ${BIND_PORT:-8000}
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOFOhne venv
Ohne venv ersetzen Sie den Python-Pfad durch /usr/bin/python3.
Schritt 3: Aktivieren & starten
sudo systemctl daemon-reload
sudo systemctl enable --now admin-bude.service
sudo systemctl status admin-bude.serviceDanach im Browser http://<IHRE_DOMAIN_ODER_IP>:8000/admin (oder die HTTPS-URL des Proxys) aufrufen.
3.11 Basis-Absicherung & Firewall
SSH-Schlüssel verwenden
Passwort-Login möglichst deaktivieren.
Firewall aktivieren
Auf Ubuntu z. B.:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableVerfügbarkeits-Überwachung
Einfache Verfügbarkeits-Überwachung einrichten (z. B. UptimeRobot).
Nächste Schritte
In der Admin-Oberfläche:
- Providers & Routes konfigurieren
- Pricing hinterlegen
- Ersten Aufruf vom Frontend testen
Weiter zur Konfiguration
Fahren Sie fort mit Google Cloud & Vertex AI