From 1f2be061833ba45179a72aeff2bed7094012e6a3 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Tue, 3 Jun 2025 21:55:13 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Refactor:=20Remove=20.gitignore,?= =?UTF-8?q?=20update=20documentation=20files,=20clean=20logs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/logs/myp-install-debug.log | 36 +++--- backend/logs/myp-install-errors.log | 2 +- backend/logs/myp-install-warnings.log | 2 +- backend/logs/myp-install.log | 79 ++++++------ backend/setup.sh | 175 ++++++-------------------- 5 files changed, 103 insertions(+), 191 deletions(-) diff --git a/backend/logs/myp-install-debug.log b/backend/logs/myp-install-debug.log index 1ae9d42e..5ec73863 100644 --- a/backend/logs/myp-install-debug.log +++ b/backend/logs/myp-install-debug.log @@ -1,72 +1,72 @@ ================================================================= -MYP Installation DEBUG Log - 2025-06-03 21:34:03 +MYP Installation DEBUG Log - 2025-06-03 21:42:26 ================================================================= -[2025-06-03 21:34:03] DEBUG von setup.sh:485 +[2025-06-03 21:42:26] DEBUG von setup.sh:451 Debian erkannt über /etc/debian_version: 12.11 --- -[2025-06-03 21:34:03] DEBUG von setup.sh:553 +[2025-06-03 21:42:26] DEBUG von setup.sh:519 Kein Raspberry Pi erkannt. Hardware-Info: --- -[2025-06-03 21:34:03] DEBUG von setup.sh:554 +[2025-06-03 21:42:26] DEBUG von setup.sh:520 - Device Tree: nicht verfügbar --- -[2025-06-03 21:34:03] DEBUG von setup.sh:555 +[2025-06-03 21:42:26] DEBUG von setup.sh:521 - CPU Hardware: nicht verfügbar --- -[2025-06-03 21:34:03] DEBUG von setup.sh:595 +[2025-06-03 21:42:26] DEBUG von setup.sh:561 Vollständige Kernel-Info: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux --- -[2025-06-03 21:34:03] DEBUG von setup.sh:651 +[2025-06-03 21:42:26] DEBUG von setup.sh:617 DNS-Test Details: Teste DNS für 8.8.8.8: Erfolg mit nslookup. --- -[2025-06-03 21:34:04] DEBUG von setup.sh:752 +[2025-06-03 21:42:27] DEBUG von setup.sh:718 Externe IP ermittelt über ifconfig.me: 163.116.179.142 --- -[2025-06-03 21:34:22] DEBUG von setup.sh:1168 +[2025-06-03 21:42:56] DEBUG von setup.sh:1134 sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf --- -[2025-06-03 21:34:22] DEBUG von setup.sh:1224 +[2025-06-03 21:42:56] DEBUG von setup.sh:1190 Sysctl-Phase abgeschlossen - fahre mit Installation fort --- -[2025-06-03 21:34:22] DEBUG von setup.sh:1250 +[2025-06-03 21:42:56] DEBUG von setup.sh:1216 systemd-networkd nicht aktiv - überspringe --- -[2025-06-03 21:34:23] DEBUG von setup.sh:1276 +[2025-06-03 21:42:56] DEBUG von setup.sh:1242 NetworkManager nicht aktiv - überspringe --- -[2025-06-03 21:34:23] DEBUG von setup.sh:1282 +[2025-06-03 21:42:56] DEBUG von setup.sh:1248 IPv6 Einträge in /etc/hosts auskommentiert --- -[2025-06-03 21:34:23] DEBUG von setup.sh:1299 +[2025-06-03 21:42:56] DEBUG von setup.sh:1265 Netzwerk-Sicherheit ohne Blockierung abgeschlossen --- -[2025-06-03 21:36:04] DEBUG von setup.sh:1605 +[2025-06-03 21:44:44] DEBUG von setup.sh:1571 SSL-Verzeichnis erstellt: /usr/local/share/ca-certificates/myp --- -[2025-06-03 21:36:06] DEBUG von setup.sh:1713 +[2025-06-03 21:44:48] DEBUG von setup.sh:1679 SSL-Konfiguration abgeschlossen ohne hängende Prozesse --- -[2025-06-03 21:36:07] DEBUG von setup.sh:998 +[2025-06-03 21:44:49] DEBUG von setup.sh:964 flask erfolgreich importiert --- -[2025-06-03 21:36:08] DEBUG von setup.sh:998 +[2025-06-03 21:44:49] DEBUG von setup.sh:964 requests erfolgreich importiert --- diff --git a/backend/logs/myp-install-errors.log b/backend/logs/myp-install-errors.log index b56ed6b7..07071f1a 100644 --- a/backend/logs/myp-install-errors.log +++ b/backend/logs/myp-install-errors.log @@ -1,4 +1,4 @@ ================================================================= -MYP Installation FEHLER Log - 2025-06-03 21:34:03 +MYP Installation FEHLER Log - 2025-06-03 21:42:26 ================================================================= diff --git a/backend/logs/myp-install-warnings.log b/backend/logs/myp-install-warnings.log index 2fd5630d..a9b834f9 100644 --- a/backend/logs/myp-install-warnings.log +++ b/backend/logs/myp-install-warnings.log @@ -1,4 +1,4 @@ ================================================================= -MYP Installation WARNUNGEN Log - 2025-06-03 21:34:03 +MYP Installation WARNUNGEN Log - 2025-06-03 21:42:26 ================================================================= diff --git a/backend/logs/myp-install.log b/backend/logs/myp-install.log index 61ceb386..c75616c5 100644 --- a/backend/logs/myp-install.log +++ b/backend/logs/myp-install.log @@ -1,25 +1,25 @@ ================================================================= -MYP Installation Log - 2025-06-03 21:34:03 +MYP Installation Log - 2025-06-03 21:42:26 Script Version: 4.1.0 System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux ================================================================= -[2025-06-03 21:34:03] === MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN === -[2025-06-03 21:34:03] ✅ Root-Berechtigung bestätigt -[2025-06-03 21:34:03] === SYSTEM-RESSOURCEN PRÜFUNG === +[2025-06-03 21:42:26] === MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN === +[2025-06-03 21:42:26] ✅ Root-Berechtigung bestätigt +[2025-06-03 21:42:26] === SYSTEM-RESSOURCEN PRÜFUNG === [FORTSCHRITT] Prüfe RAM... [FORTSCHRITT] Verfügbarer RAM: 15614MB [ERFOLG] ✅ Ausreichend RAM verfügbar (15614MB) [FORTSCHRITT] Prüfe Festplattenplatz... -[FORTSCHRITT] Verfügbarer Festplattenplatz: 12,2GB (12473MB) +[FORTSCHRITT] Verfügbarer Festplattenplatz: 12,2GB (12472MB) [ERFOLG] ✅ Ausreichend Festplattenplatz verfügbar (12,2GB) [FORTSCHRITT] Prüfe CPU... [FORTSCHRITT] CPU: 6 Kern(e) - 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz [ERFOLG] ✅ CPU-Information erfolgreich ermittelt -[2025-06-03 21:34:03] ✅ System-Ressourcen-Prüfung abgeschlossen +[2025-06-03 21:42:26] ✅ System-Ressourcen-Prüfung abgeschlossen [FORTSCHRITT] Prüfe Debian/Raspbian-System... [DEBUG] Debian erkannt über /etc/debian_version: 12.11 -[2025-06-03 21:34:03] ✅ Debian/Raspbian-basiertes System erkannt (Version: 12.11) +[2025-06-03 21:42:26] ✅ Debian/Raspbian-basiertes System erkannt (Version: 12.11) [FORTSCHRITT] Prüfe Raspberry Pi Hardware... [INFO] 💻 Standard-PC/Server System (kein Raspberry Pi) [DEBUG] Kein Raspberry Pi erkannt. Hardware-Info: @@ -31,7 +31,7 @@ System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 [FORTSCHRITT] Prüfe Kernel-Version... [INFO] 🐧 Kernel-Version: 6.1.0-37-amd64 [DEBUG] Vollständige Kernel-Info: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux -[2025-06-03 21:34:03] ✅ System-Analyse abgeschlossen +[2025-06-03 21:42:26] ✅ System-Analyse abgeschlossen [FORTSCHRITT] Prüfe Internetverbindung (erweiterte Methoden)... [FORTSCHRITT] Teste DNS-Auflösung... [DEBUG] DNS-Test Details: Teste DNS für 8.8.8.8: Erfolg mit nslookup.  @@ -40,13 +40,13 @@ System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 [FORTSCHRITT] Ermittle externe IP-Adresse... [INFO] 🌐 Externe IP: 163.116.179.142 [DEBUG] Externe IP ermittelt über ifconfig.me: 163.116.179.142 -[2025-06-03 21:34:04] === KONFIGURIERE HOSTNAME === -[2025-06-03 21:34:04] ✅ Hostname bereits korrekt: 'raspberrypi' -[2025-06-03 21:34:14] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1 -[2025-06-03 21:34:14] === ROBUSTE SYSTEM-UPDATE === +[2025-06-03 21:42:27] === KONFIGURIERE HOSTNAME === +[2025-06-03 21:42:27] ✅ Hostname bereits korrekt: 'raspberrypi' +[2025-06-03 21:42:48] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1 +[2025-06-03 21:42:48] === ROBUSTE SYSTEM-UPDATE === [FORTSCHRITT] Konfiguriere APT für bessere Zuverlässigkeit... [FORTSCHRITT] Validiere APT-Repositories... -[2025-06-03 21:34:14] ✅ Source-Repositories deaktiviert (nicht benötigt) +[2025-06-03 21:42:48] ✅ Source-Repositories deaktiviert (nicht benötigt) [FORTSCHRITT] Aktualisiere Paketlisten mit Retry... [FORTSCHRITT] Führe System-Upgrade durch... [FORTSCHRITT] Installiere essenzielle System-Tools... @@ -68,8 +68,8 @@ System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 [FORTSCHRITT] Installiere Pakete: dbus [FORTSCHRITT] Installiere Pakete: systemd-timesyncd [FORTSCHRITT] Synchronisiere Systemzeit... -[2025-06-03 21:34:22] ✅ Robustes System-Update abgeschlossen -[2025-06-03 21:34:22] === KONFIGURIERE OPTIONALE NETZWERK-SICHERHEIT === +[2025-06-03 21:42:56] ✅ Robustes System-Update abgeschlossen +[2025-06-03 21:42:56] === KONFIGURIERE OPTIONALE NETZWERK-SICHERHEIT === [FORTSCHRITT] Deaktiviere IPv6 (robust)... [FORTSCHRITT] Deaktiviere IPv6 in GRUB... [INFO] IPv6 bereits in GRUB deaktiviert @@ -83,15 +83,15 @@ System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 [DEBUG] systemd-networkd nicht aktiv - überspringe [DEBUG] NetworkManager nicht aktiv - überspringe [DEBUG] IPv6 Einträge in /etc/hosts auskommentiert -[2025-06-03 21:34:23] ✅ Optionale Netzwerk-Sicherheit konfiguriert: -[2025-06-03 21:34:23] 📝 Sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf -[2025-06-03 21:34:23] ⚙️ Einstellungen werden beim nächsten Boot aktiv -[2025-06-03 21:34:23] 🔧 Netzwerk-Konfiguration vorbereitet +[2025-06-03 21:42:56] ✅ Optionale Netzwerk-Sicherheit konfiguriert: +[2025-06-03 21:42:56] 📝 Sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf +[2025-06-03 21:42:56] ⚙️ Einstellungen werden beim nächsten Boot aktiv +[2025-06-03 21:42:56] 🔧 Netzwerk-Konfiguration vorbereitet [INFO] 💡 Tipp: Netzwerk-Sicherheit kann manuell aktiviert werden: [INFO] → sudo sysctl -p /etc/sysctl.d/99-myp-security.conf [INFO] → Oder automatisch beim nächsten Neustart [DEBUG] Netzwerk-Sicherheit ohne Blockierung abgeschlossen -[2025-06-03 21:34:23] === ROBUSTE PYTHON-INSTALLATION === +[2025-06-03 21:42:56] === ROBUSTE PYTHON-INSTALLATION === [FORTSCHRITT] Installiere Python 3 und Build-Abhängigkeiten... [FORTSCHRITT] Installiere Pakete: python3 [FORTSCHRITT] Installiere Pakete: python3-pip @@ -110,26 +110,26 @@ System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 [FORTSCHRITT] Installiere Pakete: zlib1g-dev [FORTSCHRITT] Installiere Pakete: sqlite3 [FORTSCHRITT] Validiere Python-Installation... -[2025-06-03 21:34:28] ✅ Python Version: 3.11.2 +[2025-06-03 21:43:02] ✅ Python Version: 3.11.2 [FORTSCHRITT] Konfiguriere pip für bessere Zuverlässigkeit... [FORTSCHRITT] Erstelle systemweite pip-Konfiguration... [FORTSCHRITT] Konfiguriere pip für alle Benutzer... -[2025-06-03 21:34:28] ✅ pip konfiguriert für Benutzer: user +[2025-06-03 21:43:02] ✅ pip konfiguriert für Benutzer: user [FORTSCHRITT] Aktualisiere pip mit Retry... -[2025-06-03 21:34:29] ✅ pip Version: 25.1.1 -[2025-06-03 21:34:29] ✅ Robuste Python-Umgebung installiert -[2025-06-03 21:34:29] === ROBUSTE NODE.JS UND NPM INSTALLATION === +[2025-06-03 21:43:03] ✅ pip Version: 25.1.1 +[2025-06-03 21:43:03] ✅ Robuste Python-Umgebung installiert +[2025-06-03 21:43:03] === ROBUSTE NODE.JS UND NPM INSTALLATION === [FORTSCHRITT] Bereinige alte Node.js-Installationen... [FORTSCHRITT] Installiere Node.js mit Fallback-Strategie... [FORTSCHRITT] Verwende Debian Repository als Fallback... [FORTSCHRITT] Installiere Pakete: nodejs npm -[2025-06-03 21:36:00] ✅ Node.js via Debian Repository installiert +[2025-06-03 21:44:37] ✅ Node.js via Debian Repository installiert [FORTSCHRITT] Validiere Node.js Installation... -[2025-06-03 21:36:00] ✅ Node.js Version: v18.19.0 -[2025-06-03 21:36:01] ✅ npm Version: 9.2.0 +[2025-06-03 21:44:37] ✅ Node.js Version: v18.19.0 +[2025-06-03 21:44:38] ✅ npm Version: 9.2.0 [FORTSCHRITT] Optimiere npm-Konfiguration... -[2025-06-03 21:36:02] ✅ Node.js und npm erfolgreich installiert -[2025-06-03 21:36:02] === TIMEOUT-GESICHERTE SSL-ZERTIFIKATE KONFIGURATION === +[2025-06-03 21:44:42] ✅ Node.js und npm erfolgreich installiert +[2025-06-03 21:44:42] === TIMEOUT-GESICHERTE SSL-ZERTIFIKATE KONFIGURATION === [FORTSCHRITT] Installiere SSL-Grundkomponenten... [FORTSCHRITT] Installiere Pakete: ca-certificates openssl [FORTSCHRITT] Aktualisiere CA-Zertifikate (timeout-gesichert)... @@ -140,11 +140,11 @@ System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 [ERFOLG] ✅ Mercedes-Zertifikate erfolgreich in CA-Store integriert [FORTSCHRITT] Konfiguriere SSL-Umgebungsvariablen... [FORTSCHRITT] Validiere SSL-Konfiguration... -[2025-06-03 21:36:06] ✅ SSL-Zertifikate verfügbar: 144 CA-Zertifikate +[2025-06-03 21:44:47] ✅ SSL-Zertifikate verfügbar: 144 CA-Zertifikate [FORTSCHRITT] Finalisiere SSL-Konfiguration... -[2025-06-03 21:36:06] ✅ SSL-Zertifikate timeout-gesichert konfiguriert +[2025-06-03 21:44:48] ✅ SSL-Zertifikate timeout-gesichert konfiguriert [DEBUG] SSL-Konfiguration abgeschlossen ohne hängende Prozesse -[2025-06-03 21:36:06] === PYTHON-PAKETE INSTALLATION === +[2025-06-03 21:44:48] === PYTHON-PAKETE INSTALLATION === [FORTSCHRITT] Installiere Python-Pakete... [FORTSCHRITT] Installiere requirements.txt... [ERFOLG] ✅ requirements.txt erfolgreich installiert @@ -152,9 +152,9 @@ System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 [DEBUG] flask erfolgreich importiert [DEBUG] requests erfolgreich importiert [ERFOLG] ✅ Essenzielle Python-Module verfügbar -[2025-06-03 21:36:08] ✅ Python-Pakete Installation abgeschlossen +[2025-06-03 21:44:49] ✅ Python-Pakete Installation abgeschlossen [FORTSCHRITT] Zeige installierte Python-Pakete... -[2025-06-03 21:36:08] === ROBUSTES ANWENDUNGS-DEPLOYMENT === +[2025-06-03 21:44:50] === ROBUSTES ANWENDUNGS-DEPLOYMENT === [FORTSCHRITT] Erstelle sicheres Zielverzeichnis: /opt/myp [FORTSCHRITT] Validiere Source-Dateien... [FORTSCHRITT] Kopiere Anwendungsdateien (robust)... @@ -190,6 +190,11 @@ System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 [FORTSCHRITT] Erstelle Verzeichnisstruktur... [FORTSCHRITT] Setze sichere Berechtigungen... [FORTSCHRITT] Konfiguriere robuste Python-Umgebung... -[2025-06-03 21:36:18] ✅ Python-Pfad konfiguriert: /usr/local/lib/python3.11/dist-packages/myp-app.pth +[2025-06-03 21:45:01] ✅ Python-Pfad konfiguriert: /usr/local/lib/python3.11/dist-packages/myp-app.pth [FORTSCHRITT] Konfiguriere Umgebungsvariablen... -[FORTSCHRITT] Aktualisiere Bash-Profile... +[FORTSCHRITT] Versuche Bash-Profile zu aktualisieren (optional)... +[FORTSCHRITT] Validiere Application Deployment... +[ERFOLG] ✅ Application Deployment vollständig validiert +[2025-06-03 21:45:01] ✅ Robustes Anwendungs-Deployment abgeschlossen +[2025-06-03 21:45:01] 📁 App-Verzeichnis: /opt/myp +[2025-06-03 21:45:01] 🐍 Python-Pfad konfiguriert diff --git a/backend/setup.sh b/backend/setup.sh index 777d8e30..766c411b 100755 --- a/backend/setup.sh +++ b/backend/setup.sh @@ -11,41 +11,7 @@ set -euo pipefail -# =========================== KOMMANDOZEILEN-PARAMETER ======================= -# Erkenne Skip-Parameter -SKIP_BASH_PROFILE=false -SKIP_SYSTEMD=false -SKIP_KIOSK=false -for arg in "$@"; do - case $arg in - --skip-bash-profile) - SKIP_BASH_PROFILE=true - ;; - --skip-systemd) - SKIP_SYSTEMD=true - ;; - --skip-kiosk) - SKIP_KIOSK=true - ;; - --wsl|--dev) - # WSL/Development-Modus: Überspringe systemspezifische Schritte - SKIP_BASH_PROFILE=true - SKIP_SYSTEMD=true - SKIP_KIOSK=true - echo "WSL/Development-Modus aktiviert - systemspezifische Schritte werden übersprungen" - ;; - --help|-h) - echo "MYP Setup-Skript - Optionen:" - echo " --skip-bash-profile Überspringe Bash-Profile Updates" - echo " --skip-systemd Überspringe Systemd-Service Installation" - echo " --skip-kiosk Überspringe Kiosk-Modus Konfiguration" - echo " --wsl, --dev WSL/Development-Modus (überspringt alle systemspezifischen Schritte)" - echo " --help, -h Zeige diese Hilfe" - exit 0 - ;; - esac -done # =========================== GLOBALE KONFIGURATION =========================== readonly APP_NAME="MYP Druckerverwaltung" @@ -1874,102 +1840,40 @@ FLASK_APP=$APP_DIR/app.py FLASK_ENV=production EOF - # Bash-Profile für alle User aktualisieren (robust) - if [ "$SKIP_BASH_PROFILE" = true ]; then - log "⏭️ Bash-Profile Update übersprungen (--skip-bash-profile oder --wsl/--dev)" - return - fi - - progress "Aktualisiere Bash-Profile..." - local profile_updated=0 - - # WSL-Erkennung - local is_wsl=false - if grep -qEi "(Microsoft|WSL)" /proc/version 2>/dev/null || [ -n "${WSL_DISTRO_NAME:-}" ]; then - is_wsl=true - debug "WSL-Umgebung erkannt - verwende angepasste Bash-Profile-Logik" - fi - - # Definiere die zu prüfenden Verzeichnisse basierend auf der Umgebung - local home_dirs=() - if [ "$is_wsl" = true ]; then - # In WSL nur das aktuelle Benutzerverzeichnis verwenden - if [ -n "${HOME:-}" ] && [ -d "$HOME" ]; then - home_dirs=("$HOME") - fi - # Füge /root nur hinzu wenn wir als root laufen - if [ "$(id -u)" = "0" ] && [ -d "/root" ] && [ -w "/root" ]; then - home_dirs+=("/root") - fi - else - # Standard-Verhalten für echtes Linux - home_dirs=("/root") - # Füge nur existierende Home-Verzeichnisse hinzu (max 5) - local count=0 - for user_home in /home/*; do - if [ -d "$user_home" ] && [ "$user_home" != "/home/lost+found" ]; then - home_dirs+=("$user_home") - ((count++)) - if [ $count -ge 5 ]; then - debug "Limitiere auf 5 Home-Verzeichnisse" - break - fi - fi - done - fi + # Bash-Profile Updates (optional - überspringen bei Problemen) + progress "Versuche Bash-Profile zu aktualisieren (optional)..." - debug "Aktualisiere Bash-Profile für ${#home_dirs[@]} Verzeichnisse" - - # Aktualisiere Bash-Profile (vereinfacht) - for user_home in "${home_dirs[@]}"; do - if [ -d "$user_home" ] && [ -w "$user_home" ]; then - local bashrc_file="$user_home/.bashrc" - - # Prüfe ob .bashrc existiert - if [ -f "$bashrc_file" ]; then - # Prüfe ob bereits konfiguriert (ohne timeout) - if grep -q "MYP Application Environment" "$bashrc_file" 2>/dev/null; then - debug "Bash-Profile bereits konfiguriert: $bashrc_file" - else - # Erstelle temporäre Datei mit dem Inhalt - local temp_file="/tmp/myp_bashrc_addition_$$" - cat > "$temp_file" << 'EOF' - -# MYP Application Environment -if [ -d "/opt/myp" ]; then - export MYP_APP_DIR="/opt/myp" - export FLASK_APP="/opt/myp/app.py" - export FLASK_ENV="production" - if [ -z "${PYTHONPATH:-}" ]; then - export PYTHONPATH="/opt/myp" - else - export PYTHONPATH="/opt/myp:$PYTHONPATH" - fi -fi -EOF - - # Füge Inhalt hinzu - if cat "$temp_file" >> "$bashrc_file" 2>/dev/null; then - ((profile_updated++)) - log "✅ Bash-Profile aktualisiert: $bashrc_file" - else - warning "⚠️ Konnte Bash-Profile nicht aktualisieren: $bashrc_file" - fi - - # Aufräumen - rm -f "$temp_file" 2>/dev/null || true - fi - else - debug ".bashrc existiert nicht: $bashrc_file" + # Führe Updates nur in einem Subshell mit Timeout aus + ( + # Setze eine maximale Laufzeit von 10 Sekunden für alle Bash-Profile Updates + export BASH_PROFILE_TIMEOUT=10 + + # Starte einen Background-Timer + (sleep $BASH_PROFILE_TIMEOUT && kill -TERM $$ 2>/dev/null) & + local timer_pid=$! + + # Nur /root/.bashrc aktualisieren (schnell und sicher) + if [ -f "/root/.bashrc" ] && [ -w "/root/.bashrc" ]; then + if ! grep -q "MYP Application Environment" "/root/.bashrc" 2>/dev/null; then + echo "" >> "/root/.bashrc" + echo "# MYP Application Environment" >> "/root/.bashrc" + echo 'if [ -d "/opt/myp" ]; then' >> "/root/.bashrc" + echo ' export MYP_APP_DIR="/opt/myp"' >> "/root/.bashrc" + echo ' export FLASK_APP="/opt/myp/app.py"' >> "/root/.bashrc" + echo ' export FLASK_ENV="production"' >> "/root/.bashrc" + echo ' export PYTHONPATH="/opt/myp:${PYTHONPATH:-}"' >> "/root/.bashrc" + echo 'fi' >> "/root/.bashrc" + log "✅ Root Bash-Profile aktualisiert" fi - else - debug "Verzeichnis nicht schreibbar: $user_home" fi - done - - if [ $profile_updated -eq 0 ] && [ "$is_wsl" = false ]; then - warning "⚠️ Keine Bash-Profile wurden aktualisiert" - fi + + # Timer beenden + kill $timer_pid 2>/dev/null || true + + ) 2>/dev/null || { + warning "⚠️ Bash-Profile Update übersprungen (Timeout oder Fehler)" + debug "Bash-Profile Updates sind optional - Installation wird fortgesetzt" + } # Validiere Deployment progress "Validiere Application Deployment..." @@ -2059,15 +1963,18 @@ generate_ssl_certificate() { install_systemd_services() { log "=== ROBUSTE SYSTEMD-SERVICES INSTALLATION ===" - # Skip wenn Parameter gesetzt - if [ "$SKIP_SYSTEMD" = true ]; then - log "⏭️ Systemd-Service Installation übersprungen (--skip-systemd oder --wsl/--dev)" + # Prüfe ob systemd verfügbar ist + if ! command -v systemctl >/dev/null 2>&1; then + warning "⚠️ systemctl nicht gefunden - überspringe Service-Installation" + info " → System läuft möglicherweise ohne systemd (WSL, Docker, etc.)" return fi # Validiere systemd-Verzeichnis if [ ! -d "$SYSTEMD_DIR" ]; then - error "systemd-Verzeichnis nicht gefunden: $SYSTEMD_DIR" + warning "⚠️ systemd-Verzeichnis nicht gefunden: $SYSTEMD_DIR" + info " → Überspringe Service-Installation" + return fi progress "Validiere und kopiere Service-Dateien..." @@ -2147,9 +2054,9 @@ install_systemd_services() { enable_and_start_services() { log "=== ROBUSTE SERVICES AKTIVIERUNG UND START ===" - # Skip wenn Parameter gesetzt - if [ "$SKIP_SYSTEMD" = true ]; then - log "⏭️ Service-Aktivierung übersprungen (--skip-systemd oder --wsl/--dev)" + # Prüfe ob systemd verfügbar ist + if ! command -v systemctl >/dev/null 2>&1; then + warning "⚠️ systemctl nicht gefunden - überspringe Service-Aktivierung" return fi