SSL/TLS-Verwaltung (Upload+Aktivieren), install.sh-Idempotenz, poe_web/rpi-check-Cleanup entfernt
SSL/TLS (neue Seite Einstellungen -> SSL/TLS, eigenes Recht settings_ssl.view/.edit):
- Zertifikat+privater Schluessel per Upload hinterlegbar (PEM), Validierung
VOR dem Speichern: gueltiges Zertifikat, noch nicht abgelaufen, Schluessel
passt zum Zertifikat (Abgleich ueber die oeffentlichen Schluessel als
DER-Bytes -- funktioniert algorithmus-unabhaengig fuer RSA/EC/...).
Speicherort /etc/tesm/ssl (bewusst ausserhalb von /srv/tesm, damit
rsync --delete beim Update das Zertifikat nicht mitloescht), Key mit
chmod 600.
- HTTPS aktivieren schreibt/validiert (nginx -t) eine neue nginx-Konfiguration
und laedt erst danach neu; Port 80 leitet dann automatisch auf https weiter.
HSTS optional zuschaltbar, setzt aktives SSL voraus.
- Gleiches Sicherheitsnetz wie bei den Netzwerkeinstellungen: nach dem
Anwenden 45s Zeitfenster zum Bestaetigen, sonst automatischer Rueckroll
der nginx-Konfiguration UND der ssl_enabled/hsts_enabled-Einstellungen.
Beide Pfade (Timeout-Rollback und Bestaetigen-verhindert-Rollback) live
auf Testsystem-Update-Restart verifiziert, inklusive eines ECHTEN,
ungeplant ausgeloesten Rollbacks waehrend des Testens.
- Noch KEINE Let's-Encrypt-Automatisierung (siehe Kommentar im Code) --
alle bekannten Instanzen laufen intern ohne oeffentliche Domain, HTTP-01
wuerde dort nicht funktionieren; kann bei Bedarf separat ergaenzt werden.
install.sh: Update-Idempotenz ("nur anfassen, was sich geaendert hat"):
- install_if_changed()-Helfer: Custom-Skript/systemd-Units/MOTD-Banner
werden nur noch bei tatsaechlich geaendertem Inhalt neu geschrieben,
daemon-reload nur wenn sich mindestens eine Unit geaendert hat.
- nginx-Konfiguration wird nur noch bei einer Frischinstallation aus dem
Repo-Template geschrieben -- eine bereits vorhandene (egal ob unveraendert
oder von der App selbst um SSL erweitert) wird nie wieder ueberschrieben.
Voraussetzung dafuer, dass die neue SSL-Funktion ein Update ueberlebt.
update.sh: komplette Sonderbehandlung fuer die zwei TESM vorausgehenden
Generationen (rpi-check.service, poe_web.service/poe_manager) entfernt --
auf allen aktuellen Installationen laengst migriert. Deaktivierte
Unit-Dateien dieser Generationen wurden auf Testsystem-Update-Restart
zusaetzlich manuell endgueltig geloescht (waren dort seit einer Migration
im September 2025 nur deaktiviert, nicht entfernt).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,16 +9,15 @@
|
||||
# automatischem Backup + Migrations-Sicherheitsnetz samt Rückroll-
|
||||
# Möglichkeit -- siehe install.sh für Details).
|
||||
#
|
||||
# Dieses Skript selbst ist nur noch für das Ablösen ÄLTERER, TESM
|
||||
# vorausgehender Installationsstufen auf diesem Host zuständig:
|
||||
# 1. Das ursprüngliche, reine Bash-Setup aus dem separaten Repo
|
||||
# https://gitea.int.eertmoed.net/WiS/Aruba-PoE (rpi-check.service +
|
||||
# statische ips.list, keine Datenbank/Web-UI).
|
||||
# 2. Die spätere Flask-App "PoE Manager" unter /srv/poe_manager
|
||||
# (poe_web.service, Vorgänger von TESM in diesem Repo vor der
|
||||
# Umbenennung).
|
||||
# Beide werden NICHT gelöscht, sondern nur gestoppt/deaktiviert und
|
||||
# (falls vorhanden) beiseite verschoben.
|
||||
# Dieses Skript ist reiner Bootstrapper: Download + Entpacken + Aufruf von
|
||||
# install.sh. Die frühere Sonderbehandlung zweier TESM vorausgehender
|
||||
# Installationsstufen (rpi-check.service aus dem ursprünglichen reinen
|
||||
# Bash-Setup, poe_web.service/poe_manager als Flask-Vorgänger von TESM)
|
||||
# wurde entfernt -- diese Stufen sind auf allen aktuellen Installationen
|
||||
# längst migriert, die dazugehörigen Unit-Dateien wurden dort manuell
|
||||
# entfernt. Ein heute noch unmigriertes System wäre ohnehin so alt, dass
|
||||
# ein manueller Blick vor dem Update angebracht ist statt automatischer
|
||||
# stillschweigender Bereinigung.
|
||||
#
|
||||
# Auszuführen als root auf dem Zielsystem:
|
||||
# sudo ./update.sh
|
||||
@@ -38,7 +37,6 @@ GITEA_TOKEN="${TESM_GITEA_TOKEN:-}"
|
||||
PACKAGE_NAME="tesm-${RELEASE_TAG}.tar.gz"
|
||||
DOWNLOAD_URL="${GITEA_BASE}/${REPO_OWNER}/${REPO_NAME}/releases/download/${RELEASE_TAG}/${PACKAGE_NAME}"
|
||||
|
||||
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
WORK_DIR="/tmp/tesm-update-$(date +%s)"
|
||||
PACKAGE_FILE="$WORK_DIR/${PACKAGE_NAME}"
|
||||
|
||||
@@ -61,10 +59,6 @@ echo "install.sh daraus -- das erkennt selbst, ob es sich um eine frische"
|
||||
echo "Installation oder ein Update einer bestehenden handelt, und sichert"
|
||||
echo "die Datenbank bei einer Schema-Änderung automatisch vorsorglich ab."
|
||||
echo
|
||||
echo "Ältere, TESM vorausgehende Installationsstufen (PoE Manager unter"
|
||||
echo "/srv/poe_manager, das ursprüngliche reine Bash-Setup) werden dabei"
|
||||
echo "erkannt, gestoppt/deaktiviert und beiseite verschoben (nicht gelöscht)."
|
||||
echo
|
||||
|
||||
read -r -p "Fortfahren? [y/N] " confirm
|
||||
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
|
||||
@@ -86,22 +80,6 @@ mkdir -p "$WORK_DIR/pkg"
|
||||
tar xzf "$PACKAGE_FILE" -C "$WORK_DIR/pkg" --strip-components=1
|
||||
echo -e "${GREEN}✔${NC} Paket entpackt."
|
||||
|
||||
echo -e "${RED}→${NC} Stoppe/deaktiviere ältere Installationsstufen (falls vorhanden)..."
|
||||
# "|| true" macht nichts kaputt, falls einzelne Units gar nicht vorhanden
|
||||
# sind. tesm.service selbst wird NICHT hier, sondern von install.sh
|
||||
# gestoppt -- das entscheidet dort auch gleich, ob ein Backup nötig ist.
|
||||
systemctl stop poe_web.service 2>/dev/null || true
|
||||
systemctl disable poe_web.service 2>/dev/null || true
|
||||
systemctl stop rpi-check.service rpi-check-restart.service rpi-check-restart.timer 2>/dev/null || true
|
||||
systemctl disable rpi-check.service rpi-check-restart.service rpi-check-restart.timer 2>/dev/null || true
|
||||
if [ -d /srv/poe_manager ]; then
|
||||
dest="/srv/poe_manager-backup-${TIMESTAMP}"
|
||||
echo -e "${RED}→${NC} Sichere /srv/poe_manager nach ${dest}..."
|
||||
mv /srv/poe_manager "$dest"
|
||||
echo -e "${GREEN}✔${NC} Gesichert (nicht gelöscht)."
|
||||
fi
|
||||
echo -e "${GREEN}✔${NC} Ältere Installationsstufen bereinigt."
|
||||
|
||||
echo -e "${RED}→${NC} Starte install.sh aus dem Paket..."
|
||||
bash "$WORK_DIR/pkg/install.sh"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user