🎉 Erweiterte Installation und Konfiguration für den Raspberry Pi Kiosk-Modus: Verbesserte Skripte für eine vollautomatische Installation, einschließlich umfassender Systemprüfungen, Logging-Mechanismen und Sicherheitskonfigurationen. 🚀🔒

This commit is contained in:
2025-05-31 04:00:28 +02:00
parent f44639e497
commit 0588014b9b
5 changed files with 2224 additions and 742 deletions

View File

@@ -1 +1,177 @@
# MYP Druckerverwaltung - Installationskorrekturen
## Problembehebung der Raspberry Pi Installation
### Datum: 31.05.2025
### Status: Behoben ✅
## Identifizierte Probleme
### 1. Chromium-Browser Paketname
- **Problem**: `chromium-browser` Paket nicht verfügbar
- **Ursache**: Paketname variiert zwischen Distributionen
- **Lösung**: Dynamische Erkennung verschiedener Chromium-Paketnamen
### 2. useradd Command not found
- **Problem**: `useradd` Befehl nicht gefunden
- **Ursache**: PATH-Variable nicht korrekt gesetzt
- **Lösung**: Explizites Setzen der PATH-Variable für System-Tools
### 3. Fehlende Fehlerbehandlung
- **Problem**: Installation bricht bei ersten Fehlern ab
- **Ursache**: Unzureichende Fehlerbehandlung
- **Lösung**: Robuste Fallback-Mechanismen implementiert
## Implementierte Verbesserungen
### 📦 Paket-Installation
```bash
# Vor der Korrektur
apt-get install -y chromium-browser
# Nach der Korrektur
if apt-get install -y chromium 2>/dev/null; then
log "✅ Chromium erfolgreich installiert"
elif apt-get install -y chromium-browser 2>/dev/null; then
log "✅ Chromium-Browser erfolgreich installiert"
else
warning "⚠️ Chromium konnte nicht automatisch installiert werden"
fi
```
### 👤 Benutzer-Erstellung
```bash
# Vor der Korrektur
useradd -m -s /bin/bash "$APP_USER"
# Nach der Korrektur
if ! useradd -m -s /bin/bash "$APP_USER" 2>/dev/null; then
warning "Fehler bei useradd - versuche adduser..."
if ! adduser --disabled-password --gecos "" "$APP_USER" 2>/dev/null; then
error "Konnte Benutzer '$APP_USER' nicht erstellen. System-Tools prüfen."
fi
fi
```
### 🔧 Chromium-Binary Erkennung
```bash
# Dynamische Erkennung des Chromium-Pfads
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"
log "Chromium gefunden: $CHROMIUM_BIN"
break
fi
done
```
### 🔍 System-Tools Validierung
```bash
# Prüfe kritische Befehle vor Verwendung
for cmd in useradd usermod systemctl apt-get; do
if ! command -v "$cmd" &> /dev/null; then
error "Erforderlicher Befehl '$cmd' nicht gefunden. PATH: $PATH"
fi
done
```
## Neue Wartungstools
### 🔧 myp-repair
Automatisches Reparatur-Tool für häufige Probleme:
- Prüft und repariert Services
- Erstellt fehlende Benutzer nach
- Installiert fehlende Pakete
- Korrigiert Berechtigungen
```bash
sudo myp-repair
```
### 🔍 myp-maintenance diagnose
Umfassendes Diagnose-Tool:
- System-Informationen
- Service-Status
- Port-Belegung
- Benutzer-Konfiguration
- Letzte Logs
```bash
myp-maintenance diagnose
```
## Getestete Umgebungen
- ✅ Debian 12 (Bookworm)
- ✅ Ubuntu 22.04 LTS
- ✅ Raspberry Pi OS (64-bit)
- ✅ Systeme mit/ohne vorinstalliertem Chromium
## Backup und Wiederherstellung
### Automatische Backups
- Täglich um 2:00 Uhr
- 30 Tage Aufbewahrung
- Komprimierte Datenbank und Konfiguration
### Notfall-Wiederherstellung
```bash
# Im Schnellstart-Skript verfügbar
sudo myp-notfall-reset
```
## Sicherheitsverbesserungen
1. **Berechtigungen**: Strikte Benutzer-/Gruppentrennung
2. **Firewall**: Automatische UFW-Konfiguration
3. **Services**: Isolation und Überwachung
4. **Backups**: Automatische Datensicherung
## Installation ausführen
```bash
# Vollständige Installation
sudo ./schnellstart_raspberry_pi.sh
# Bei Problemen: Reparatur
sudo myp-repair
# Status prüfen
myp-maintenance status
myp-maintenance diagnose
```
## Troubleshooting
### Problem: Services starten nicht
```bash
sudo myp-repair
sudo myp-maintenance restart
```
### Problem: Kiosk-Modus funktioniert nicht
```bash
# Chromium prüfen
myp-maintenance diagnose
# Kiosk neu starten
myp-maintenance kiosk-restart
```
### Problem: Benutzer fehlen
```bash
sudo myp-repair
```
## Kontakt
Bei anhaltenden Problemen:
1. Diagnose ausführen: `myp-maintenance diagnose`
2. Logs sammeln: `myp-maintenance logs`
3. Reparatur versuchen: `sudo myp-repair`
---
**Dokumentation erstellt**: 31.05.2025
**Letzte Aktualisierung**: 31.05.2025
**Version**: 2.0.0

View File

@@ -0,0 +1,456 @@
# 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)