# MYP Druckerverwaltung - Finale Kiosk-Installation

## Vollautomatische Raspberry Pi Kiosk-Lösung

### Datum: 31.05.2025
### Status: Production-Ready ✅

## Übersicht

Die MYP Druckerverwaltung verfügt jetzt über ein vollautomatisches Kiosk-Installationssystem, das ein **echtes, sicheres Kiosk-System ohne Escape-Möglichkeiten** erstellt.

## 🚀 Installation

### Einfacher Start (Empfohlen)
```bash
# Im MYP-Projektverzeichnis
sudo ./schnellstart_raspberry_pi.sh
```

### Erweiterte Installation
```bash
# Für manuelle Kontrolle
sudo ./install_raspberry_pi.sh
```

## 🔒 Sicherheits-Features

### Kiosk-Sicherheit
- **Kein Desktop-Escape**: Alle Tastenkombinationen deaktiviert
- **Vollbild-Zwang**: Chromium startet zwangsweise im Kiosk-Modus
- **Browser-Beschränkungen**: Entwicklertools, Extensions und Menüs deaktiviert
- **Openbox-Lockdown**: Fenstermanager ohne Shortcuts oder Menüs

### System-Sicherheit  
- **SSH deaktiviert**: Standardmäßig für maximale Sicherheit
- **Firewall aktiv**: UFW mit Fail2Ban-Integration
- **Desktop-Bereinigung**: Alle unnötigen Desktop-Umgebungen entfernt
- **Benutzer-Isolation**: Separate Benutzer für App und Kiosk

### Auto-Login-Sicherheit
- **LightDM Auto-Login**: Sicherer automatischer Login für Kiosk-Benutzer
- **Session-Isolation**: Kiosk-Benutzer ohne sudo-Berechtigung
- **PAM-Integration**: Sichere Authentifizierung ohne Passwort-Eingabe
- **TTY-Fallback**: Getty Auto-Login als Backup bei LightDM-Fehlern

### 7-fache Autostart-Absicherung
- **1. LightDM Auto-Login**: Primärer Autostart-Mechanismus
- **2. Systemd User-Service**: User-Session-basierter Autostart
- **3. Bashrc Autostart**: Shell-basierter Autostart bei Login
- **4. Profile Autostart**: System-Profile-basierter Autostart
- **5. XDG Desktop Autostart**: Desktop-Environment-Autostart
- **6. Cron Watchdog**: Überwachung und Neustart alle 2 Minuten
- **7. RC.Local Fallback**: System-Boot-Fallback-Mechanismus

### Chromium-Sicherheits-Flags
```bash
--kiosk --no-sandbox --disable-web-security
--disable-extensions --disable-dev-shm-usage
--disable-hang-monitor --disable-popup-blocking
--disable-infobars --disable-session-crashed-bubble
--disable-restore-session-state --noerrdialogs
--no-first-run --no-default-browser-check
--start-fullscreen --window-position=0,0
--app=http://localhost:5000
```

## 🛠️ System-Architektur

### Benutzer-Structure
- **`myp`**: Anwendungsbenutzer (Flask-App)
- **`kiosk`**: Kiosk-Benutzer (X11 + Chromium, Auto-Login)

### Verzeichnis-Structure  
- **`/opt/myp-druckerverwaltung`**: Hauptanwendung
- **`/opt/myp-backups`**: Automatische Backups
- **`/home/kiosk/.config/openbox`**: Kiosk-Konfiguration
- **`/home/kiosk/.config/systemd/user`**: User-Service-Autostart
- **`/home/kiosk/.config/autostart`**: XDG-Autostart-Konfiguration
- **`/var/log/myp-kiosk-install.log`**: Installations-Log

### Systemd-Services
- **`myp-druckerverwaltung.service`**: Flask-Anwendung
- **`myp-display.service`**: LightDM-Management und -Überwachung
- **`myp-kiosk-monitor.service`**: Kontinuierliche Kiosk-Überwachung + Recovery
- **`nginx.service`**: Reverse-Proxy
- **`lightdm.service`**: Display Manager mit Auto-Login
- **`kiosk-watchdog.service`**: Service-Überwachung und Neustart

### Auto-Login-System
- **LightDM**: Primärer Display Manager mit Auto-Login für Kiosk-Benutzer
- **Getty Fallback**: TTY1 Auto-Login als Backup bei LightDM-Fehlern
- **PAM-Integration**: Sichere Authentifizierung ohne Passwort-Eingabe
- **Session-Management**: systemd-logind für robuste Session-Verwaltung

### Monitoring & Recovery
- **Health-Checks**: Alle 10 Minuten automatisch
- **Resource-Monitoring**: CPU, RAM, Disk alle 5 Minuten
- **Service-Überwachung**: Kontinuierliche Überwachung aller kritischen Services
- **Auto-Recovery**: Automatischer Neustart bei Service-Fehlern
- **Cron-Watchdog**: Zusätzliche Überwachung alle 2 Minuten

## 🔧 Wartungstools

### myp-maintenance
Haupt-Wartungstool für alle Kiosk-Operationen:

```bash
# Service-Management
myp-maintenance start          # Alle Services starten
myp-maintenance stop           # Alle Services stoppen
myp-maintenance restart        # Services neustarten
myp-maintenance status         # Detaillierter Status aller Services

# Einzelne Services
myp-maintenance app-restart    # Nur Anwendung neustarten
myp-maintenance kiosk-restart  # Nur Kiosk-Display neustarten
myp-maintenance monitor-restart # Nur Kiosk-Monitor neustarten

# Logs und Monitoring
myp-maintenance logs           # Live Anwendungs-Logs
myp-maintenance kiosk-logs     # Live Kiosk-Logs (Monitor + LightDM + Session)
myp-maintenance check-health   # System-Gesundheitscheck
myp-maintenance auto-fix       # Automatische Problemreparatur

# Kiosk-Kontrolle
myp-maintenance exit-kiosk     # Kiosk beenden (Passwort: 744563017196A)
myp-maintenance enter-kiosk    # Kiosk-Modus aktivieren

# Remote-Zugang
myp-maintenance enable-ssh     # SSH für Wartung aktivieren
myp-maintenance disable-ssh    # SSH wieder deaktivieren
```

### myp-backup
Automatisches Backup-System:

```bash
myp-backup                     # Manuelles Backup erstellen
```

**Automatische Backups:**
- **Zeitplan**: Täglich um 2:00 Uhr
- **Aufbewahrung**: 30 Tage
- **Inhalt**: Datenbank, Konfiguration, Uploads

### myp-emergency-reset
Notfall-Tool für Problemsituationen:

```bash
myp-emergency-reset           # Stoppt Kiosk, aktiviert SSH
```

**Verwendung bei Problemen:**
1. Console-Zugang: `Strg+Alt+F1` bis `F6`
2. Login als Root oder mit sudo-Berechtigung
3. `myp-emergency-reset` ausführen
4. Bestätigung mit "RESET" eingeben
5. SSH ist dann für Remote-Wartung verfügbar

## 📋 Installations-Prozess

### Phase 1: System-Bereinigung
- Entfernung aller Desktop-Umgebungen (GNOME, KDE, XFCE, etc.)
- Deinstallation unnötiger Software (Firefox, LibreOffice, etc.)
- Service-Bereinigung (GDM, LightDM, etc.)

### Phase 2: Paket-Installation
- Basis-System: Python3, Node.js, Git, Build-Tools
- X11-System: Xorg, Openbox, Audio-Support
- Sicherheit: UFW, Fail2Ban, Unattended-Upgrades

### Phase 3: Chromium-Installation
Robuste Multi-Fallback-Installation:
1. **APT**: `chromium` oder `chromium-browser`
2. **Snap**: `snap install chromium`  
3. **Flatpak**: `flatpak install org.chromium.Chromium`

### Phase 4: Benutzer-Erstellung
- App-Benutzer (`myp`) mit sudo-Berechtigung
- Kiosk-Benutzer (`kiosk`) ohne sudo, aber mit Audio/Video-Gruppen

### Phase 5: Anwendungs-Installation
- Python Virtual Environment
- Dependencies (Flask, SQLAlchemy, PyP100, etc.)
- Node.js Dependencies (falls vorhanden)
- Datenbank-Initialisierung

### Phase 6: Kiosk-Konfiguration
- Openbox-Konfiguration ohne Shortcuts/Menüs
- Chromium-Startskript mit Sicherheits-Flags
- Autostart-Mechanismen

### Phase 7: Autostart-Konfiguration
- Systemd-Services für App und Kiosk
- Nginx-Reverse-Proxy mit Security-Headers
- Graphical-Target als Standard

### Phase 8: Sicherheits-Konfiguration
- Firewall-Regeln (SSH + HTTP)
- Fail2Ban für Brute-Force-Schutz
- Automatische Updates
- Benutzer-Einschränkungen

### Phase 9: Wartungstools
- myp-maintenance Haupt-Tool
- myp-backup Backup-System
- myp-emergency-reset Notfall-Tool
- Cron-Jobs für automatische Backups

### Phase 10: Finalisierung
- Service-Tests und -Validierung
- Chromium-Funktionstest
- Berechtigungs-Finalisierung

## 🖥️ Nach der Installation

### Automatischer Boot-Prozess
1. **System-Boot**: Debian/Ubuntu startet normal
2. **Systemd-Target**: Wechselt zu `graphical.target`
3. **Service-Start**: `myp-druckerverwaltung.service` startet Flask-App
4. **Kiosk-Start**: `myp-kiosk.service` startet X11 + Chromium
5. **Vollbild-Kiosk**: Chromium öffnet MYP-App im Vollbild

### Benutzer-Erfahrung
- **Boot-to-App**: Direkter Start der MYP-Anwendung
- **Kein Desktop**: Nutzer sehen nur die MYP-Oberfläche
- **Keine Escape-Möglichkeit**: Tastenkombinationen sind deaktiviert
- **Automatische Wiederherstellung**: Bei Crashes automatischer Neustart

## 🔍 Troubleshooting

### Häufige Probleme

#### System hängt beim Login-Screen
```bash
# Auto-Login-Konfiguration prüfen
cat /etc/lightdm/lightdm.conf | grep autologin

# LightDM-Status prüfen
systemctl status lightdm

# Getty-Fallback testen
systemctl status getty@tty1

# Display-Manager neustarten
myp-maintenance kiosk-restart

# Notfall: Getty Auto-Login aktivieren
systemctl enable getty@tty1
```

#### Auto-Login funktioniert nicht
```bash
# Kiosk-Benutzer prüfen
id kiosk
groups kiosk

# LightDM-Konfiguration validieren
lightdm --test-mode --debug

# PAM-Konfiguration prüfen
cat /etc/pam.d/lightdm-autologin

# Session-Logs prüfen
tail -f /var/log/kiosk-session.log

# Getty-Fallback aktivieren
systemctl enable getty@tty1
systemctl start getty@tty1
```

#### Kiosk startet nicht
```bash
# Umfassender Status-Check
myp-maintenance status

# Gesundheitscheck mit Auto-Fix
myp-maintenance check-health
myp-maintenance auto-fix

# Einzelne Services prüfen
systemctl status myp-druckerverwaltung
systemctl status lightdm
systemctl status myp-kiosk-monitor

# Logs analysieren
myp-maintenance kiosk-logs

# Service manuell starten
systemctl start myp-display
```

#### Service-Monitoring-Probleme
```bash
# Monitor-Service prüfen
systemctl status myp-kiosk-monitor

# Health-Check manuell ausführen
myp-maintenance check-health

# Cron-Jobs prüfen
crontab -l -u root | grep myp

# Resource-Logs prüfen
tail -f /var/log/system-resources.log

# Watchdog-Logs prüfen
tail -f /var/log/kiosk-watchdog.log
```

#### Anwendung nicht erreichbar
```bash
# Netzwerk-Status prüfen
myp-maintenance check-health

# Anwendung direkt testen
curl -I http://localhost:5000

# Services-Status
systemctl status myp-druckerverwaltung
systemctl status nginx

# Ports prüfen
netstat -tulpn | grep ":80\|:5000"

# Automatische Reparatur
myp-maintenance auto-fix
```

#### Chromium-Probleme
```bash
# Chromium-Installation prüfen
which chromium chromium-browser
ls -la /snap/bin/chromium
flatpak list | grep -i chromium

# Kiosk-Benutzer-Test
sudo -u kiosk chromium --version

# Session-Umgebung prüfen
sudo -u kiosk env | grep DISPLAY

# Autostart-Mechanismen testen
sudo -u kiosk ~/.config/openbox/autostart
sudo -u kiosk ~/start-kiosk.sh
```

### Console-Zugang
Falls der Kiosk nicht reagiert:
1. **TTY wechseln**: `Strg+Alt+F1` bis `F6`
2. **Einloggen**: Als Root oder sudo-User
3. **Services prüfen**: `myp-maintenance status`
4. **Notfall-Reset**: `myp-emergency-reset`

### Remote-Wartung
```bash
# SSH aktivieren
myp-maintenance enable-ssh

# Remote verbinden
ssh user@raspberry-pi-ip

# Nach Wartung SSH wieder deaktivieren
myp-maintenance disable-ssh
```

## 📊 Monitoring

### Service-Überwachung
```bash
# Alle Services
myp-maintenance status

# Einzelne Services
systemctl status myp-druckerverwaltung
systemctl status myp-kiosk
systemctl status nginx
```

### Log-Monitoring
```bash
# Live Anwendungs-Logs
myp-maintenance logs

# Live Kiosk-Logs
myp-maintenance kiosk-logs

# System-Logs
journalctl -f
```

### Resource-Monitoring
```bash
# System-Ressourcen
htop

# Festplatte
df -h

# Speicher
free -h
```

## 🔐 Sicherheits-Best-Practices

### Standard-Konfiguration
- SSH ist **deaktiviert** (aktivieren nur für Wartung)
- Firewall ist **aktiv** mit Fail2Ban
- Kiosk-Benutzer hat **keine sudo-Berechtigung**
- Alle Desktop-Umgebungen sind **entfernt**

### Wartungs-Zugang
- **Console**: Immer verfügbar über TTY1-6
- **SSH**: Nur bei Bedarf aktivieren
- **Notfall-Reset**: Bei kritischen Problemen

### Backup-Strategie
- **Automatisch**: Täglich um 2:00 Uhr
- **Manuell**: `myp-backup` bei Bedarf
- **Aufbewahrung**: 30 Tage automatisch

## 📈 Performance-Optimierung

### Systemd-Konfiguration
- **Restart-Policy**: Automatischer Neustart bei Fehlern
- **Abhängigkeiten**: Kiosk wartet auf Anwendung
- **Resource-Limits**: Optimiert für Raspberry Pi

### Chromium-Optimierung
- **Hardware-Beschleunigung**: GPU-Support aktiviert
- **Memory-Management**: Optimierte Flags
- **Cache-Konfiguration**: User-Data-Directory isoliert

### Nginx-Optimierung
- **Proxy-Buffering**: Optimiert für lokale Verbindungen
- **Static-File-Serving**: Direkt vom Filesystem
- **Security-Headers**: Umfassende Sicherheits-Konfiguration

## 🎯 Fazit

Das finale Kiosk-Installationssystem bietet:

✅ **Vollautomatische Installation** von Grund auf  
✅ **Maximale Sicherheit** ohne Escape-Möglichkeiten  
✅ **Robuste Chromium-Installation** mit Multi-Fallbacks  
✅ **Umfassende Wartungstools** für Remote-Management  
✅ **Production-Ready** für echten Kiosk-Einsatz  
✅ **Automatische Backups** und Monitoring  
✅ **Notfall-Recovery** für kritische Situationen  

**Das System ist jetzt bereit für den Produktionseinsatz!** 🚀

---
**Dokumentation erstellt**: 31.05.2025  
**Letzte Aktualisierung**: 31.05.2025  
**Version**: 3.0.0 (Production-Ready) 