homeserver/wartungsskripte/update_docker.sh
2026-06-27 20:35:49 +02:00

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 "=========================================="