|
|
@@ -0,0 +1,100 @@
|
|
|
+#!/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
|