update.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #!/bin/bash
  2. # Variablen
  3. PAPERLESS_DIR="/home/stefan/paperless-ngx"
  4. REBOOT_REQUIRED_FILE="/var/run/reboot-required"
  5. # Farben für die Ausgabe
  6. GREEN='\033[0;32m'
  7. YELLOW='\033[1;33m'
  8. RED='\033[0;31m'
  9. NC='\033[0m' # No Color
  10. echo -e "${YELLOW}### Starte System-Update Prozess für User: $USER ###${NC}"
  11. # 1. & 2. APT Update und Check
  12. echo -e "${YELLOW}[1] Prüfe auf System-Updates...${NC}"
  13. sudo apt update
  14. # Wir prüfen, ob updatebare Pakete gelistet werden (Zeilen zählen)
  15. # 'apt list --upgradable' gibt immer eine Kopfzeile aus, daher prüfen wir, ob mehr als 1 Zeile existiert.
  16. UPDATES_COUNT=$(apt list --upgradable 2>/dev/null | grep -v "Auflistung" | grep -v "Listing" | wc -l)
  17. if [ "$UPDATES_COUNT" -gt 1 ]; then
  18. echo -e "${GREEN}Es sind Updates verfügbar. Starte Upgrade...${NC}"
  19. sudo apt upgrade -y
  20. sudo apt autoremove -y # Optional: Alte Pakete aufräumen
  21. else
  22. echo -e "${GREEN}Keine System-Updates verfügbar. Überspringe Upgrade.${NC}"
  23. fi
  24. echo -e "${YELLOW}------------------------------------------------${NC}"
  25. # 3. Docker Compose Down
  26. echo -e "${YELLOW}[2] Stoppe Paperless-ngx Container...${NC}"
  27. # Sicherheitscheck: Existiert das Verzeichnis?
  28. if [ -d "$PAPERLESS_DIR" ]; then
  29. cd "$PAPERLESS_DIR" || exit
  30. docker compose down
  31. else
  32. echo -e "${RED}FEHLER: Verzeichnis $PAPERLESS_DIR nicht gefunden!${NC}"
  33. exit 1
  34. fi
  35. echo -e "${YELLOW}------------------------------------------------${NC}"
  36. # 4. Docker Compose Pull
  37. echo -e "${YELLOW}[3] Lade neue Docker Images (Pull)...${NC}"
  38. docker compose pull
  39. echo -e "${YELLOW}------------------------------------------------${NC}"
  40. # 5. Prüfung auf Neustart (needrestart & Systemfile)
  41. echo -e "${YELLOW}[4] Prüfe, ob Neustart notwendig ist...${NC}"
  42. # Prüfung 1: Debian System Flag (für Kernel Updates)
  43. SYSTEM_REBOOT_NEEDED=false
  44. if [ -f "$REBOOT_REQUIRED_FILE" ]; then
  45. echo -e "${RED}!!! SYSTEM NEUSTART ERFORDERLICH (Kernel Update) !!!${NC}"
  46. SYSTEM_REBOOT_NEEDED=true
  47. fi
  48. # Prüfung 2: needrestart (für Services/Libs)
  49. # Prüfen ob needrestart installiert ist
  50. if command -v needrestart &> /dev/null; then
  51. sudo needrestart -k -p # -k prüft kernel, -p macht es script-freundlich (terse)
  52. # Wir zeigen dem User die normale Ausgabe für Details:
  53. sudo needrestart
  54. else
  55. echo "Hinweis: 'needrestart' ist nicht installiert. Installiere es mit 'sudo apt install needrestart' für genauere Infos."
  56. fi
  57. echo -e "${YELLOW}------------------------------------------------${NC}"
  58. # 6. Userabfrage
  59. echo -e "${YELLOW}[5] Entscheidung${NC}"
  60. if [ "$SYSTEM_REBOOT_NEEDED" = true ]; then
  61. echo -e "Das System meldet einen erforderlichen Neustart."
  62. fi
  63. read -p "Soll das System jetzt neu gestartet werden? (j/n): " REBOOT_CHOICE
  64. case "$REBOOT_CHOICE" in
  65. [jJ]|[yY])
  66. echo -e "${RED}System wird neu gestartet...${NC}"
  67. # Hinweis: Docker Container starten nach Reboot automatisch,
  68. # wenn in der docker-compose.yml 'restart: unless-stopped' oder 'always' steht.
  69. sudo reboot
  70. ;;
  71. *)
  72. echo -e "${GREEN}Kein Neustart gewählt. Fahre fort...${NC}"
  73. # 7. Docker Compose Up
  74. echo -e "${YELLOW}[6] Starte Paperless-ngx...${NC}"
  75. # Wir sind durch Schritt 3 bereits im richtigen Verzeichnis
  76. docker compose up -d
  77. echo -e "${GREEN}Script erfolgreich beendet. Paperless läuft.${NC}"
  78. ;;
  79. esac