# MYP Druckerverwaltung - Kiosk-Modus Setup Anleitung

## Übersicht

Diese Anleitung beschreibt die vollautomatische Einrichtung eines Kiosk-Modus auf Raspberry Pi für die MYP Druckerverwaltung. Das System startet automatisch beim Booten ohne Benutzeranmeldung und öffnet Chromium im Vollbildmodus.

## Voraussetzungen

- Raspberry Pi (3B+ oder neuer empfohlen)
- Raspberry Pi OS (Lite oder Desktop)
- Internetverbindung
- Mindestens 2GB freier Speicherplatz

## Automatische Installation

### 1. Skript ausführen

```bash
# Als Root ausführen
sudo bash combined.sh
```

### 2. System neustarten

```bash
sudo reboot
```

## Was wird installiert?

### System-Komponenten
- **Chromium Browser** - Für Kiosk-Anzeige
- **Openbox** - Minimaler Window Manager
- **LightDM** - Display Manager für Autologin
- **Python 3** - Für Flask-Anwendung
- **Systemd Services** - Für automatischen Start

### Benutzer
- **kiosk** - Kiosk-Benutzer für automatischen Login
- **myp** - Anwendungsbenutzer für Backend

### Services
- **myp-druckerverwaltung.service** - Flask-Backend
- **kiosk-chromium.service** - Chromium Kiosk-Modus
- **lightdm.service** - Automatischer Login

## Kiosk-Funktionalität

### Automatischer Start
1. System bootet ohne Benutzeranmeldung
2. LightDM meldet automatisch Kiosk-Benutzer an
3. Openbox startet als minimaler Window Manager
4. Flask-Backend startet auf Port 5000
5. Chromium öffnet automatisch im Kiosk-Modus

### URL-Priorität
Das System versucht folgende URLs in dieser Reihenfolge:
1. `http://localhost:8080` (falls verfügbar)
2. `http://localhost:5000` (Fallback)

### Kiosk-Features
- **Vollbildmodus** - Keine Browser-UI sichtbar
- **Mauszeiger versteckt** - Nach 0.5s Inaktivität
- **Keine Tastenkombinationen** - Alt+Tab, F11 etc. deaktiviert
- **Automatischer Neustart** - Bei Browser-Crash
- **Energiesparmodus deaktiviert** - Bildschirm bleibt immer an

## Raspberry Pi Optimierungen

### Boot-Konfiguration (`/boot/config.txt`)
```ini
# GPU Memory für bessere Browser-Performance
gpu_mem=128

# Boot-Optimierungen
disable_splash=1
hdmi_force_hotplug=1
disable_overscan=1
```

### Kernel-Parameter (`/boot/cmdline.txt`)
```
consoleblank=0  # Console Blanking deaktiviert
```

### Hardware-Optimierungen
- WLAN Power Management deaktiviert
- IPv6 systemweit deaktiviert
- Swappiness reduziert
- GPU Memory Split optimiert

## Wartung und Überwachung

### Wartungstool verwenden

```bash
# System-Status prüfen
sudo myp-maintenance status

# Services neustarten
sudo myp-maintenance restart

# Live-Logs anzeigen
sudo myp-maintenance logs

# Services stoppen
sudo myp-maintenance stop

# Services starten
sudo myp-maintenance start
```

### Log-Dateien

```bash
# Kiosk-Session Logs
tail -f /var/log/kiosk-session.log

# Systemd Service Logs
journalctl -u myp-druckerverwaltung -f
journalctl -u lightdm -f

# System-Logs
journalctl -f
```

### Service-Status prüfen

```bash
# Alle Services prüfen
systemctl status myp-druckerverwaltung
systemctl status lightdm
systemctl status kiosk-chromium

# Service-Abhängigkeiten anzeigen
systemctl list-dependencies graphical.target
```

## Problembehandlung

### Kiosk startet nicht
1. **Backend prüfen:**
   ```bash
   systemctl status myp-druckerverwaltung
   curl http://localhost:5000
   ```

2. **Display Manager prüfen:**
   ```bash
   systemctl status lightdm
   ```

3. **X-Server prüfen:**
   ```bash
   ps aux | grep X
   echo $DISPLAY
   ```

### Browser-Probleme
1. **Chromium-Prozesse beenden:**
   ```bash
   sudo pkill -f chromium
   ```

2. **Chromium-Cache löschen:**
   ```bash
   sudo rm -rf /home/kiosk/.chromium-kiosk
   ```

3. **Kiosk-Service neustarten:**
   ```bash
   sudo systemctl restart kiosk-chromium
   ```

### Netzwerk-Probleme
1. **Verbindung testen:**
   ```bash
   ping google.com
   curl http://localhost:5000
   ```

2. **WLAN Power Management prüfen:**
   ```bash
   iwconfig wlan0
   ```

### Performance-Probleme
1. **Temperatur prüfen (Raspberry Pi):**
   ```bash
   vcgencmd measure_temp
   ```

2. **Memory-Usage prüfen:**
   ```bash
   free -h
   htop
   ```

3. **GPU Memory prüfen:**
   ```bash
   vcgencmd get_mem gpu
   ```

## Sicherheit

### Kiosk-Escape verhindern
- Alle Tastenkombinationen deaktiviert
- Kein Zugriff auf Terminal
- Openbox ohne Menü konfiguriert
- Browser-Entwicklertools deaktiviert

### Remote-Zugriff
- SSH standardmäßig deaktiviert
- Root-Login nur mit Passwort: `744563017196A`
- Firewall (UFW) installiert aber nicht konfiguriert

### Wartungszugang
```bash
# SSH aktivieren für Wartung
sudo systemctl enable ssh
sudo systemctl start ssh

# SSH wieder deaktivieren
sudo systemctl stop ssh
sudo systemctl disable ssh
```

## Anpassungen

### Eigene Anwendung einsetzen
1. **Anwendung nach `/opt/myp-druckerverwaltung` kopieren**
2. **Service-Datei anpassen falls nötig:**
   ```bash
   sudo nano /etc/systemd/system/myp-druckerverwaltung.service
   ```
3. **Services neustarten:**
   ```bash
   sudo systemctl daemon-reload
   sudo systemctl restart myp-druckerverwaltung
   ```

### URL ändern
1. **Kiosk-Skript bearbeiten:**
   ```bash
   sudo nano /home/kiosk/start-kiosk.sh
   ```
2. **URL in der Datei anpassen**
3. **Kiosk-Service neustarten:**
   ```bash
   sudo systemctl restart kiosk-chromium
   ```

### Chromium-Flags anpassen
Bearbeiten Sie `/home/kiosk/start-kiosk.sh` und passen Sie die `CHROMIUM_FLAGS` Variable an.

## Backup und Wiederherstellung

### Konfiguration sichern
```bash
# Wichtige Konfigurationsdateien
sudo tar -czf myp-kiosk-backup.tar.gz \
    /etc/systemd/system/myp-*.service \
    /etc/systemd/system/kiosk-*.service \
    /etc/lightdm/lightdm.conf \
    /home/kiosk/.config \
    /home/kiosk/start-kiosk.sh \
    /opt/myp-druckerverwaltung
```

### System zurücksetzen
```bash
# Services stoppen und deaktivieren
sudo systemctl stop lightdm myp-druckerverwaltung kiosk-chromium
sudo systemctl disable lightdm myp-druckerverwaltung kiosk-chromium

# Benutzer entfernen
sudo userdel -r kiosk
sudo userdel -r myp

# Service-Dateien entfernen
sudo rm /etc/systemd/system/myp-*.service
sudo rm /etc/systemd/system/kiosk-*.service

# Systemd neu laden
sudo systemctl daemon-reload
```

## Support

### Log-Sammlung für Support
```bash
# Alle relevanten Logs sammeln
sudo journalctl -u myp-druckerverwaltung > myp-logs.txt
sudo journalctl -u lightdm >> myp-logs.txt
cat /var/log/kiosk-session.log >> myp-logs.txt
systemctl status myp-druckerverwaltung >> myp-logs.txt
```

### Häufige Probleme
1. **"Anwendung nicht erreichbar"** - Backend-Service prüfen
2. **"Schwarzer Bildschirm"** - X-Server und LightDM prüfen  
3. **"Browser startet nicht"** - Chromium-Installation prüfen
4. **"Kein automatischer Login"** - LightDM-Konfiguration prüfen

## Erweiterte Konfiguration

### Mehrere Displays
Für Multi-Monitor-Setups bearbeiten Sie die Openbox-Konfiguration in `/home/kiosk/.config/openbox/rc.xml`.

### Touch-Screen Support
Das System unterstützt automatisch Touch-Screens. Für spezielle Kalibrierung installieren Sie `xinput-calibrator`.

### Audio-Ausgabe
Audio wird automatisch über HDMI ausgegeben. Für analoge Ausgabe:
```bash
sudo raspi-config
# Advanced Options > Audio > Force 3.5mm
```

---

**Hinweis:** Diese Anleitung basiert auf bewährten Kiosk-Implementierungen und ist speziell für Raspberry Pi optimiert. Bei Problemen prüfen Sie zuerst die Log-Dateien und Service-Status. 