#!/usr/bin/env bash # update-einrichten.sh — richtet auf dem Rechner (Pi) den Dienst ein, der # Updates aus der App ausführt (Admin → Update). Einmal ausführen, im # geklonten Repo, mit sudo. Mehrfach ausführbar. # # sudo bash Docker/update-einrichten.sh # # Danach: systemd beobachtet sessions/update/auftrag.json; legt die App dort # einen Auftrag ab, startet Docker/update-ausfuehren.sh. Der Container selbst # bekommt keinen Zugriff auf Docker. set -u if [ "$(id -u)" -ne 0 ]; then echo "Bitte mit sudo ausführen."; exit 1; fi REPO="$(cd "$(dirname "$0")/.." && pwd)" DIR="$REPO/sessions/update" EIGNER=$(stat -c %U "$REPO") if ! runuser -u "$EIGNER" -- git -C "$REPO" remote get-url origin >/dev/null 2>&1; then echo "Kein Git-Repo mit 'origin' in $REPO — die App muss aus einem Klon des Git-Servers laufen."; exit 1 fi mkdir -p "$DIR" # Der Container läuft als Benutzer node (uid 1000) und legt hier den Auftrag ab. chown 1000:1000 "$DIR" # Laufende Version vermerken: der nächstliegende Tag. VERSION=$(runuser -u "$EIGNER" -- git -C "$REPO" describe --tags --abbrev=0 2>/dev/null || echo "") COMMIT=$(runuser -u "$EIGNER" -- git -C "$REPO" rev-parse --short HEAD) printf '{"version":"%s","commit":"%s","am":"%s"}\n' "$VERSION" "$COMMIT" "$(date -Iseconds)" > "$DIR/installiert.json" printf '{"eingerichtet":"%s"}\n' "$(date -Iseconds)" > "$DIR/dienst.json" cat > /etc/systemd/system/projektuebersicht-update.service < /etc/systemd/system/projektuebersicht-update.path <