#!/bin/bash # Projektpfad und venv-Verzeichnis definieren PROJECT_PATH="/home/pi/pi-race-timer" VENV_PATH="$PROJECT_PATH/venv" SERVICE_NAME="pi-race-timer.service" INSTALLER_PATH="/home/pi/install.sh" # Funktion für das Skript-Neustarten restart_installer() { echo "🔄 Installer wurde geändert, Neustart erfolgt..." exec $SHELL "$INSTALLER_PATH" } echo "📦 Projekt wird installiert..." # Prüfen, ob das Projektverzeichnis existiert if [ -d "$PROJECT_PATH" ]; then echo "Projektverzeichnis gefunden. Führe Git Pull aus..." # Projekt aktualisieren cd $PROJECT_PATH git pull origin main # Prüfen, ob das Installations-Skript selbst geändert wurde if [ "$(git log -1 --pretty=%H -- $INSTALLER_PATH)" != "$(cat $INSTALLER_PATH.sha)" ]; then # Installer wurde geändert, daher neu starten echo "Installationsskript wurde geändert." git log -1 --pretty=%H -- $INSTALLER_PATH > $INSTALLER_PATH.sha restart_installer fi # Virtuelle Umgebung löschen if [ -d "$VENV_PATH" ]; then echo "Lösche vorhandene virtuelle Umgebung..." rm -rf $VENV_PATH fi # Systemd-Dienst entfernen echo "Entferne alten systemd-Dienst..." sudo systemctl stop $SERVICE_NAME sudo systemctl disable $SERVICE_NAME sudo rm /etc/systemd/system/$SERVICE_NAME else # Projekt klonen, wenn es nicht existiert echo "Projektverzeichnis nicht gefunden. Klone das Projekt..." git clone https://git.geigernet.eu/rainer/pi-race-timer.git $PROJECT_PATH cd $PROJECT_PATH git log -1 --pretty=%H -- $INSTALLER_PATH > $INSTALLER_PATH.sha fi # Virtuelle Umgebung einrichten echo "Erstelle virtuelle Umgebung..." python3 -m venv $VENV_PATH source $VENV_PATH/bin/activate # Python-Abhängigkeiten installieren echo "Installiere Python-Abhängigkeiten..." pip install -U pip pip install -r requirements.txt # Erstelle die systemd-Service-Datei echo "Erstelle systemd-Service-Datei..." echo "[Unit] Description=Pi Race Timer After=network.target [Service] Type=simple User=pi WorkingDirectory=$PROJECT_PATH ExecStart=$VENV_PATH/bin/python $PROJECT_PATH/run.py Environment=\"PATH=$VENV_PATH/bin:$PATH\" Environment=\"VIRTUAL_ENV=$VENV_PATH\" Restart=always RestartSec=5 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target" | sudo tee /etc/systemd/system/$SERVICE_NAME > /dev/null # systemd-Dienst einrichten echo "Richte systemd-Dienst ein..." sudo systemctl daemon-reexec sudo systemctl enable $SERVICE_NAME sudo systemctl start $SERVICE_NAME echo "✅ Installation abgeschlossen. Webinterface erreichbar unter: http://:5000"