72 lines
2.3 KiB
Bash
Executable file
72 lines
2.3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
PROJECTS=(
|
|
"/mnt/PB960/homeserver/dyndns"
|
|
"/mnt/PB960/homeserver/excalidraw"
|
|
"/mnt/PB960/homeserver/forgejo"
|
|
"/mnt/PB960/homeserver/gantt_dockerfolder"
|
|
"/mnt/PB960/homeserver/jellyfin"
|
|
"/mnt/PB960/homeserver/kitchenowl"
|
|
"/mnt/PB960/homeserver/matrix"
|
|
"/mnt/PB960/homeserver/n8n"
|
|
"/mnt/PB960/homeserver/openProject"
|
|
"/mnt/PB960/homeserver/passbolt"
|
|
"/mnt/PB960/homeserver/sparkyFitness"
|
|
"/mnt/PB960/homeserver/sure"
|
|
"/mnt/PB960/homeserver/traefik"
|
|
"/mnt/PB960/homeserver/xWiki"
|
|
)
|
|
|
|
echo "=========================================="
|
|
echo " STARRTE AUTOMATISCHES DOCKER-UPDATE "
|
|
echo " Datum: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
echo "=========================================="
|
|
|
|
# Prüfen, ob das Skript als Root ausgeführt wird
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "[FEHLER] Bitte starte das Skript mit 'sudo'!"
|
|
exit 1
|
|
fi
|
|
|
|
# Aktuellste Version des Repos holen
|
|
echo "[1/2] Aktualisiere Git-Repository (Homeserver)..."
|
|
cd /mnt/PB960/homeserver && git pull
|
|
|
|
echo "[2/2] Aktualisiere Git-Repository (Gantt)..."
|
|
cd /mnt/PB960/data/gantt && git pull
|
|
|
|
for TARGET_DIR in "${PROJECTS[@]}"; do
|
|
if [ -d "$TARGET_DIR" ]; then
|
|
echo ""
|
|
echo "------------------------------------------"
|
|
echo "[INFO] Verarbeite Projekt in: $TARGET_DIR"
|
|
echo "------------------------------------------"
|
|
|
|
cd "$TARGET_DIR" || continue
|
|
|
|
# 1. Container sauber stoppen
|
|
echo "[1/4] Stoppe laufende Container..."
|
|
docker compose down
|
|
|
|
# 2. Neueste Versionen/Images aus dem Netz ziehen
|
|
echo "[2/4] Ziehe neueste Docker-Images (Pull)..."
|
|
docker compose pull
|
|
|
|
# 3. Container im Hintergrund neu starten (erzwingt das Update)
|
|
echo "[3/4] Starte Container neu (erzwinge Update)..."
|
|
docker compose up -d --build --force-recreate
|
|
|
|
# 4. Alte, ungenutzte Image-Reste löschen (spart Speicherplatz)
|
|
echo "[4/4] Bereinige alte Image-Leichen..."
|
|
docker image prune -f
|
|
|
|
echo "[ERFOLG] Projekt $TARGET_DIR wurde aktualisiert!"
|
|
else
|
|
echo "[WARNUNG] Verzeichnis $TARGET_DIR existiert nicht. Überspringe..."
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " ALLE UPDATES ERFOLGREICH DURCHGEFÜHRT! "
|
|
echo "=========================================="
|