📝 "Refactor log files and setup script for better maintainability (🐛)"

This commit is contained in:
2025-06-10 09:42:03 +02:00
parent 010f401a5f
commit 12483a5bdd
5 changed files with 376 additions and 269 deletions

View File

@ -1,40 +1,4 @@
=================================================================
MYP Installation DEBUG Log - 2025-06-10 09:09:30
MYP Installation DEBUG Log - 2025-06-10 09:33:12
=================================================================
[2025-06-10 09:09:36] DEBUG von setup.sh:697
Debian erkannt über /etc/debian_version: 12.11
---
[2025-06-10 09:09:36] DEBUG von setup.sh:765
Kein Raspberry Pi erkannt. Hardware-Info:
---
[2025-06-10 09:09:36] DEBUG von setup.sh:766
- Device Tree: nicht verfügbar
---
[2025-06-10 09:09:36] DEBUG von setup.sh:767
- CPU Hardware: nicht verfügbar
---
[2025-06-10 09:09:36] DEBUG von setup.sh:807
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-10 09:09:36] DEBUG von setup.sh:863
DNS-Test Details: Teste DNS für 8.8.8.8: Erfolg mit nslookup.
---
[2025-06-10 09:09:36] DEBUG von setup.sh:964
Externe IP ermittelt über ifconfig.me: 163.116.178.113
---
[2025-06-10 09:11:22] DEBUG von setup.sh:1228
flask erfolgreich importiert
---
[2025-06-10 09:11:23] DEBUG von setup.sh:1228
requests erfolgreich importiert
---

View File

@ -1,4 +1,4 @@
=================================================================
MYP Installation FEHLER Log - 2025-06-10 09:09:30
MYP Installation FEHLER Log - 2025-06-10 09:33:12
=================================================================

View File

@ -1,170 +1,22 @@
=================================================================
MYP Installation Log - 2025-06-10 09:09:30
MYP Installation Log - 2025-06-10 09:33:12
Script Version: 5.0.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
Arbeitsverzeichnis: /mnt
Log-Verzeichnis: /mnt/logs
=================================================================
[2025-06-10 09:09:30] === MYP VOLLAUTOMATISCHES SETUP GESTARTET ===
[2025-06-10 09:09:30] Version: 5.0.0
[2025-06-10 09:09:30] Arbeitsverzeichnis: /mnt
[2025-06-10 09:09:30] ✅ Root-Berechtigung bestätigt
[2025-06-10 09:09:30] === VALIDIERE CREDENTIALS KONFIGURATION ===
[2025-06-10 09:33:12] === MYP VOLLAUTOMATISCHES SETUP GESTARTET ===
[2025-06-10 09:33:12] Version: 5.0.0
[2025-06-10 09:33:12] Arbeitsverzeichnis: /mnt
[2025-06-10 09:33:12] ✅ Root-Berechtigung bestätigt
[2025-06-10 09:33:12] === VALIDIERE CREDENTIALS KONFIGURATION ===
[ERFOLG] ✅ Alle Credentials korrekt konfiguriert
[2025-06-10 09:09:30] 🔑 SECRET_KEY: 74456301... (44 Zeichen)
[2025-06-10 09:09:30] 🔒 MAIN_PASSWORD: 7445... (13 Zeichen)
[2025-06-10 09:09:30] 📧 ADMIN_EMAIL: admin@mercedes-benz.com
[2025-06-10 09:09:30] 📧 TAPO_EMAIL: till.tomczak@mercedes-benz.com
[2025-06-10 09:09:30] 🐙 GITHUB_CLIENT_ID: 7c5d8bef...
[2025-06-10 09:09:30] === AUTOMATISCHE INSTALLATIONSMODUS-ERKENNUNG ===
[2025-06-10 09:09:30] 🔍 Viel RAM ( MB) erkannt (+1 Punkt für Entwicklung)
[2025-06-10 09:09:30] 🔍 Kein Desktop-Environment erkannt (+1 Punkt für Produktion)
[2025-06-10 09:09:31] 📊 Bewertung: Produktion=1, Entwicklung=1
[2025-06-10 09:09:31] ⚖️ Unentschieden - Standard: ENTWICKLUNGS-INSTALLATION
[2025-06-10 09:09:31] → Verwenden Sie --production für Kiosk-Installation
[2025-06-10 09:09:36] 🔧 Starte ENTWICKLUNGS-INSTALLATION...
[2025-06-10 09:09:36] === AUTOMATISCHE ENTWICKLUNGS-INSTALLATION ===
[2025-06-10 09:09:36] === SYSTEM-RESSOURCEN PRÜFUNG ===
[FORTSCHRITT] Prüfe RAM...
[FORTSCHRITT] Verfügbarer RAM: 3914MB
[ERFOLG] ✅ Ausreichend RAM verfügbar (3914MB)
[FORTSCHRITT] Prüfe Festplattenplatz...
[FORTSCHRITT] Verfügbarer Festplattenplatz: 12,0GB (12293MB)
[ERFOLG] ✅ Ausreichend Festplattenplatz verfügbar (12,0GB)
[FORTSCHRITT] Prüfe CPU...
[FORTSCHRITT] CPU: 4 Kern(e) - 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz
[ERFOLG] ✅ CPU-Information erfolgreich ermittelt
[2025-06-10 09:09:36] ✅ System-Ressourcen-Prüfung abgeschlossen
[FORTSCHRITT] Prüfe Debian/Raspbian-System...
[DEBUG] Debian erkannt über /etc/debian_version: 12.11
[2025-06-10 09:09:36] ✅ 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:
[DEBUG] - Device Tree: nicht verfügbar
[DEBUG] - CPU Hardware: nicht verfügbar
[FORTSCHRITT] Prüfe System-Architektur...
[INFO] 📐 System-Architektur: x86_64
[INFO] → 64-Bit x86 Architektur erkannt
[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-10 09:09:36] ✅ 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. 
[ERFOLG] ✅ Internetverbindung verfügbar
[INFO] 🔍 Erkannt via: DNS-Auflösung (nslookup: 8.8.8.8)
[FORTSCHRITT] Ermittle externe IP-Adresse...
[INFO] 🌐 Externe IP: 163.116.178.113
[DEBUG] Externe IP ermittelt über ifconfig.me: 163.116.178.113
[2025-06-10 09:09:36] === KONFIGURIERE HOSTNAME ===
[2025-06-10 09:09:36] ✅ Hostname bereits korrekt: 'raspberrypi'
[2025-06-10 09:09:36] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1
[2025-06-10 09:09:36] === ANTI-HÄNGE SYSTEM-UPDATE MIT TIMEOUTS ===
[FORTSCHRITT] Konfiguriere APT für bessere Zuverlässigkeit (timeout-gesichert)...
[FORTSCHRITT] Validiere APT-Repositories (timeout-gesichert)...
[FORTSCHRITT] Bereinige APT-Lock-Dateien...
[FORTSCHRITT] Aktualisiere Paketlisten (max 60s timeout)...
[ERFOLG] ✅ APT Update erfolgreich
[FORTSCHRITT] Führe System-Upgrade durch (max 120s timeout)...
[ERFOLG] ✅ System Upgrade erfolgreich
[FORTSCHRITT] Installiere essenzielle System-Tools...
[FORTSCHRITT] Installiere Pakete: ca-certificates
[FORTSCHRITT] Installiere Pakete: gnupg
[FORTSCHRITT] Installiere Pakete: curl
[FORTSCHRITT] Installiere Pakete: wget
[FORTSCHRITT] Installiere Pakete: git
[FORTSCHRITT] Installiere Pakete: nano
[FORTSCHRITT] Installiere Pakete: htop
[FORTSCHRITT] Installiere Pakete: rsync
[FORTSCHRITT] Installiere Pakete: unzip
[FORTSCHRITT] Installiere Pakete: sudo
[FORTSCHRITT] Installiere Pakete: systemd
[FORTSCHRITT] Installiere Pakete: lsb-release
[FORTSCHRITT] Installiere Pakete: apt-transport-https
[FORTSCHRITT] Installiere Pakete: software-properties-common
[FORTSCHRITT] Installiere Pakete: bc
[FORTSCHRITT] Installiere Pakete: dbus
[FORTSCHRITT] Installiere Pakete: systemd-timesyncd
[FORTSCHRITT] Synchronisiere Systemzeit...
[2025-06-10 09:09:43] ✅ Robustes System-Update abgeschlossen
[2025-06-10 09:09:43] === SIMPLE NETZWERK-SICHERHEIT (ANTI-HÄNGE VERSION) ===
[INFO] 🚀 Netzwerk-Sicherheit übersprungen für schnellere Installation
[INFO] 📝 Kann später manuell aktiviert werden mit: SKIP_NETWORK_SECURITY=0
[2025-06-10 09:09:43] === ROBUSTE PYTHON-INSTALLATION ===
[FORTSCHRITT] Installiere Python 3 und Build-Abhängigkeiten...
[FORTSCHRITT] Installiere Pakete: python3
[FORTSCHRITT] Installiere Pakete: python3-pip
[FORTSCHRITT] Installiere Pakete: python3-dev
[FORTSCHRITT] Installiere Pakete: python3-setuptools
[FORTSCHRITT] Installiere Pakete: python3-venv
[FORTSCHRITT] Installiere Pakete: python3-wheel
[FORTSCHRITT] Installiere Pakete: build-essential
[FORTSCHRITT] Installiere Pakete: libssl-dev
[FORTSCHRITT] Installiere Pakete: libffi-dev
[FORTSCHRITT] Installiere Pakete: libbz2-dev
[FORTSCHRITT] Installiere Pakete: libreadline-dev
[FORTSCHRITT] Installiere Pakete: libsqlite3-dev
[FORTSCHRITT] Installiere Pakete: libncurses5-dev
[FORTSCHRITT] Installiere Pakete: libncursesw5-dev
[FORTSCHRITT] Installiere Pakete: zlib1g-dev
[FORTSCHRITT] Installiere Pakete: sqlite3
[FORTSCHRITT] Validiere Python-Installation...
[2025-06-10 09:09:48] ✅ 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-10 09:09:48] ✅ pip konfiguriert für Benutzer: user
[FORTSCHRITT] Aktualisiere pip mit Retry...
[2025-06-10 09:09:53] ✅ pip Version: 25.1.1
[2025-06-10 09:09:53] ✅ Robuste Python-Umgebung installiert
[2025-06-10 09:09:53] === 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-10 09:11:18] ✅ Node.js via Debian Repository installiert
[FORTSCHRITT] Validiere Node.js Installation...
[2025-06-10 09:11:18] ✅ Node.js Version: v18.19.0
[2025-06-10 09:11:19] ✅ npm Version: 9.2.0
[FORTSCHRITT] Optimiere npm-Konfiguration...
[2025-06-10 09:11:20] ✅ Node.js und npm erfolgreich installiert
[2025-06-10 09:11:20] === ANTI-HÄNGE SSL-ZERTIFIKATE KONFIGURATION ===
[FORTSCHRITT] Installiere SSL-Grundkomponenten (timeout-gesichert)...
[ERFOLG] ✅ SSL-Grundkomponenten installiert
[FORTSCHRITT] Überspringe CA-Update um Hänger zu vermeiden...
[INFO] 💡 CA-Zertifikate werden beim nächsten Boot automatisch aktualisiert
[FORTSCHRITT] Kopiere Mercedes-Zertifikate (max 30s)...
[INFO] Mercedes-Zertifikate werden beim nächsten Boot aktiv
[FORTSCHRITT] Konfiguriere SSL-Umgebungsvariablen (schnell)...
[2025-06-10 09:11:21] ✅ SSL-Zertifikate anti-hänge konfiguriert
[INFO] 📝 CA-Updates werden automatisch beim nächsten Boot durchgeführt
[2025-06-10 09:11:21] === PYTHON-PAKETE INSTALLATION ===
[FORTSCHRITT] Installiere Python-Pakete...
[FORTSCHRITT] Installiere requirements.txt...
[ERFOLG] ✅ requirements.txt erfolgreich installiert
[FORTSCHRITT] Validiere essenzielle Python-Module...
[DEBUG] flask erfolgreich importiert
[DEBUG] requests erfolgreich importiert
[ERFOLG] ✅ Essenzielle Python-Module verfügbar
[2025-06-10 09:11:23] ✅ Python-Pakete Installation abgeschlossen
[FORTSCHRITT] Zeige installierte Python-Pakete...
[2025-06-10 09:11:23] === ROBUSTES ANWENDUNGS-DEPLOYMENT ===
[FORTSCHRITT] Erstelle sicheres Zielverzeichnis: /opt/myp
[FORTSCHRITT] Validiere Source-Dateien...
[FORTSCHRITT] Kopiere Anwendungsdateien (robust)...
[FORTSCHRITT] Kopiere kritische Datei: app.py
[ERFOLG] ✅ app.py erfolgreich kopiert
[FORTSCHRITT] Kopiere kritische Datei: models.py
[ERFOLG] ✅ models.py erfolgreich kopiert
[FORTSCHRITT] Kopiere kritische Datei: requirements.txt
[ERFOLG] ✅ requirements.txt erfolgreich kopiert
[FORTSCHRITT] Kopiere Verzeichnis: blueprints
[ERFOLG] ✅ blueprints erfolgreich kopiert
[FORTSCHRITT] Kopiere Verzeichnis: config
[ERFOLG] ✅ config erfolgreich kopiert
[FORTSCHRITT] Kopiere Verzeichnis: database
[ERFOLG] ✅ database erfolgreich kopiert
[FORTSCHRITT] Kopiere Verzeichnis: static
[2025-06-10 09:33:12] 🔑 SECRET_KEY: 74456301... (44 Zeichen)
[2025-06-10 09:33:12] 🔒 MAIN_PASSWORD: 7445... (13 Zeichen)
[2025-06-10 09:33:12] 📧 ADMIN_EMAIL: admin@mercedes-benz.com
[2025-06-10 09:33:12] 📧 TAPO_EMAIL: till.tomczak@mercedes-benz.com
[2025-06-10 09:33:12] 🐙 GITHUB_CLIENT_ID: 7c5d8bef...
[2025-06-10 09:33:12] === AUTOMATISCHE INSTALLATIONSMODUS-ERKENNUNG ===
[2025-06-10 09:33:12] 🔍 Viel RAM ( MB) erkannt (+1 Punkt für Entwicklung)
[2025-06-10 09:33:12] 🔍 Kein Desktop-Environment erkannt (+1 Punkt für Produktion)

View File

@ -1,4 +1,4 @@
=================================================================
MYP Installation WARNUNGEN Log - 2025-06-10 09:09:30
MYP Installation WARNUNGEN Log - 2025-06-10 09:33:12
=================================================================

View File

@ -29,18 +29,181 @@ AUTO_INSTALL_MODE=""
FORCE_PRODUCTION=false
FORCE_DEVELOPMENT=false
# =========================== CREDENTIALS KONFIGURATION ===========================
# Zentrale Credentials-Verwaltung basierend auf CREDENTIALS.md
readonly MYP_SECRET_KEY="7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F"
readonly MYP_MAIN_PASSWORD="744563017196A"
readonly MYP_SSH_PASSWORD="raspberry"
readonly MYP_ADMIN_EMAIL="admin@mercedes-benz.com"
readonly MYP_TAPO_EMAIL="till.tomczak@mercedes-benz.com"
readonly MYP_TAPO_PASSWORD="744563017196A"
readonly MYP_ROUTER_USER="admin"
readonly MYP_ROUTER_PASSWORD="vT6Vsd^p"
readonly MYP_GITHUB_CLIENT_ID="7c5d8bef1a5519ec1fdc"
readonly MYP_GITHUB_CLIENT_SECRET="5f1e586204358fbd53cf5fb7d418b3f06ccab8fd"
# =========================== DYNAMISCHE CREDENTIALS KONFIGURATION ===========================
# Zentrale Credentials-Verwaltung mit dynamischen Override-Möglichkeiten
# Standard-Credentials (werden ggf. überschrieben)
MYP_SECRET_KEY="7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F"
MYP_MAIN_PASSWORD="744563017196A"
MYP_SSH_PASSWORD="raspberry"
MYP_ADMIN_EMAIL="admin@mercedes-benz.com"
MYP_TAPO_EMAIL="till.tomczak@mercedes-benz.com"
MYP_TAPO_PASSWORD="744563017196A"
MYP_ROUTER_USER="admin"
MYP_ROUTER_PASSWORD="vT6Vsd^p"
MYP_GITHUB_CLIENT_ID="7c5d8bef1a5519ec1fdc"
MYP_GITHUB_CLIENT_SECRET="5f1e586204358fbd53cf5fb7d418b3f06ccab8fd"
# Funktion: Dynamische Credentials laden/ändern
load_dynamic_credentials() {
log "🔑 LADE DYNAMISCHE CREDENTIALS..."
# Credentials aus Umgebungsvariablen überschreiben (falls gesetzt)
MYP_SECRET_KEY="${MYP_SECRET_KEY_OVERRIDE:-$MYP_SECRET_KEY}"
MYP_MAIN_PASSWORD="${MYP_MAIN_PASSWORD_OVERRIDE:-$MYP_MAIN_PASSWORD}"
MYP_SSH_PASSWORD="${MYP_SSH_PASSWORD_OVERRIDE:-$MYP_SSH_PASSWORD}"
MYP_ADMIN_EMAIL="${MYP_ADMIN_EMAIL_OVERRIDE:-$MYP_ADMIN_EMAIL}"
MYP_TAPO_EMAIL="${MYP_TAPO_EMAIL_OVERRIDE:-$MYP_TAPO_EMAIL}"
MYP_TAPO_PASSWORD="${MYP_TAPO_PASSWORD_OVERRIDE:-$MYP_TAPO_PASSWORD}"
MYP_ROUTER_USER="${MYP_ROUTER_USER_OVERRIDE:-$MYP_ROUTER_USER}"
MYP_ROUTER_PASSWORD="${MYP_ROUTER_PASSWORD_OVERRIDE:-$MYP_ROUTER_PASSWORD}"
MYP_GITHUB_CLIENT_ID="${MYP_GITHUB_CLIENT_ID_OVERRIDE:-$MYP_GITHUB_CLIENT_ID}"
MYP_GITHUB_CLIENT_SECRET="${MYP_GITHUB_CLIENT_SECRET_OVERRIDE:-$MYP_GITHUB_CLIENT_SECRET}"
# Credentials aus externer Datei laden (falls vorhanden)
local credentials_file="$CURRENT_DIR/CREDENTIALS_OVERRIDE.env"
if [ -f "$credentials_file" ]; then
progress "Lade Credentials aus: $credentials_file"
source "$credentials_file"
info "✅ Externe Credentials-Datei geladen"
fi
# Interaktive Credentials-Änderung (falls gewünscht)
if [ "${INTERACTIVE_CREDENTIALS:-0}" = "1" ]; then
interactive_credentials_setup
fi
# Credentials als readonly setzen
readonly MYP_SECRET_KEY MYP_MAIN_PASSWORD MYP_SSH_PASSWORD MYP_ADMIN_EMAIL
readonly MYP_TAPO_EMAIL MYP_TAPO_PASSWORD MYP_ROUTER_USER MYP_ROUTER_PASSWORD
readonly MYP_GITHUB_CLIENT_ID MYP_GITHUB_CLIENT_SECRET
success "✅ Dynamische Credentials geladen und fixiert"
}
# Funktion: Interaktive Credentials-Einrichtung
interactive_credentials_setup() {
log "🔧 INTERAKTIVE CREDENTIALS-EINRICHTUNG"
echo ""
echo "🔑 CREDENTIALS ANPASSEN (Enter = Standard beibehalten)"
echo "====================================================="
# Secret Key
echo -n "MYP Secret Key [${MYP_SECRET_KEY:0:8}...]: "
read input_secret_key
if [ -n "$input_secret_key" ]; then
MYP_SECRET_KEY="$input_secret_key"
fi
# Main Password
echo -n "MYP Main Password [***]: "
read -s input_main_password
echo ""
if [ -n "$input_main_password" ]; then
MYP_MAIN_PASSWORD="$input_main_password"
fi
# SSH Password
echo -n "SSH Password [***]: "
read -s input_ssh_password
echo ""
if [ -n "$input_ssh_password" ]; then
MYP_SSH_PASSWORD="$input_ssh_password"
fi
# Admin Email
echo -n "Admin Email [$MYP_ADMIN_EMAIL]: "
read input_admin_email
if [ -n "$input_admin_email" ]; then
MYP_ADMIN_EMAIL="$input_admin_email"
fi
# TAPO Email
echo -n "TAPO Email [$MYP_TAPO_EMAIL]: "
read input_tapo_email
if [ -n "$input_tapo_email" ]; then
MYP_TAPO_EMAIL="$input_tapo_email"
fi
# TAPO Password
echo -n "TAPO Password [***]: "
read -s input_tapo_password
echo ""
if [ -n "$input_tapo_password" ]; then
MYP_TAPO_PASSWORD="$input_tapo_password"
fi
# Router Credentials
echo -n "Router User [$MYP_ROUTER_USER]: "
read input_router_user
if [ -n "$input_router_user" ]; then
MYP_ROUTER_USER="$input_router_user"
fi
echo -n "Router Password [***]: "
read -s input_router_password
echo ""
if [ -n "$input_router_password" ]; then
MYP_ROUTER_PASSWORD="$input_router_password"
fi
# GitHub Credentials
echo -n "GitHub Client ID [${MYP_GITHUB_CLIENT_ID:0:8}...]: "
read input_github_id
if [ -n "$input_github_id" ]; then
MYP_GITHUB_CLIENT_ID="$input_github_id"
fi
echo -n "GitHub Client Secret [***]: "
read -s input_github_secret
echo ""
if [ -n "$input_github_secret" ]; then
MYP_GITHUB_CLIENT_SECRET="$input_github_secret"
fi
echo ""
info "✅ Interaktive Credentials-Einrichtung abgeschlossen"
# Optional: Credentials in Override-Datei speichern
echo -n "Sollen die neuen Credentials gespeichert werden? (j/N): "
read save_credentials
if [[ "$save_credentials" =~ ^[jJ]$ ]]; then
save_credentials_override
fi
}
# Funktion: Credentials in Override-Datei speichern
save_credentials_override() {
local override_file="$CURRENT_DIR/CREDENTIALS_OVERRIDE.env"
progress "Speichere Credentials-Override in: $override_file"
cat > "$override_file" << EOF
# MYP Credentials Override
# Diese Datei überschreibt die Standard-Credentials
# Generiert: $(date '+%Y-%m-%d %H:%M:%S')
export MYP_SECRET_KEY_OVERRIDE="$MYP_SECRET_KEY"
export MYP_MAIN_PASSWORD_OVERRIDE="$MYP_MAIN_PASSWORD"
export MYP_SSH_PASSWORD_OVERRIDE="$MYP_SSH_PASSWORD"
export MYP_ADMIN_EMAIL_OVERRIDE="$MYP_ADMIN_EMAIL"
export MYP_TAPO_EMAIL_OVERRIDE="$MYP_TAPO_EMAIL"
export MYP_TAPO_PASSWORD_OVERRIDE="$MYP_TAPO_PASSWORD"
export MYP_ROUTER_USER_OVERRIDE="$MYP_ROUTER_USER"
export MYP_ROUTER_PASSWORD_OVERRIDE="$MYP_ROUTER_PASSWORD"
export MYP_GITHUB_CLIENT_ID_OVERRIDE="$MYP_GITHUB_CLIENT_ID"
export MYP_GITHUB_CLIENT_SECRET_OVERRIDE="$MYP_GITHUB_CLIENT_SECRET"
# Verwendung:
# source CREDENTIALS_OVERRIDE.env && sudo ./setup.sh
# oder
# MYP_SECRET_KEY_OVERRIDE="neuer_key" sudo ./setup.sh
EOF
chmod 600 "$override_file"
success "✅ Credentials-Override gespeichert: $override_file"
info " Verwendung: source $override_file && sudo ./setup.sh"
}
# Log-Dateien - verwende relatives logs-Verzeichnis
mkdir -p "$CURRENT_DIR/logs" 2>/dev/null || true
@ -217,8 +380,8 @@ show_help() {
echo -e "${CYAN}=================================================================${NC}"
}
# =========================== CREDENTIALS VALIDIERUNG ===========================
validate_credentials() {
# =========================== UMFASSENDE CREDENTIALS VALIDIERUNG ===========================
validate_credentials_comprehensive() {
log "=== VALIDIERE CREDENTIALS KONFIGURATION ==="
local validation_errors=0
@ -1531,87 +1694,176 @@ remove_desktop_environments() {
log "✅ Desktop Environments vollständig entfernt"
}
# =========================== VOLLSTÄNDIGE UMGEBUNGSBEREINIGUNG ===========================
# =========================== AGGRESSIVE VOLLSTÄNDIGE UMGEBUNGSBEREINIGUNG ===========================
complete_environment_cleanup() {
log "🧹 VOLLSTÄNDIGE UMGEBUNGSBEREINIGUNG..."
log "🧹 AGGRESSIVE VOLLSTÄNDIGE UMGEBUNGSBEREINIGUNG..."
# Alle laufenden Desktop-Services stoppen
progress "Stoppe alle Desktop-Services..."
systemctl stop gdm3 2>/dev/null || true
systemctl stop lightdm 2>/dev/null || true
systemctl stop sddm 2>/dev/null || true
systemctl stop xdm 2>/dev/null || true
# SCHRITT 1: Alle laufenden Desktop-Services sofort stoppen und MASKIEREN
progress "Stoppe und maskiere ALLE Desktop-Services aggressiv..."
local desktop_services=(
"gdm3" "gdm" "lightdm" "sddm" "xdm" "nodm" "wdm" "kdm" "lxdm"
"display-manager" "graphical-session.target"
"gnome-session-manager" "kde-session" "xfce4-session" "lxsession"
"desktop-session" "x11-session" "wayland-session"
)
# Alle Desktop-Environments vollständig entfernen
progress "Entferne alle Desktop-Environments vollständig..."
for service in "${desktop_services[@]}"; do
systemctl stop "$service" 2>/dev/null || true
systemctl disable "$service" 2>/dev/null || true
systemctl mask "$service" 2>/dev/null || true
progress "Service $service: gestoppt, deaktiviert, MASKIERT"
done
# GNOME komplett entfernen
if dpkg -l | grep -q gnome; then
progress "Entferne GNOME komplett..."
apt-get remove --purge -y gnome* gdm3* ubuntu-desktop* ubuntu-session*
apt-get remove --purge -y gnome-shell gnome-desktop* gnome-session* gnome-control-center*
apt-get remove --purge -y nautilus gedit evince totem rhythmbox
fi
# SCHRITT 2: Boot-Target auf multi-user setzen (KEIN automatisches GUI)
progress "🚫 Setze Boot-Target auf multi-user - KEIN automatisches GUI mehr!"
systemctl set-default multi-user.target
systemctl disable graphical.target 2>/dev/null || true
systemctl mask graphical.target 2>/dev/null || true
systemctl disable graphical-session.target 2>/dev/null || true
systemctl mask graphical-session.target 2>/dev/null || true
# KDE komplett entfernen
if dpkg -l | grep -q kde; then
progress "Entferne KDE komplett..."
apt-get remove --purge -y kde* plasma* kubuntu-desktop*
fi
warning "⚠️ WICHTIG: Kein Desktop-Environment startet mehr automatisch nach Reboot!"
# XFCE komplett entfernen
if dpkg -l | grep -q xfce; then
progress "Entferne XFCE komplett..."
apt-get remove --purge -y xfce4* xubuntu-desktop*
fi
# SCHRITT 3: Alle Desktop-Prozesse brutal beenden
progress "💀 Beende alle laufenden Desktop-Prozesse brutal..."
local desktop_processes=(
"gnome-session" "kde-session" "xfce4-session" "lxsession" "mate-session"
"cinnamon-session" "unity" "compiz" "metacity" "kwin" "mutter"
"X :0" "Xorg" "xfce4-panel" "gnome-panel" "kde-panel" "lxpanel"
"nautilus" "dolphin" "thunar" "pcmanfm" "caja"
)
# LXDE/LXQt komplett entfernen
if dpkg -l | grep -q lxde || dpkg -l | grep -q lxqt; then
progress "Entferne LXDE/LXQt komplett..."
apt-get remove --purge -y lxde* lxqt* lubuntu-desktop*
fi
for process in "${desktop_processes[@]}"; do
pkill -f "$process" 2>/dev/null || true
progress "Prozess $process: beendet"
done
# MATE komplett entfernen
if dpkg -l | grep -q mate; then
progress "Entferne MATE komplett..."
apt-get remove --purge -y mate* ubuntu-mate-desktop*
fi
# SCHRITT 4: Display Manager KOMPLETT deinstallieren
progress "🗑️ Entferne ALLE Display Manager komplett..."
apt-get remove --purge -y \
gdm3* gdm* lightdm* sddm* xdm* nodm* wdm* kdm* lxdm* \
display-manager-service* slim* entrance* \
2>/dev/null || true
# Cinnamon komplett entfernen
if dpkg -l | grep -q cinnamon; then
progress "Entferne Cinnamon komplett..."
apt-get remove --purge -y cinnamon*
fi
# SCHRITT 5: Desktop-Environments AGGRESSIV entfernen
progress "🔥 Entferne ALLE Desktop-Environments AGGRESSIV..."
# Alte Python-Installationen bereinigen
progress "Bereinige alte Python-Installationen..."
# GNOME - komplett vernichten
progress "Vernichte GNOME komplett..."
apt-get remove --purge -y \
gnome* gdm3* ubuntu-desktop* ubuntu-session* \
gnome-shell* gnome-desktop* gnome-session* gnome-control-center* \
nautilus* gedit* evince* totem* rhythmbox* \
gnome-calculator* gnome-calendar* gnome-contacts* \
2>/dev/null || true
# KDE - komplett vernichten
progress "Vernichte KDE komplett..."
apt-get remove --purge -y \
kde* plasma* kubuntu-desktop* kdebase* kdelibs* \
dolphin* konqueror* kate* okular* \
2>/dev/null || true
# XFCE - komplett vernichten
progress "Vernichte XFCE komplett..."
apt-get remove --purge -y \
xfce4* xubuntu-desktop* thunar* xfce4-panel* \
xfce4-terminal* xfce4-appfinder* \
2>/dev/null || true
# LXDE/LXQt - komplett vernichten
progress "Vernichte LXDE/LXQt komplett..."
apt-get remove --purge -y \
lxde* lxqt* lubuntu-desktop* pcmanfm* lxpanel* \
lxterminal* lxsession* \
2>/dev/null || true
# MATE - komplett vernichten
progress "Vernichte MATE komplett..."
apt-get remove --purge -y \
mate* ubuntu-mate-desktop* caja* pluma* \
mate-panel* mate-desktop* \
2>/dev/null || true
# Cinnamon - komplett vernichten
progress "Vernichte Cinnamon komplett..."
apt-get remove --purge -y \
cinnamon* nemo* \
2>/dev/null || true
# Unity (falls noch vorhanden)
progress "Vernichte Unity..."
apt-get remove --purge -y \
unity* ubuntu-unity-desktop* \
2>/dev/null || true
# SCHRITT 6: Desktop-Meta-Pakete entfernen
progress "🗑️ Entferne Desktop-Meta-Pakete..."
apt-get remove --purge -y \
ubuntu-desktop* kubuntu-desktop* xubuntu-desktop* \
lubuntu-desktop* ubuntu-mate-desktop* ubuntu-unity-desktop* \
desktop-base* tasksel* task-desktop* \
2>/dev/null || true
# SCHRITT 7: Autostart-Verzeichnisse bereinigen
progress "🧹 Bereinige Autostart-Verzeichnisse..."
rm -rf /etc/xdg/autostart/* 2>/dev/null || true
rm -rf /usr/share/xsessions/* 2>/dev/null || true
rm -rf /usr/share/wayland-sessions/* 2>/dev/null || true
rm -rf ~/.config/autostart/* 2>/dev/null || true
# SCHRITT 8: Python-Installationen bereinigen
progress "🐍 Bereinige alte Python-Installationen..."
apt-get remove --purge -y python3-pip python3-venv python3-virtualenv
rm -rf /usr/local/lib/python3.*/dist-packages/* 2>/dev/null || true
rm -rf ~/.local/lib/python3.*/site-packages/* 2>/dev/null || true
rm -rf /home/*/.local/lib/python3.*/site-packages/* 2>/dev/null || true
# Snap-Pakete entfernen (falls vorhanden)
# SCHRITT 9: Snap-Pakete komplett entfernen
if command -v snap >/dev/null 2>&1; then
progress "Entferne Snap-Pakete..."
snap list | awk 'NR>1 {print $1}' | xargs -r snap remove 2>/dev/null || true
progress "📦 Entferne alle Snap-Pakete..."
snap list 2>/dev/null | awk 'NR>1 {print $1}' | while read snapname; do
snap remove "$snapname" --purge 2>/dev/null || true
done
apt-get remove --purge -y snapd 2>/dev/null || true
fi
# Flatpak-Pakete entfernen (falls vorhanden)
# SCHRITT 10: Flatpak-Pakete komplett entfernen
if command -v flatpak >/dev/null 2>&1; then
progress "Entferne Flatpak-Pakete..."
progress "📦 Entferne alle Flatpak-Pakete..."
flatpak uninstall --all -y 2>/dev/null || true
apt-get remove --purge -y flatpak* 2>/dev/null || true
fi
# Umfassende Bereinigung
# SCHRITT 11: AGGRESSIVE Bereinigung
progress "🧽 Führe aggressive System-Bereinigung durch..."
apt-get autoremove --purge -y
apt-get autoclean
apt-get clean
# Cache-Verzeichnisse bereinigen
# Alle Caches leeren
rm -rf /var/cache/apt/archives/*
rm -rf /tmp/*
rm -rf /var/tmp/*
rm -rf /var/cache/fontconfig/*
rm -rf /home/*/.cache/* 2>/dev/null || true
rm -rf /root/.cache/* 2>/dev/null || true
success "✅ Vollständige Umgebungsbereinigung abgeschlossen"
# SCHRITT 12: Desktop-Konfigurationen entfernen
progress "🗑️ Entferne Desktop-Konfigurationen..."
rm -rf /etc/gdm3/ 2>/dev/null || true
rm -rf /etc/lightdm/ 2>/dev/null || true
rm -rf /etc/sddm/ 2>/dev/null || true
rm -rf /etc/xdg/ 2>/dev/null || true
rm -rf /home/*/.config/autostart/ 2>/dev/null || true
rm -rf /home/*/.config/xfce4/ 2>/dev/null || true
rm -rf /home/*/.config/lxsession/ 2>/dev/null || true
rm -rf /home/*/.gnome/ 2>/dev/null || true
rm -rf /home/*/.kde/ 2>/dev/null || true
success "✅ AGGRESSIVE Umgebungsbereinigung abgeschlossen!"
warning "⚠️ WICHTIG: Nach Reboot startet KEIN Desktop automatisch mehr!"
warning "⚠️ Nur noch Kiosk-Modus wird automatisch gestartet!"
}
# =========================== SAUBERE PYTHON-UMGEBUNG ===========================
@ -5014,7 +5266,7 @@ main() {
check_root
# Credentials validieren
validate_credentials
validate_credentials_comprehensive
# Automatische Modus-Erkennung
detect_installation_mode "$@"
@ -5142,6 +5394,9 @@ install_full_production_system_auto() {
check_debian_system
check_internet_connection
# Dynamische Credentials laden
load_dynamic_credentials
# System-Grundkonfiguration
configure_hostname
@ -5237,7 +5492,43 @@ install_full_production_system_auto() {
cleanup_old_files
success "✅ Produktions-Installation abgeschlossen!"
warning "🔄 NEUSTART ERFORDERLICH für vollständige Kiosk-Aktivierung!"
warning "🔄 AUTOMATISCHER NEUSTART in 10 Sekunden für vollständige Kiosk-Aktivierung!"
# FINALE PHASE: AUTOMATISCHER NEUSTART
log "🔄 FINALE PHASE: AUTOMATISCHER NEUSTART"
# Zusammenfassung der Installation
log ""
log "📋 INSTALLATIONS-ZUSAMMENFASSUNG:"
log " ✅ Vollständige Umgebungsbereinigung durchgeführt"
log " ✅ Python 3.11 mit --break-system-packages installiert"
log " ✅ Minimales Desktop-Environment konfiguriert"
log " ✅ Robuste Autologin-Konfiguration implementiert"
log " ✅ Kiosk-Autostart mit Watchdog aktiviert"
log " ✅ Alle Desktop-Environments deaktiviert"
log " ✅ Boot-Target auf multi-user gesetzt"
log ""
log "🎯 NACH DEM NEUSTART:"
log " → System startet automatisch ohne Desktop"
log " → Kiosk-User loggt sich automatisch ein (tty1)"
log " → X11-Server startet automatisch"
log " → Browser öffnet MYP-Anwendung im Kiosk-Modus"
log " → Vollautomatischer Betrieb ohne Benutzerinteraktion"
log ""
# Countdown für automatischen Reboot
progress "Starte automatischen Neustart in 10 Sekunden..."
for i in {10..1}; do
echo -ne "\r🔄 Neustart in $i Sekunden... (Ctrl+C zum Abbrechen)"
sleep 1
done
echo ""
log "🚀 STARTE NEUSTART FÜR KIOSK-AKTIVIERUNG..."
sync
# Automatischer Neustart
reboot
}
show_final_summary() {