Add update script for quick maintenance without recompilation

This commit is contained in:
Gemini Bot
2026-01-20 13:24:31 +00:00
parent e7852233d4
commit e1cc129d7d

77
update.sh Executable file
View File

@@ -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 <<EOF > /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 <<EOF > /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!"