| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/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
|