#!/bin/bash # Variablen PAPERLESS_DIR="/home/stefan/paperless-ngx" REBOOT_REQUIRED_FILE="/var/run/reboot-required" # Farben für die Ausgabe GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color echo -e "${YELLOW}### Starte System-Update Prozess für User: $USER ###${NC}" # 1. & 2. APT Update und Check echo -e "${YELLOW}[1] Prüfe auf System-Updates...${NC}" sudo apt update # Wir prüfen, ob updatebare Pakete gelistet werden (Zeilen zählen) # 'apt list --upgradable' gibt immer eine Kopfzeile aus, daher prüfen wir, ob mehr als 1 Zeile existiert. UPDATES_COUNT=$(apt list --upgradable 2>/dev/null | grep -v "Auflistung" | grep -v "Listing" | wc -l) if [ "$UPDATES_COUNT" -gt 1 ]; then echo -e "${GREEN}Es sind Updates verfügbar. Starte Upgrade...${NC}" sudo apt upgrade -y sudo apt autoremove -y # Optional: Alte Pakete aufräumen else echo -e "${GREEN}Keine System-Updates verfügbar. Überspringe Upgrade.${NC}" fi echo -e "${YELLOW}------------------------------------------------${NC}" # 3. Docker Compose Down echo -e "${YELLOW}[2] Stoppe Paperless-ngx Container...${NC}" # Sicherheitscheck: Existiert das Verzeichnis? if [ -d "$PAPERLESS_DIR" ]; then cd "$PAPERLESS_DIR" || exit docker compose down else echo -e "${RED}FEHLER: Verzeichnis $PAPERLESS_DIR nicht gefunden!${NC}" exit 1 fi echo -e "${YELLOW}------------------------------------------------${NC}" # 4. Docker Compose Pull echo -e "${YELLOW}[3] Lade neue Docker Images (Pull)...${NC}" docker compose pull echo -e "${YELLOW}------------------------------------------------${NC}" # 5. Prüfung auf Neustart (needrestart & Systemfile) echo -e "${YELLOW}[4] Prüfe, ob Neustart notwendig ist...${NC}" # Prüfung 1: Debian System Flag (für Kernel Updates) SYSTEM_REBOOT_NEEDED=false if [ -f "$REBOOT_REQUIRED_FILE" ]; then echo -e "${RED}!!! SYSTEM NEUSTART ERFORDERLICH (Kernel Update) !!!${NC}" SYSTEM_REBOOT_NEEDED=true fi # Prüfung 2: needrestart (für Services/Libs) # Prüfen ob needrestart installiert ist if command -v needrestart &> /dev/null; then sudo needrestart -k -p # -k prüft kernel, -p macht es script-freundlich (terse) # Wir zeigen dem User die normale Ausgabe für Details: sudo needrestart else echo "Hinweis: 'needrestart' ist nicht installiert. Installiere es mit 'sudo apt install needrestart' für genauere Infos." fi echo -e "${YELLOW}------------------------------------------------${NC}" # 6. Userabfrage echo -e "${YELLOW}[5] Entscheidung${NC}" if [ "$SYSTEM_REBOOT_NEEDED" = true ]; then echo -e "Das System meldet einen erforderlichen Neustart." fi read -p "Soll das System jetzt neu gestartet werden? (j/n): " REBOOT_CHOICE case "$REBOOT_CHOICE" in [jJ]|[yY]) echo -e "${RED}System wird neu gestartet...${NC}" # Hinweis: Docker Container starten nach Reboot automatisch, # wenn in der docker-compose.yml 'restart: unless-stopped' oder 'always' steht. sudo reboot ;; *) echo -e "${GREEN}Kein Neustart gewählt. Fahre fort...${NC}" # 7. Docker Compose Up echo -e "${YELLOW}[6] Starte Paperless-ngx...${NC}" # Wir sind durch Schritt 3 bereits im richtigen Verzeichnis docker compose up -d echo -e "${GREEN}Script erfolgreich beendet. Paperless läuft.${NC}" ;; esac