📝 "🎉 Feature: Enhanced Raspberry Pi setup script for quick deployment 🌟"
This commit is contained in:
parent
e02d4c416c
commit
34692dbb32
@ -600,6 +600,348 @@ EOF
|
|||||||
log "✅ System-Parameter Optimierung abgeschlossen"
|
log "✅ System-Parameter Optimierung abgeschlossen"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ========================== WARTUNGSTOOLS ERSTELLEN ==========================
|
||||||
|
create_maintenance_tools() {
|
||||||
|
log "=== WARTUNGSTOOLS ERSTELLEN ==="
|
||||||
|
|
||||||
|
progress "Erstelle Wartungs-Skript..."
|
||||||
|
|
||||||
|
# Wartungsskript
|
||||||
|
cat > "/usr/local/bin/myp-maintenance" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
echo "Starte alle MYP-Services..."
|
||||||
|
systemctl start myp-druckerverwaltung
|
||||||
|
systemctl start nginx
|
||||||
|
systemctl start lightdm
|
||||||
|
echo "Services gestartet."
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
echo "Stoppe alle MYP-Services..."
|
||||||
|
systemctl stop lightdm
|
||||||
|
systemctl stop nginx
|
||||||
|
systemctl stop myp-druckerverwaltung
|
||||||
|
echo "Services gestoppt."
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
echo "Starte alle MYP-Services neu..."
|
||||||
|
systemctl restart myp-druckerverwaltung
|
||||||
|
sleep 3
|
||||||
|
systemctl restart nginx
|
||||||
|
systemctl restart lightdm
|
||||||
|
echo "Services neugestartet."
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
echo "=== MYP SYSTEM STATUS ==="
|
||||||
|
echo
|
||||||
|
echo "📱 Anwendung:"
|
||||||
|
systemctl status myp-druckerverwaltung --no-pager -l
|
||||||
|
echo
|
||||||
|
echo "🌐 Nginx Proxy:"
|
||||||
|
systemctl status nginx --no-pager -l
|
||||||
|
echo
|
||||||
|
echo "🖥️ Display Manager:"
|
||||||
|
systemctl status lightdm --no-pager -l
|
||||||
|
echo
|
||||||
|
echo "👤 Kiosk-Benutzer-Sessions:"
|
||||||
|
who | grep kiosk || echo "Kein Kiosk-Benutzer angemeldet"
|
||||||
|
echo
|
||||||
|
echo "🌐 Anwendung erreichbar:"
|
||||||
|
if curl -s http://localhost:5000 > /dev/null; then
|
||||||
|
echo "✅ http://localhost:5000 erreichbar"
|
||||||
|
else
|
||||||
|
echo "❌ http://localhost:5000 NICHT erreichbar"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
echo "=== ANWENDUNGS-LOGS (Strg+C zum Beenden) ==="
|
||||||
|
journalctl -u myp-druckerverwaltung -f
|
||||||
|
;;
|
||||||
|
kiosk-logs)
|
||||||
|
echo "=== KIOSK-LOGS (Strg+C zum Beenden) ==="
|
||||||
|
echo "LightDM-Logs:"
|
||||||
|
journalctl -u lightdm -f &
|
||||||
|
echo "Session-Logs:"
|
||||||
|
tail -f /var/log/kiosk-session.log 2>/dev/null &
|
||||||
|
wait
|
||||||
|
;;
|
||||||
|
exit-kiosk)
|
||||||
|
echo "🔐 KIOSK-MODUS BEENDEN"
|
||||||
|
echo "WARNUNG: Stoppt den Kiosk und aktiviert Wartungsmodus!"
|
||||||
|
echo "Passwort erforderlich für Sicherheit."
|
||||||
|
read -s -p "Kiosk-Passwort: " password
|
||||||
|
echo
|
||||||
|
if [ "$password" = "744563017196A" ]; then
|
||||||
|
echo "✅ Passwort korrekt - beende Kiosk-Modus..."
|
||||||
|
systemctl stop lightdm
|
||||||
|
systemctl enable ssh
|
||||||
|
systemctl start ssh
|
||||||
|
echo "🔧 Wartungsmodus aktiviert:"
|
||||||
|
echo " • Kiosk gestoppt"
|
||||||
|
echo " • SSH aktiviert"
|
||||||
|
echo " • Console verfügbar"
|
||||||
|
echo "Kiosk-Neustart mit: myp-maintenance start"
|
||||||
|
else
|
||||||
|
echo "❌ Falsches Passwort! Kiosk bleibt aktiv."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
enable-ssh)
|
||||||
|
echo "Aktiviere SSH für Wartung..."
|
||||||
|
systemctl enable ssh
|
||||||
|
systemctl start ssh
|
||||||
|
echo "✅ SSH aktiviert für Remote-Wartung"
|
||||||
|
echo "SSH-Status: $(systemctl is-active ssh)"
|
||||||
|
echo "IP-Adresse: $(hostname -I | awk '{print $1}')"
|
||||||
|
;;
|
||||||
|
disable-ssh)
|
||||||
|
echo "Deaktiviere SSH für Sicherheit..."
|
||||||
|
systemctl stop ssh
|
||||||
|
systemctl disable ssh
|
||||||
|
echo "✅ SSH deaktiviert"
|
||||||
|
;;
|
||||||
|
check-health)
|
||||||
|
echo "=== SYSTEM-GESUNDHEITSCHECK ==="
|
||||||
|
echo
|
||||||
|
# Services-Check
|
||||||
|
echo "📋 Service-Status:"
|
||||||
|
for service in myp-druckerverwaltung nginx lightdm; do
|
||||||
|
if systemctl is-active --quiet $service; then
|
||||||
|
echo " ✅ $service: aktiv"
|
||||||
|
else
|
||||||
|
echo " ❌ $service: INAKTIV"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
# Netzwerk-Check
|
||||||
|
echo "🌐 Netzwerk-Status:"
|
||||||
|
if curl -s http://localhost:5000 > /dev/null; then
|
||||||
|
echo " ✅ Anwendung erreichbar"
|
||||||
|
else
|
||||||
|
echo " ❌ Anwendung NICHT erreichbar"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
# Kiosk-Check
|
||||||
|
echo "🖥️ Kiosk-Status:"
|
||||||
|
if pgrep -u kiosk > /dev/null; then
|
||||||
|
echo " ✅ Kiosk-Benutzer angemeldet"
|
||||||
|
else
|
||||||
|
echo " ❌ Kiosk-Benutzer NICHT angemeldet"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if pgrep -f "chromium.*kiosk" > /dev/null; then
|
||||||
|
echo " ✅ Chromium-Kiosk läuft"
|
||||||
|
else
|
||||||
|
echo " ❌ Chromium-Kiosk läuft NICHT"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "MYP Druckerverwaltung - Wartungstool"
|
||||||
|
echo
|
||||||
|
echo "VERWENDUNG: $0 BEFEHL"
|
||||||
|
echo
|
||||||
|
echo "SERVICE-MANAGEMENT:"
|
||||||
|
echo " start Alle Services starten"
|
||||||
|
echo " stop Alle Services stoppen"
|
||||||
|
echo " restart Alle Services neustarten"
|
||||||
|
echo " status Detaillierter Status aller Services"
|
||||||
|
echo
|
||||||
|
echo "LOGS & MONITORING:"
|
||||||
|
echo " logs Live Anwendungs-Logs anzeigen"
|
||||||
|
echo " kiosk-logs Live Kiosk-Logs anzeigen"
|
||||||
|
echo " check-health System-Gesundheitscheck"
|
||||||
|
echo
|
||||||
|
echo "KIOSK-KONTROLLE:"
|
||||||
|
echo " exit-kiosk Kiosk beenden (Passwort: 744563017196A)"
|
||||||
|
echo " enable-ssh SSH für Remote-Wartung aktivieren"
|
||||||
|
echo " disable-ssh SSH wieder deaktivieren"
|
||||||
|
echo
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "/usr/local/bin/myp-maintenance"
|
||||||
|
|
||||||
|
# Kiosk-Starter-Skript
|
||||||
|
progress "Erstelle Kiosk-Starter-Skript..."
|
||||||
|
|
||||||
|
KIOSK_HOME="/home/$KIOSK_USER"
|
||||||
|
|
||||||
|
cat > "$KIOSK_HOME/start-kiosk.sh" << EOF
|
||||||
|
#!/bin/bash
|
||||||
|
# MYP Kiosk-Starter
|
||||||
|
|
||||||
|
export DISPLAY=:0
|
||||||
|
|
||||||
|
# Logging für Debugging
|
||||||
|
exec > >(tee -a /var/log/kiosk-session.log) 2>&1
|
||||||
|
echo "\$(date): Kiosk-Session gestartet für Benutzer $KIOSK_USER"
|
||||||
|
|
||||||
|
# Bildschirmschoner deaktivieren
|
||||||
|
xset s off
|
||||||
|
xset s noblank
|
||||||
|
xset s noexpose
|
||||||
|
xset -dpms
|
||||||
|
|
||||||
|
# Mauszeiger verstecken
|
||||||
|
unclutter -idle 0.5 -root &
|
||||||
|
|
||||||
|
# Warte auf Anwendung
|
||||||
|
echo "Warte auf MYP-Anwendung..."
|
||||||
|
WAIT_COUNT=0
|
||||||
|
while ! curl -s http://localhost:5000 > /dev/null; do
|
||||||
|
echo "Warte auf MYP-Anwendung... (\$WAIT_COUNT/30)"
|
||||||
|
sleep 2
|
||||||
|
WAIT_COUNT=\$((WAIT_COUNT + 1))
|
||||||
|
if [ \$WAIT_COUNT -gt 30 ]; then
|
||||||
|
echo "FEHLER: MYP-Anwendung nach 60s nicht erreichbar!"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Starte Chromium im Kiosk-Modus
|
||||||
|
if command -v chromium &> /dev/null; then
|
||||||
|
CHROMIUM_BIN="chromium"
|
||||||
|
elif command -v chromium-browser &> /dev/null; then
|
||||||
|
CHROMIUM_BIN="chromium-browser"
|
||||||
|
else
|
||||||
|
echo "Chromium nicht gefunden! Versuche alternativ Firefox..."
|
||||||
|
if command -v firefox &> /dev/null; then
|
||||||
|
firefox --kiosk http://localhost:5000
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "Kein unterstützter Browser gefunden!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Starte \$CHROMIUM_BIN im Kiosk-Modus..."
|
||||||
|
|
||||||
|
\$CHROMIUM_BIN --kiosk --no-sandbox --disable-infobars --disable-session-crashed-bubble http://localhost:5000
|
||||||
|
|
||||||
|
echo "\$(date): Kiosk-Session beendet"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$KIOSK_HOME/start-kiosk.sh"
|
||||||
|
chown "$KIOSK_USER:$KIOSK_USER" "$KIOSK_HOME/start-kiosk.sh"
|
||||||
|
|
||||||
|
# Erstelle leere Log-Dateien
|
||||||
|
touch /var/log/kiosk-session.log
|
||||||
|
touch /var/log/kiosk-watchdog.log
|
||||||
|
touch /var/log/kiosk-autostart.log
|
||||||
|
touch /var/log/kiosk-fallback.log
|
||||||
|
chmod 666 /var/log/kiosk-session.log
|
||||||
|
chmod 666 /var/log/kiosk-watchdog.log
|
||||||
|
chmod 666 /var/log/kiosk-autostart.log
|
||||||
|
chmod 666 /var/log/kiosk-fallback.log
|
||||||
|
|
||||||
|
log "✅ Wartungstools erstellt"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ========================== SERVICE-DATEIEN ERSTELLEN ==========================
|
||||||
|
create_service_files() {
|
||||||
|
log "=== SERVICE-DATEIEN ERSTELLEN ==="
|
||||||
|
|
||||||
|
progress "Erstelle myp-druckerverwaltung.service..."
|
||||||
|
|
||||||
|
# Service-Datei für die Hauptanwendung
|
||||||
|
cat > "/etc/systemd/system/myp-druckerverwaltung.service" << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=MYP Druckerverwaltung Flask Application
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=$APP_USER
|
||||||
|
Group=$APP_USER
|
||||||
|
WorkingDirectory=$APP_DIR
|
||||||
|
Environment=PATH=/usr/local/bin:/usr/bin:/bin
|
||||||
|
Environment=PYTHONPATH=$APP_DIR
|
||||||
|
ExecStart=/usr/bin/python3 $APP_DIR/app.py
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
StandardOutput=journal
|
||||||
|
StandardError=journal
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Erstelle eine einfache app.py falls keine vorhanden ist
|
||||||
|
if [ ! -f "$APP_DIR/app.py" ]; then
|
||||||
|
progress "Erstelle einfache app.py als Platzhalter..."
|
||||||
|
mkdir -p "$APP_DIR"
|
||||||
|
cat > "$APP_DIR/app.py" << 'EOF'
|
||||||
|
#!/usr/bin/python3
|
||||||
|
# Einfache Flask-Anwendung als Platzhalter
|
||||||
|
|
||||||
|
from flask import Flask, render_template_string
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route('/')
|
||||||
|
def home():
|
||||||
|
return render_template_string("""
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>MYP Druckerverwaltung</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: Arial, sans-serif; margin: 0; padding: 0; background: #f5f5f5; }
|
||||||
|
.container { max-width: 800px; margin: 0 auto; padding: 20px; }
|
||||||
|
h1 { color: #333; }
|
||||||
|
.box { background: white; border-radius: 5px; padding: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>MYP Druckerverwaltung</h1>
|
||||||
|
<div class="box">
|
||||||
|
<h2>System erfolgreich gestartet</h2>
|
||||||
|
<p>Die MYP Druckerverwaltung läuft im Kiosk-Modus.</p>
|
||||||
|
<p>Sie können diese Anwendung nun durch Ihre eigentliche Anwendung ersetzen.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
""")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(host='0.0.0.0', port=5000)
|
||||||
|
EOF
|
||||||
|
chmod +x "$APP_DIR/app.py"
|
||||||
|
chown "$APP_USER:$APP_USER" "$APP_DIR/app.py"
|
||||||
|
|
||||||
|
# Installiere Flask falls nicht vorhanden
|
||||||
|
if ! python3 -c "import flask" &>/dev/null; then
|
||||||
|
progress "Installiere Flask..."
|
||||||
|
pip3 install flask --break-system-packages || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Erstelle Templates-Verzeichnis falls nicht vorhanden
|
||||||
|
if [ ! -d "$APP_DIR/templates" ]; then
|
||||||
|
mkdir -p "$APP_DIR/templates"
|
||||||
|
chown "$APP_USER:$APP_USER" "$APP_DIR/templates"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Erstelle Static-Verzeichnis falls nicht vorhanden
|
||||||
|
if [ ! -d "$APP_DIR/static" ]; then
|
||||||
|
mkdir -p "$APP_DIR/static"
|
||||||
|
chown "$APP_USER:$APP_USER" "$APP_DIR/static"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Systemd neu laden
|
||||||
|
systemctl daemon-reload
|
||||||
|
|
||||||
|
log "✅ Service-Dateien erstellt"
|
||||||
|
}
|
||||||
|
|
||||||
# ========================== HAUPTFUNKTION ==========================
|
# ========================== HAUPTFUNKTION ==========================
|
||||||
main() {
|
main() {
|
||||||
log "=== RASPBERRY PI SCHNELLSTART-OPTIMIERUNG GESTARTET ==="
|
log "=== RASPBERRY PI SCHNELLSTART-OPTIMIERUNG GESTARTET ==="
|
||||||
@ -607,9 +949,11 @@ main() {
|
|||||||
check_root
|
check_root
|
||||||
check_system
|
check_system
|
||||||
install_essential_packages
|
install_essential_packages
|
||||||
|
create_service_files
|
||||||
optimize_boot
|
optimize_boot
|
||||||
strengthen_autologin
|
strengthen_autologin
|
||||||
optimize_kiosk_user
|
optimize_kiosk_user
|
||||||
|
create_maintenance_tools
|
||||||
strengthen_watchdog
|
strengthen_watchdog
|
||||||
optimize_services
|
optimize_services
|
||||||
optimize_system_parameters
|
optimize_system_parameters
|
||||||
@ -619,9 +963,11 @@ main() {
|
|||||||
log "🎉 RASPBERRY PI SCHNELLSTART-OPTIMIERUNG ERFOLGREICH!"
|
log "🎉 RASPBERRY PI SCHNELLSTART-OPTIMIERUNG ERFOLGREICH!"
|
||||||
log ""
|
log ""
|
||||||
log "📋 ZUSAMMENFASSUNG:"
|
log "📋 ZUSAMMENFASSUNG:"
|
||||||
|
log " ✅ Service-Dateien erstellt"
|
||||||
log " ✅ Boot-Parameter optimiert"
|
log " ✅ Boot-Parameter optimiert"
|
||||||
log " ✅ Autologin verstärkt"
|
log " ✅ Autologin verstärkt"
|
||||||
log " ✅ Kiosk-Benutzer optimiert"
|
log " ✅ Kiosk-Benutzer optimiert"
|
||||||
|
log " ✅ Wartungstools erstellt"
|
||||||
log " ✅ Watchdog-Services verstärkt"
|
log " ✅ Watchdog-Services verstärkt"
|
||||||
log " ✅ System-Services optimiert"
|
log " ✅ System-Services optimiert"
|
||||||
log " ✅ System-Parameter optimiert"
|
log " ✅ System-Parameter optimiert"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user