#!/bin/bash # =================================================================== # MYP Druckerverwaltung - Raspberry Pi Schnellstart # Vereinfachte Installation für sofortige Nutzung # =================================================================== set -e # Farben für Ausgabe RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # Pfad-Variablen KIOSK_HOME="/home/kiosk" PI_HOME="/home/pi" LOCAL_BIN="/usr/local/bin" APP_DIR="/opt/myp-druckerverwaltung" BACKUP_DIR="/opt/myp-backups" BACKUP_ORIGINAL="/opt/myp-backup-original" LIGHTDM_CONF="/etc/lightdm/lightdm.conf" # Logging-Funktionen log() { echo -e "${GREEN}[SCHNELLSTART] $1${NC}"; } error() { echo -e "${RED}[FEHLER] $1${NC}"; exit 1; } warning() { echo -e "${YELLOW}[WARNUNG] $1${NC}"; } info() { echo -e "${BLUE}[INFO] $1${NC}"; } # ASCII Art Banner cat << 'EOF' ╔═══════════════════════════════════════════════════════════╗ ║ MYP DRUCKERVERWALTUNG ║ ║ Raspberry Pi Kiosk Schnellstart ║ ║ ║ ║ 🖨️ Vollautomatische Installation in 3 Schritten ║ ╚═══════════════════════════════════════════════════════════╝ EOF echo log "Willkommen zum MYP Druckerverwaltung Schnellstart!" echo # Prüfungen vor Installation log "Führe Vorprüfungen durch..." # Root-Berechtigung prüfen if [ "$EUID" -ne 0 ]; then error "Dieses Skript muss als Root ausgeführt werden: sudo $0" fi # Stelle sicher, dass wichtige Tools verfügbar sind export PATH="/usr/sbin:/sbin:/usr/bin:/bin:$PATH" # Erkenne verfügbares Chromium-Binary CHROMIUM_BIN="" for chromium_path in "/usr/bin/chromium" "/usr/bin/chromium-browser" "/snap/bin/chromium"; do if [ -x "$chromium_path" ]; then CHROMIUM_BIN="$chromium_path" break fi done if [ -z "$CHROMIUM_BIN" ]; then CHROMIUM_BIN="chromium" # Fallback auf PATH fi # Raspberry Pi erkennen if ! grep -q "Raspberry Pi" /proc/device-tree/model 2>/dev/null; then warning "Nicht auf Raspberry Pi - Installation trotzdem fortsetzen? (j/N)" read -r response if [[ ! "$response" =~ ^[jJ]$ ]]; then error "Installation abgebrochen" fi fi # Internetverbindung prüfen if ! ping -c 1 google.com &> /dev/null; then error "Keine Internetverbindung! Bitte Netzwerk konfigurieren." fi # Speicherplatz prüfen available_space=$(df / | awk 'NR==2 {print $4}') if [ "$available_space" -lt 2000000 ]; then error "Nicht genügend Speicherplatz! Mindestens 2GB frei erforderlich." fi log "✅ Alle Vorprüfungen bestanden!" echo # Benutzerinteraktion info "📋 Konfiguration:" echo # Kiosk-URL abfragen read -p "🌐 Kiosk-URL (Standard: http://localhost): " kiosk_url kiosk_url=${kiosk_url:-"http://localhost"} # Auto-Neustart abfragen read -p "🔄 Nach Installation automatisch neustarten? (J/n): " auto_reboot auto_reboot=${auto_reboot:-"j"} # Bestätigung echo warning "⚠️ ACHTUNG: Diese Installation wird das System für Kiosk-Modus konfigurieren!" warning " - Automatischer Login wird aktiviert" warning " - Desktop-Umgebung wird auf Kiosk umgestellt" warning " - Systemd-Services werden erstellt" echo read -p "🚀 Installation starten? (j/N): " confirm if [[ ! "$confirm" =~ ^[jJ]$ ]]; then error "Installation abgebrochen" fi echo log "=== SCHRITT 1/3: SYSTEM VORBEREITEN ===" # Prüfe ob install_raspberry_pi.sh existiert if [ ! -f "./install_raspberry_pi.sh" ]; then error "install_raspberry_pi.sh nicht gefunden! Führe dieses Skript im Projektverzeichnis aus." fi # Mache Installationsskript ausführbar chmod +x "./install_raspberry_pi.sh" log "=== SCHRITT 2/3: HAUPTINSTALLATION ===" echo # Führe Hauptinstallation aus info "Starte vollständige Installation..." info "Dies kann 10-20 Minuten dauern..." echo if ./install_raspberry_pi.sh; then log "✅ Hauptinstallation erfolgreich abgeschlossen!" else error "❌ Fehler bei der Hauptinstallation!" fi log "=== SCHRITT 3/3: FINALISIERUNG ===" # Kiosk-URL anpassen falls gewünscht if [ "$kiosk_url" != "http://localhost" ]; then log "Konfiguriere Kiosk-URL: $kiosk_url" sed -i "s|http://localhost|$kiosk_url|g" $KIOSK_HOME/kiosk.sh fi # Erstelle Schnellzugriff-Desktop-Icons log "Erstelle Desktop-Verknüpfungen..." # Für den normalen Benutzer (falls vorhanden) if [ -d "$PI_HOME" ]; then mkdir -p $PI_HOME/Desktop # Wartungs-Icon cat > "$PI_HOME/Desktop/MYP-Wartung.desktop" << EOF [Desktop Entry] Version=1.0 Type=Application Name=MYP Wartung Comment=Druckerverwaltung warten Exec=x-terminal-emulator -e 'sudo myp-maintenance status; read -p "Taste drücken..."' Icon=applications-system Terminal=false Categories=System; EOF # Browser-Icon für normale Ansicht cat > "$PI_HOME/Desktop/MYP-Browser.desktop" << EOF [Desktop Entry] Version=1.0 Type=Application Name=MYP Browser-Ansicht Comment=Druckerverwaltung im Browser öffnen Exec=$CHROMIUM_BIN $kiosk_url Icon=web-browser Terminal=false Categories=Network; EOF chown pi:pi $PI_HOME/Desktop/*.desktop chmod +x $PI_HOME/Desktop/*.desktop fi # Erstelle Backup der ursprünglichen Konfiguration log "Erstelle Konfigurations-Backup..." mkdir -p $BACKUP_ORIGINAL cp $LIGHTDM_CONF $BACKUP_ORIGINAL/ 2>/dev/null || true cp $KIOSK_HOME/.config/openbox/autostart $BACKUP_ORIGINAL/ 2>/dev/null || true # Erstelle Notfall-Wiederherstellungsskript cat > "$LOCAL_BIN/myp-notfall-reset" << EOF #!/bin/bash echo "🚨 MYP Notfall-Reset" echo "Stoppt alle MYP-Services und stellt Original-Konfiguration wieder her" echo read -p "Wirklich fortfahren? (j/N): " confirm if [[ "\$confirm" =~ ^[jJ]$ ]]; then systemctl stop myp-kiosk myp-druckerverwaltung nginx systemctl disable myp-kiosk # Original LightDM wiederherstellen (falls vorhanden) if [ -f "$BACKUP_ORIGINAL/lightdm.conf" ]; then cp $BACKUP_ORIGINAL/lightdm.conf $LIGHTDM_CONF fi echo "✅ Reset abgeschlossen. System neustarten für normale Desktop-Nutzung:" echo "sudo reboot" fi EOF chmod +x $LOCAL_BIN/myp-notfall-reset # Zusammenfassung der Installation echo log "🎉 === INSTALLATION ERFOLGREICH ABGESCHLOSSEN! ===" echo info "📋 ZUSAMMENFASSUNG:" info " • Kiosk-URL: $kiosk_url" info " • Automatischer Login: Aktiviert (Benutzer: kiosk)" info " • Anwendung: http://$(hostname -I | awk '{print $1}')" info " • SSH-Zugang: Weiterhin verfügbar" echo info "🔧 WICHTIGE BEFEHLE:" info " • Status prüfen: myp-maintenance status" info " • Services neustarten: myp-maintenance restart" info " • Nur Kiosk neustarten: myp-maintenance kiosk-restart" info " • Logs anzeigen: myp-maintenance logs" info " • Backup erstellen: myp-backup" info " • Notfall-Reset: myp-notfall-reset" echo info "📁 WICHTIGE PFADE:" info " • Anwendung: $APP_DIR/" info " • Kiosk-Skript: $KIOSK_HOME/kiosk.sh" info " • Logs: journalctl -u myp-kiosk -f" info " • Backups: $BACKUP_DIR/" echo info "🔒 SICHERHEIT:" info " • Firewall aktiv (Ports 80, 22)" info " • Automatische Backups (täglich 2:00 Uhr)" info " • Service-Überwachung aktiviert" echo if [[ "$auto_reboot" =~ ^[jJ]$ ]]; then warning "⚠️ System wird in 10 Sekunden automatisch neu gestartet..." warning " Drücke CTRL+C zum Abbrechen" echo for i in {10..1}; do echo -ne "\r🔄 Neustart in $i Sekunden..." sleep 1 done echo log "🚀 Starte System neu..." reboot else echo warning "⚠️ WICHTIG: Starte das System manuell neu, um den Kiosk-Modus zu aktivieren:" warning " sudo reboot" echo info "📞 Bei Problemen: Prüfe die Logs mit journalctl -u myp-kiosk -f" fi echo log "Installation abgeschlossen! 🎯"