From f543ead2f9c7149b0a32fded898680d9a185a0f7 Mon Sep 17 00:00:00 2001 From: RolandS <1+xosna@noreply.localhost> Date: Sat, 6 Jun 2026 08:06:28 +0200 Subject: [PATCH] =?UTF-8?q?update-picpeak.sh=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- update-picpeak.sh | 110 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 update-picpeak.sh diff --git a/update-picpeak.sh b/update-picpeak.sh new file mode 100644 index 0000000..076ae67 --- /dev/null +++ b/update-picpeak.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +set -Eeuo pipefail + +APP_DIR="/opt/picpeak" +BACKUP_DIR="/root/picpeak-backups" +LOG_FILE="/var/log/picpeak-update.log" +RETENTION_DAYS=30 + +DATE=$(date +"%Y-%m-%d_%H-%M-%S") + +mkdir -p "$BACKUP_DIR" + +exec > >(tee -a "$LOG_FILE") 2>&1 + +echo "" +echo "=================================================" +echo " PicPeak Update gestartet: $DATE" +echo "=================================================" + +cd "$APP_DIR" + +# Git Safe Directory +git config --global --add safe.directory "$APP_DIR" >/dev/null 2>&1 || true + +# Prüfungen +[ -d ".git" ] || { echo "FEHLER: Kein Git Repository"; exit 1; } + +echo "" +echo "1. Dateibackup erstellen..." + +tar -czf \ +"$BACKUP_DIR/picpeak-files-$DATE.tar.gz" \ +"$APP_DIR" + +echo "OK" + +echo "" +echo "2. Datenbank sichern..." + +DB_USER=$(grep '^DB_USER=' .env | cut -d= -f2) +DB_NAME=$(grep '^DB_NAME=' .env | cut -d= -f2) + +docker exec picpeak-postgres \ +pg_dump -U "$DB_USER" "$DB_NAME" \ +> "$BACKUP_DIR/picpeak-db-$DATE.sql" + +echo "OK" + +echo "" +echo "3. Git Update..." + +git pull + +echo "OK" + +echo "" +echo "4. Docker Images neu bauen..." + +docker compose build --no-cache + +echo "OK" + +echo "" +echo "5. Container starten..." + +docker compose up -d + +echo "OK" + +echo "" +echo "6. Healthcheck..." + +sleep 20 + +docker compose ps + +if docker compose ps | grep -q unhealthy; then + echo "FEHLER: Mindestens ein Container unhealthy" + exit 1 +fi + +echo "OK" + +echo "" +echo "7. Alte Docker Images bereinigen..." + +docker image prune -f + +echo "OK" + +echo "" +echo "8. Alte Backups löschen (> $RETENTION_DAYS Tage)..." + +find "$BACKUP_DIR" -type f -mtime +$RETENTION_DAYS -delete + +echo "OK" + +echo "" +echo "=================================================" +echo " Update erfolgreich abgeschlossen" +echo "=================================================" +echo "" + +echo "Aktive Container:" +docker compose ps + +echo "" +echo "Neueste Backups:" +ls -lh "$BACKUP_DIR" | tail -10 \ No newline at end of file