📚 Renamed 'REQUIREMENTS.md' to 'docs/REQUIREMENTS.md' in backend/app
This commit is contained in:
@@ -1 +1,322 @@
|
||||
|
||||
# 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.
|
175
backend/app/docs/REQUIREMENTS.md
Normal file
175
backend/app/docs/REQUIREMENTS.md
Normal file
@@ -0,0 +1,175 @@
|
||||
# MYP Platform - Requirements Verwaltung
|
||||
|
||||
## Übersicht
|
||||
|
||||
Die MYP Platform verwendet verschiedene Requirements-Dateien für unterschiedliche Umgebungen:
|
||||
|
||||
- `requirements.txt` - **Basis-Abhängigkeiten basierend auf tatsächlich verwendeten Imports in app.py**
|
||||
- `requirements-dev.txt` - Entwicklungsabhängigkeiten (Testing, Debugging, etc.)
|
||||
- `requirements-prod.txt` - Produktionsabhängigkeiten (optimiert für Performance)
|
||||
|
||||
## Installation
|
||||
|
||||
### Basis-Installation (Empfohlen)
|
||||
|
||||
```bash
|
||||
# Nur die wirklich benötigten Abhängigkeiten installieren
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### Entwicklungsumgebung
|
||||
|
||||
```bash
|
||||
# Alle Entwicklungsabhängigkeiten installieren
|
||||
pip install -r requirements-dev.txt
|
||||
```
|
||||
|
||||
### Produktionsumgebung
|
||||
|
||||
```bash
|
||||
# Produktionsabhängigkeiten installieren
|
||||
pip install -r requirements-prod.txt
|
||||
```
|
||||
|
||||
## Aktualisierte Requirements (Januar 2025)
|
||||
|
||||
### Basis-Requirements (requirements.txt)
|
||||
**Basierend auf tatsächlich verwendeten Imports in app.py:**
|
||||
|
||||
#### Core Flask Framework
|
||||
- **Flask 3.1.1** - Neueste stabile Version
|
||||
- **Flask-Login 0.6.3** - Benutzer-Authentifizierung
|
||||
- **Flask-WTF 1.2.1** - CSRF-Schutz und Formulare
|
||||
|
||||
#### Datenbank
|
||||
- **SQLAlchemy 2.0.36** - ORM für Datenbankoperationen
|
||||
|
||||
#### Sicherheit
|
||||
- **Werkzeug 3.1.3** - WSGI-Utilities und Passwort-Hashing
|
||||
- **bcrypt 4.2.1** - Passwort-Hashing
|
||||
- **cryptography 44.0.0** - SSL-Zertifikate
|
||||
|
||||
#### Smart Plug Steuerung
|
||||
- **PyP100 0.1.2** - TP-Link Tapo Smart Plugs (neueste verfügbare Version)
|
||||
|
||||
#### System & Monitoring
|
||||
- **psutil 6.1.1** - System-Monitoring
|
||||
- **redis 5.2.1** - Rate Limiting und Caching
|
||||
- **requests 2.32.3** - HTTP-Anfragen
|
||||
|
||||
#### Template Engine
|
||||
- **Jinja2 3.1.5** - Template-Rendering
|
||||
- **MarkupSafe 3.0.2** - Sichere String-Verarbeitung
|
||||
- **itsdangerous 2.2.0** - Sichere Daten-Serialisierung
|
||||
|
||||
#### Zusätzliche Core-Abhängigkeiten
|
||||
- **click 8.1.8** - CLI-Kommandos
|
||||
- **blinker 1.9.0** - Flask-Signaling
|
||||
|
||||
#### Windows-spezifisch
|
||||
- **pywin32 308** - Windows-APIs (nur auf Windows)
|
||||
|
||||
## Kompatibilität
|
||||
|
||||
### Python-Versionen
|
||||
- **Mindestversion**: Python 3.9
|
||||
- **Empfohlen**: Python 3.11 oder 3.12
|
||||
- **Getestet mit**: Python 3.13.3
|
||||
|
||||
### Betriebssysteme
|
||||
- **Windows**: Vollständig unterstützt (mit pywin32)
|
||||
- **Linux**: Vollständig unterstützt
|
||||
- **macOS**: Vollständig unterstützt
|
||||
|
||||
## Wichtige Änderungen
|
||||
|
||||
### Was wurde entfernt
|
||||
- **Nicht verwendete Pakete**: pandas, numpy, orjson, ujson, structlog
|
||||
- **Entwicklungstools**: black, flake8, mypy (verschoben nach requirements-dev.txt)
|
||||
- **Optionale Pakete**: watchdog, python-dotenv, sphinx
|
||||
|
||||
### Was wurde beibehalten
|
||||
- **Nur tatsächlich verwendete Imports** aus app.py und Core-Modulen
|
||||
- **Kritische Sicherheitspakete** für Produktionsbetrieb
|
||||
- **Windows-Kompatibilität** für die Zielumgebung
|
||||
|
||||
## Installation mit Extras
|
||||
|
||||
### Entwicklungstools installieren
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
pip install pytest==8.3.4 pytest-cov==6.0.0
|
||||
```
|
||||
|
||||
### Produktionsserver installieren
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
pip install gunicorn==23.0.0
|
||||
```
|
||||
|
||||
## Wartung
|
||||
|
||||
### Requirements prüfen
|
||||
```bash
|
||||
# Installierte Pakete anzeigen
|
||||
pip list
|
||||
|
||||
# Veraltete Pakete prüfen
|
||||
pip list --outdated
|
||||
|
||||
# Abhängigkeitsbaum anzeigen
|
||||
pip show --verbose Flask
|
||||
```
|
||||
|
||||
### Sicherheitsupdates
|
||||
```bash
|
||||
# Sicherheitslücken prüfen (falls safety installiert)
|
||||
pip install safety
|
||||
safety check
|
||||
|
||||
# Alle Pakete aktualisieren
|
||||
pip install --upgrade -r requirements.txt
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Häufige Probleme
|
||||
|
||||
1. **PyP100 Installation**
|
||||
- Version 0.1.2 ist die neueste verfügbare Version
|
||||
- Bei Problemen: `pip install --no-deps PyP100==0.1.2`
|
||||
|
||||
2. **Dependency-Konflikte**
|
||||
- flask-caching erfordert Flask<3, aber Flask 3.1.1 ist installiert
|
||||
- Lösung: `pip install flask-caching --upgrade` oder entfernen
|
||||
|
||||
3. **Windows pywin32**
|
||||
- Wird automatisch nur auf Windows installiert
|
||||
- Bei Problemen: `pip install --force-reinstall pywin32`
|
||||
|
||||
4. **PATH-Warnungen**
|
||||
- Scripts werden in User-Verzeichnis installiert
|
||||
- Lösung: `--no-warn-script-location` verwenden
|
||||
|
||||
### Performance-Tipps
|
||||
|
||||
1. **Schnellere Installation**
|
||||
```bash
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements.txt --no-deps
|
||||
```
|
||||
|
||||
2. **Cache nutzen**
|
||||
```bash
|
||||
pip install --cache-dir ~/.pip/cache -r requirements.txt
|
||||
```
|
||||
|
||||
## Lizenz-Informationen
|
||||
|
||||
Alle verwendeten Pakete sind mit der MIT/BSD/Apache-Lizenz kompatibel.
|
||||
|
||||
---
|
||||
|
||||
**Letzte Aktualisierung**: Januar 2025
|
||||
**Basis-Requirements**: Nur tatsächlich verwendete Imports
|
||||
**Nächste Überprüfung**: April 2025
|
Reference in New Issue
Block a user