Compare commits

...

2 commits

Author SHA1 Message Date
root
6a7e308299 feat: redid container update script to automatically update all under /opt/docker 2025-12-14 22:25:38 +01:00
root
18e8a7f87d feat: added bentopdf 2025-12-08 10:15:29 +01:00
3 changed files with 53 additions and 12 deletions

View file

@ -1,5 +1,9 @@
#!/bin/bash
echo "Restarting bentopdf"
docker-compose -f /opt/docker/bentopdf/docker-compose.yml down
docker-compose -f /opt/docker/bentopdf/docker-compose.yml up -d
echo "Restarting ddns"
docker-compose -f /opt/docker/ddns/docker-compose.yml down
docker-compose -f /opt/docker/ddns/docker-compose.yml up -d

2
start_jellyfin.sh Executable file
View file

@ -0,0 +1,2 @@
docker-compose -f /opt/docker/jellyfin/docker-compose.yml up -d

View file

@ -1,19 +1,54 @@
#!/bin/bash
rm -f /var/log/cron/update_containers.log
# ────────────────────────────────────────────────────────────────────────
# Zweck: Automatisches Prüfen und Anwenden von Updates für alle
# DockerComposeProjekte unter /opt/docker/
# ────────────────────────────────────────────────────────────────────────
cd /opt/docker/ddns
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_ddns.log
set -euo pipefail
IFS=$'\n\t'
cd /opt/docker/forgejo
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_forgejo.log
# ---------- Konfiguration ----------
BASE_DIR="/opt/docker" # Verzeichnis mit allen ComposeProjekten
LOG_DIR="/var/log/docker-update" # Ort für LogDateien
COMPOSE_CMD="docker-compose" # dockercompose v1
cd /opt/docker/jellyfin
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_jellyfin.log
# ---------- Hilfsfunktion ----------
log() {
local lvl=${1:-INFO}
local msg=${2:-}
echo "$(date '+%Y-%m-%d %H:%M:%S') [$lvl] $msg"
}
cd /opt/docker/nextcloud
docker-compose down && docker-compose pull && docker-compose build && docker-compose up -d >> /var/log/cron/update_nextcloud
# ---------- LogVerzeichnis anlegen ----------
mkdir -p "$LOG_DIR"
cd /opt/docker/vaultwarden
docker-compose down && docker-compose pull && docker-compose up -d >> /var/log/cron/update_vaultwarden
# ---------- HauptSchleife ----------
for proj_dir in "$BASE_DIR"/*/; do
# ComposeDatei vorhanden?
if [[ -f "$proj_dir/docker-compose.yml" || -f "$proj_dir/docker-compose.yaml" ]]; then
pushd "$proj_dir" >/dev/null
docker image prune -a -f >> /var/log/cron/docker_prune.log
# ───── LogDatei für dieses Projekt ──────────────────────────────────────
# (ohne `local`, weil wir uns nicht in einer Funktion befinden)
log_file="${LOG_DIR}/$(basename "$proj_dir")-update.log"
log "INFO" "Starte Update in ${proj_dir%/}"
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] Update in ${proj_dir%/}" >> "$log_file"
# ───── 1. Container herunterfahren ─────────────────────────────────────────────
$COMPOSE_CMD down >> "$log_file" 2>&1 || true
# ───── 2. Images pullen ───────────────────────────────────────────────────────
$COMPOSE_CMD pull >> "$log_file" 2>&1
# ───── 3. Container neu starten ───────────────────────────────────────────────
$COMPOSE_CMD up -d >> "$log_file" 2>&1
popd >/dev/null
log "INFO" "Update für ${proj_dir%/} abgeschlossen."
else
log "INFO" "Keine docker-compose.yml in ${proj_dir%/} überspringen."
fi
done
log "INFO" "Alle Projekte wurden aktualisiert."