diff --git a/update.sh b/update.sh new file mode 100755 index 0000000..591ddad --- /dev/null +++ b/update.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# NecroHash Updater +# Aktualisiert Code und Services OHNE Neukompilierung. + +TARGET_DIR="/opt/necrohash" +USER="pi" + +if [ "$EUID" -ne 0 ]; then + echo "Bitte als root ausführen (sudo ./update.sh)" + exit 1 +fi + +if [ ! -d "$TARGET_DIR" ]; then + echo "Verzeichnis $TARGET_DIR nicht gefunden." + exit 1 +fi + +cd "$TARGET_DIR" + +echo "=== Stoppe Dienste ===" +systemctl stop necrohash-miner +systemctl stop necrohash-gui + +echo "=== Aktualisiere Code (Git) ===" +# Lokale Änderungen (z.B. Config) kurzzeitig speichern +git stash +git pull origin master +# Lokale Änderungen wiederherstellen +git stash pop + +echo "=== Setze Berechtigungen ===" +chmod +x *.sh +chown -R $USER:$USER "$TARGET_DIR" + +echo "=== Aktualisiere Service-Definitionen ===" +# Wir schreiben die Services neu, falls sich im Repo die Startlogik geändert hat + +# GUI Service +cat < /etc/systemd/system/necrohash-gui.service +[Unit] +Description=NecroHash Web GUI +After=network.target + +[Service] +User=$USER +WorkingDirectory=$TARGET_DIR +ExecStart=$TARGET_DIR/start_gui.sh +Restart=always + +[Install] +WantedBy=multi-user.target +EOF + +# Miner Service +cat < /etc/systemd/system/necrohash-miner.service +[Unit] +Description=NecroHash Miner (cgminer) +After=network.target necrohash-gui.service + +[Service] +User=$USER +WorkingDirectory=$TARGET_DIR +ExecStart=$TARGET_DIR/miner_wrapper.sh +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target +EOF + +echo "=== Starte Dienste neu ===" +systemctl daemon-reload +systemctl start necrohash-gui +systemctl start necrohash-miner + +echo "Update abgeschlossen!"