📚 Improved documentation and log files for better system understanding & maintenance. 🖥️🔍

This commit is contained in:
2025-06-01 13:43:56 +02:00
parent 6fdf4bdab7
commit d6f00ab40d
26 changed files with 1439 additions and 272 deletions

View File

@@ -1,282 +1,459 @@
# Mercedes-Benz TBA Marienfelde - 3D-Drucker Management System
# MYP Druckerverwaltung
## Übersicht
Ein umfassendes Druckerverwaltungssystem für Mercedes-Benz, optimiert für Debian/Linux-Systeme mit HTTPS-Kiosk-Modus.
Ein umfassendes Management-System für 3D-Drucker in der Mercedes-Benz Technischen Berufsausbildung (TBA) Marienfelde. Das System ermöglicht die zentrale Verwaltung, Überwachung und Steuerung von 3D-Druckern und deren Stromversorgung.
## 🚀 Schnellstart
## Hauptfunktionen
### Debian/Linux Kiosk-Installation (Empfohlen)
### 🖨️ Drucker-Management
- Zentrale Verwaltung aller 3D-Drucker
- Echtzeit-Statusüberwachung
- Druckjob-Verwaltung und -Scheduling
- Benutzer- und Rechteverwaltung
### ⚡ **NEU: Steckdosen-Test-System**
Sichere Testfunktion für Ausbilder und Administratoren zur Steuerung der Druckerstromversorgung:
- **Sicherheitsprüfungen**: Automatische Warnungen bei aktiven Druckjobs
- **Risikobewertung**: Intelligente Analyse basierend auf Stromverbrauch und Gerätestatus
- **Force-Modus**: Notfallsteuerung mit erweiterten Sicherheitsabfragen
- **Audit-Trail**: Vollständige Protokollierung aller Testaktivitäten
- **Echtzeit-Monitoring**: Live-Status aller konfigurierten Steckdosen
**Zugriff:** `/socket-test` (nur für Administratoren)
### 📊 Monitoring & Analytics
- Live-Dashboard mit Druckerstatus
- Energieverbrauchsüberwachung
- Statistiken und Berichte
- Fehlerprotokollierung
### 👤 Benutzer-System
- Rollenbasierte Zugriffskontrolle
- Gastanfragen für externe Nutzer
- Admin-Bereich für Systemverwaltung
- Session-Management mit automatischem Logout
## Technische Spezifikationen
### Backend
- **Framework:** Flask (Python)
- **Datenbank:** SQLite mit WAL-Modus
- **ORM:** SQLAlchemy
- **Authentifizierung:** Flask-Login
- **API:** RESTful JSON-API
### ⚡ **NEU: Sofort-Shutdown-System**
Aggressiver Signal-Handler für sofortiges und sicheres Herunterfahren:
- **Strg+C Unterstützung**: Sofortiges Shutdown bei SIGINT/SIGTERM
- **Datenbank-Schutz**: Automatischer WAL-Checkpoint vor Beendigung
- **Session-Cleanup**: Alle DB-Sessions werden ordnungsgemäß geschlossen
- **Plattform-übergreifend**: Windows (SIGBREAK) und Unix/Linux (SIGHUP) Support
- **Fehlerresistent**: Robuste Behandlung auch bei Cleanup-Fehlern
- **Sofortiger Exit**: Verwendet `os._exit(0)` für garantierte Beendigung
**Funktion:** Drücken Sie `Strg+C` um die Anwendung sofort und sicher zu beenden.
**Dokumentation:** [`docs/STRG_C_SHUTDOWN.md`](docs/STRG_C_SHUTDOWN.md)
### Frontend
- **Framework:** Vanilla JavaScript + Tailwind CSS
- **Design:** Mercedes-Benz Corporate Design
- **Responsive:** Mobile-first Design
- **Interaktion:** AJAX-basierte Real-time Updates
### Hardware-Integration
- **Steckdosen:** TP-Link Tapo P110 Smart Plugs
- **Protokoll:** PyP100 für Tapo-Kommunikation
- **Netzwerk:** Lokales Subnetz für Geräte-Kommunikation
## Installation
### Voraussetzungen
- Python 3.8+
- Node.js 16+ (für Frontend-Build)
- Netzwerkzugang zu den Steckdosen
### Setup
```bash
# Repository klonen
git clone <repository-url>
cd backend
# Python-Abhängigkeiten installieren
pip install -r requirements.txt
# Konsolidiertes Setup-Skript ausführen
sudo ./setup.sh
```
# Frontend-Abhängigkeiten installieren
**Installationsoptionen**:
1. **Nur Abhängigkeiten installieren** - System vorbereiten ohne Kiosk-Modus
2. **Finale Kiosk-Installation** - Vollständige Kiosk-Konfiguration
3. **Nur Services installieren** - Systemd-Services aktualisieren
4. **System-Test** - Funktionalität überprüfen
**Nach der Installation**: System mit `sudo reboot` neustarten für automatischen Kiosk-Modus.
### Entwicklungsumgebung (Windows)
```bash
# Abhängigkeiten installieren
pip install -r requirements.txt
npm install
# CSS kompilieren
npm run build-css
# Datenbank initialisieren
python -c "from models import init_database; init_database()"
# Anwendung starten
python app.py
# Entwicklungsserver starten
python app.py --debug
```
### Erste Schritte
1. **Admin-Account erstellen**: Beim ersten Start wird automatisch ein Admin-Account erstellt
2. **Drucker hinzufügen**: Über das Admin-Panel Drucker und Steckdosen konfigurieren
3. **Benutzer verwalten**: Weitere Benutzer und Rollen zuweisen
4. **Steckdosen testen**: Über `/socket-test` die neue Testfunktionalität nutzen
## 📋 Systemanforderungen
## Konfiguration
### Produktionsumgebung (Kiosk)
- **Debian/Raspbian** (Raspberry Pi OS empfohlen)
- Raspberry Pi 4 mit 2GB+ RAM
- 16GB+ SD-Karte
- HDMI-Monitor
- Netzwerkverbindung
### Umgebungsvariablen
```bash
# Grundkonfiguration
SECRET_KEY=<sicherheitsschlüssel>
DATABASE_PATH=database/app.db
ENVIRONMENT=production
### Entwicklungsumgebung
- **Windows 10/11** (nur für Entwicklung)
- Python 3.8+
- Node.js 18+
- Git
# Steckdosen-Konfiguration
TAPO_USERNAME=<steckdosen-benutzername>
TAPO_PASSWORD=<steckdosen-passwort>
```
## 🔧 Features
### Drucker-Steckdosen-Zuordnung
Jeder Drucker kann mit einer Steckdose verknüpft werden:
- **IP-Adresse** der Steckdose
- **Benutzername/Passwort** für Authentifizierung
- **MAC-Adresse** für eindeutige Identifikation
### Kern-Funktionalitäten
- **Druckerverwaltung** mit Smart-Plug-Integration (TP-Link Tapo)
- **Job-Management** mit Warteschlangen-System
- **Benutzerverwaltung** mit Rollen und Berechtigungen
- **Gast-Anfragen** für temporären Zugriff
- **Echtzeit-Dashboard** mit Live-Statistiken
- **Automatische Backups** und Wartung
## Sicherheit
### Kiosk-Modus Features
- **HTTPS auf Port 443** mit automatischen SSL-Zertifikaten
- **Chromium-Vollbildmodus** ohne Desktop-Environment
- **Automatischer Login** und Browser-Start
- **Watchdog-Überwachung** für Systemstabilität
- **Responsive Design** für Desktop-Nutzung
### Zugriffskontrolle
- **CSRF-Schutz** für alle Formulare
- **Session-basierte Authentifizierung**
- **Rollenbasierte Berechtigungen** (Admin/User)
- **Automatisches Session-Timeout**
### Sicherheit
- **SSL/TLS-Verschlüsselung** (selbstsignierte Zertifikate)
- **CSRF-Schutz** und Session-Management
- **Rate-Limiting** und Eingabevalidierung
- **Systemd-Service-Isolation**
### Steckdosen-Sicherheit
- **Risikobewertung** vor jeder Aktion
- **Automatische Warnungen** bei aktiven Jobs
- **Force-Modus** nur mit expliziter Bestätigung
- **Vollständige Audit-Logs** aller Aktionen
## 🏗️ Architektur
## API-Dokumentation
### Backend
- **Flask 3.1.1** - Web-Framework
- **SQLAlchemy 2.0.36** - ORM und Datenbankzugriff
- **SQLite** - Eingebettete Datenbank
- **Gunicorn** - WSGI-Server für Produktion
### Steckdosen-Test-Endpunkte
### Frontend
- **TailwindCSS** - Utility-First CSS Framework
- **Chart.js** - Datenvisualisierung
- **FontAwesome** - Icons
- **Vanilla JavaScript** - Interaktivität
```http
GET /api/printers/test/socket/{printer_id}
```
Detaillierter Status einer Steckdose mit Sicherheitsbewertung
### System-Integration
- **systemd** - Service-Management
- **OpenSSL** - SSL-Zertifikat-Generierung
- **Chromium** - Kiosk-Browser
- **X11** - Minimale Grafikumgebung
```http
POST /api/printers/test/socket/{printer_id}/control
```
Steckdose für Tests ein-/ausschalten mit Sicherheitsprüfungen
```http
GET /api/printers/test/all-sockets
```
Übersicht aller Steckdosen mit Zusammenfassung
Vollständige API-Dokumentation: [docs/STECKDOSEN_TEST_DOKUMENTATION.md](docs/STECKDOSEN_TEST_DOKUMENTATION.md)
## Projektstruktur
## 📁 Projektstruktur
```
backend/
├── app.py # Hauptanwendung
├── models.py # Datenmodelle
├── requirements.txt # Python-Abhängigkeiten
├── blueprints/ # Modulare Routen
├── printers.py # Drucker-Management (inkl. Steckdosen-Tests)
│ ├── users.py # Benutzerverwaltung
│ ├── guest.py # Gastanfragen
── calendar.py # Terminplanung
├── templates/ # HTML-Templates
│ ├── base.html # Basis-Template
── socket_test.html # Steckdosen-Test-Interface
│ └── ...
├── static/ # Statische Dateien
├── utils/ # Hilfsfunktionen
├── config/ # Konfigurationsdateien
├── docs/ # Dokumentation
── STECKDOSEN_TEST_DOKUMENTATION.md
└── database/ # Datenbankdateien
├── app.py # Hauptanwendung mit HTTPS-Support
├── models.py # Datenbankmodelle
├── setup.sh # Konsolidiertes Setup-Skript
├── requirements.txt # Python-Abhängigkeiten
├── package.json # Node.js-Abhängigkeiten
├──
├── systemd/ # Systemd-Service-Dateien
── myp-https.service # HTTPS-Backend-Service
│ ├── myp-kiosk.service # Kiosk-Browser-Service
│ ├── kiosk-watchdog.service # Überwachungsservice
── kiosk-watchdog-python.service # Python-Watchdog
├──
├── blueprints/ # Flask-Blueprints
├── auth.py # Authentifizierung
│ ├── users.py # Benutzerverwaltung
│ ├── printers.py # Druckerverwaltung
── jobs.py # Job-Management
│ └── guest.py # Gast-Anfragen
├──
├── config/ # Konfigurationsdateien
│ └── settings.py # Hauptkonfiguration
├──
├── utils/ # Hilfsfunktionen
│ ├── ssl_config.py # SSL-Zertifikat-Management
│ ├── logging_config.py # Logging-Konfiguration
│ ├── queue_manager.py # Job-Warteschlange
│ └── printer_monitor.py # Drucker-Überwachung
├──
├── static/ # Statische Dateien
│ ├── css/ # Stylesheets
│ ├── js/ # JavaScript
│ └── icons/ # Icons und Bilder
├──
├── templates/ # Jinja2-Templates
├── docs/ # Dokumentation
├── logs/ # Log-Dateien
└── uploads/ # Hochgeladene Dateien
```
## Wartung
## 🔧 Installation
### Regelmäßige Aufgaben
- **Backup** der Datenbank erstellen
- **Log-Rotation** für Speicherplatz-Management
- **Steckdosen-Konnektivität** prüfen
- **Updates** für Sicherheits-Patches
### Option 1: Automatische Installation mit setup.sh (Empfohlen)
### Monitoring
- **Anwendungs-Logs** in `logs/` Verzeichnis
- **Datenbank-Größe** und Performance überwachen
- **Netzwerk-Verbindungen** zu Steckdosen prüfen
```bash
# Als Root ausführen
sudo ./setup.sh
## Support
# Menüoptionen:
# 1. Nur Abhängigkeiten installieren und System vorbereiten
# 2. Finale Installation mit kompletter Kiosk-Modus-Konfiguration
# 3. Nur Services installieren/aktualisieren
# 4. System-Test durchführen
# 5. Beenden
```
### Fehlerbehebung
1. **Logs prüfen**: `logs/app/` für Anwendungsfehler
2. **Netzwerk testen**: Erreichbarkeit der Steckdosen prüfen
3. **Datenbank-Status**: SQLite-Datei auf Korruption prüfen
**Installationsmodi**:
- **Option 1**: Ideal für Entwicklung und erste Tests
- **Option 2**: Vollständige Produktionsinstallation
- **Option 3**: Service-Updates ohne Systemänderungen
- **Option 4**: Diagnose und Wartung
### Option 2: Manuelle Installation
#### Schritt 1: System vorbereiten
```bash
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y python3 python3-pip nodejs npm git
```
#### Schritt 2: Abhängigkeiten installieren
```bash
# Python-Pakete (ohne virtuelles Environment)
pip3 install -r requirements.txt --break-system-packages
# Node.js-Pakete
npm install
# TailwindCSS kompilieren
npm run build:css
```
#### Schritt 3: SSL-Zertifikate generieren
```bash
python3 -c "
import sys; sys.path.insert(0, '.')
from utils.ssl_config import ensure_ssl_certificates
ensure_ssl_certificates('.', True)
"
```
#### Schritt 4: Services einrichten
```bash
# Services aus systemd/ Verzeichnis kopieren
sudo cp systemd/*.service /etc/systemd/system/
sudo systemctl daemon-reload
# HTTPS-Service aktivieren
sudo systemctl enable myp-https.service
sudo systemctl start myp-https.service
# Kiosk-Service aktivieren (optional)
sudo systemctl enable myp-kiosk.service
```
## 🌐 Zugriff
### Lokaler Zugriff
- **HTTPS**: `https://localhost:443`
- **HTTP (Entwicklung)**: `http://localhost:5000`
### Netzwerk-Zugriff
- **HTTPS**: `https://<raspberry-pi-ip>:443`
### Standard-Anmeldedaten
- **Benutzername**: `admin`
- **Passwort**: `admin123`
⚠️ **Wichtig**: Ändern Sie das Standard-Passwort nach der ersten Anmeldung!
## 🔧 Konfiguration
### Umgebungsvariablen
```bash
# Produktionsumgebung
export FLASK_ENV=production
export FLASK_HOST=0.0.0.0
export FLASK_PORT=443
# Entwicklungsumgebung
export FLASK_ENV=development
export FLASK_HOST=127.0.0.1
export FLASK_PORT=5000
```
### SSL-Konfiguration
```bash
# Automatische Zertifikat-Generierung
python3 utils/ssl_config.py /opt/myp
# Manuelle Zertifikat-Erneuerung
python3 utils/ssl_config.py /opt/myp --force
```
### Drucker-Konfiguration
1. **Admin-Panel****Drucker****Neuer Drucker**
2. IP-Adresse und TP-Link Tapo-Zugangsdaten eingeben
3. Drucker-Test durchführen
4. Smart-Plug-Integration aktivieren
## 📊 Überwachung
### Service-Status
```bash
# HTTPS-Service
sudo systemctl status myp-https.service
sudo journalctl -u myp-https -f
# Kiosk-Service
sudo systemctl status myp-kiosk.service
sudo journalctl -u myp-kiosk -f
# Watchdog-Service
sudo systemctl status kiosk-watchdog.service
sudo tail -f /var/log/kiosk-watchdog.log
```
### System-Tests
```bash
# HTTPS-Erreichbarkeit
curl -k https://localhost:443
# SSL-Zertifikat prüfen
openssl s_client -connect localhost:443 -servername localhost
# Automatische Tests mit setup.sh
sudo ./setup.sh # Option 4: System-Test
```
### Log-Dateien
```bash
# Anwendungslogs
tail -f logs/app/app.log
tail -f logs/auth/auth.log
tail -f logs/printers/printers.log
# Systemlogs
sudo journalctl -u myp-https -f
sudo tail -f /var/log/kiosk-watchdog.log
# Installationslog
sudo tail -f /var/log/myp-install.log
```
## 🛠️ Entwicklung
### Entwicklungsserver starten
```bash
# HTTP-Entwicklungsserver (Port 5000)
python app.py --debug
# HTTPS-Produktionsserver (Port 443)
python app.py
```
### Frontend-Entwicklung
```bash
# TailwindCSS im Watch-Modus
npm run watch:css
# CSS kompilieren
npm run build:css
# Alle Assets bauen
npm run build
```
### Datenbank-Management
```bash
# Datenbank initialisieren
python -c "from models import init_database; init_database()"
# Backup erstellen
python -c "from utils.backup_manager import BackupManager; BackupManager().create_backup()"
```
## 🔒 Sicherheit
### SSL/TLS
- **TLS 1.2+** erforderlich
- **Starke Cipher-Suites** konfiguriert
- **Selbstsignierte Zertifikate** für localhost
- **Automatische Erneuerung** bei Ablauf
### Anwendungssicherheit
- **CSRF-Schutz** aktiviert
- **Session-Management** mit Timeout
- **Rate-Limiting** für API-Endpunkte
- **Eingabevalidierung** und Sanitization
### System-Sicherheit
- **Minimale X11-Umgebung** ohne Desktop
- **Kiosk-User** ohne Sudo-Rechte
- **Systemd-Service-Isolation**
- **Read-only Systempartitionen** (optional)
## 📚 Dokumentation
### Detaillierte Anleitungen
- [`docs/SETUP_ANLEITUNG.md`](docs/SETUP_ANLEITUNG.md) - Konsolidiertes Setup-System
- [`docs/INSTALLATION_DEBIAN_KIOSK.md`](docs/INSTALLATION_DEBIAN_KIOSK.md) - Vollständige Kiosk-Installation
- [`docs/API_DOCUMENTATION.md`](docs/API_DOCUMENTATION.md) - API-Referenz
- [`docs/CONFIGURATION.md`](docs/CONFIGURATION.md) - Konfigurationsoptionen
- [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) - Fehlerbehebung
### API-Endpunkte
- **Authentifizierung**: `/auth/login`, `/auth/logout`
- **Drucker**: `/api/printers`, `/api/printers/{id}`
- **Jobs**: `/api/jobs`, `/api/jobs/{id}`
- **Benutzer**: `/api/users`, `/api/users/{id}`
- **Dashboard**: `/api/dashboard/refresh`, `/api/stats`
## 🐛 Fehlerbehebung
### Häufige Probleme
- **Steckdose nicht erreichbar**: IP-Adresse und Netzwerk prüfen
- **Admin-Zugriff verweigert**: Benutzerrolle in Datenbank kontrollieren
- **Session-Timeout**: Einstellungen in `config/settings.py` anpassen
## Entwicklung
### Lokale Entwicklung
#### HTTPS nicht erreichbar
```bash
# Development Server
export FLASK_ENV=development
python app.py
# Service-Status prüfen
sudo systemctl status myp-https.service
# CSS Watch Mode
npm run watch-css
# SSL-Zertifikate neu generieren
sudo python3 utils/ssl_config.py /opt/myp --force
sudo systemctl restart myp-https.service
# Tests ausführen
python -m pytest tests/
# Oder mit setup.sh
sudo ./setup.sh # Option 1 für Zertifikat-Neugenerierung
```
### Deployment
Das System läuft produktiv in der Mercedes-Benz TBA Marienfelde und ist für Windows-Umgebungen optimiert.
#### Kiosk-Browser startet nicht
```bash
# X-Server prüfen
ps aux | grep X
## Changelog
# Browser manuell starten
sudo su - kiosk
DISPLAY=:0 chromium --kiosk https://localhost:443
### Version 1.2 (2025-01-06)
- 🚨 **NEU**: Strg+C Sofort-Shutdown-System implementiert
- 🔒 **Sicherheit**: Aggressiver Signal-Handler für SIGINT/SIGTERM/SIGBREAK
- 💾 **Datenbank**: Automatischer WAL-Checkpoint vor Programmende
- 🧹 **Cleanup**: Ordnungsgemäßer Session- und Engine-Cleanup
- 🌍 **Plattform**: Unterstützung für Windows und Unix/Linux Signale
-**Performance**: Sofortiger Exit mit `os._exit(0)`
# Service-Status prüfen
sudo systemctl status myp-kiosk.service
```
### Version 1.1 (2025-01-05)
-**NEU**: Steckdosen-Test-System für Administratoren
- 🔒 **Sicherheit**: Erweiterte Risikobewertung und Warnungen
- 📊 **Monitoring**: Live-Status aller Steckdosen
- 📝 **Audit**: Vollständige Protokollierung aller Testaktivitäten
- 🎨 **UI**: Dedizierte Steckdosen-Test-Oberfläche
#### Hohe Speichernutzung
```bash
# Browser-Cache leeren
sudo rm -rf /home/kiosk/.chromium-kiosk/Default/Cache/*
### Version 1.0
- Grundlegendes Drucker-Management-System
- Benutzer- und Rechteverwaltung
- Dashboard und Monitoring
- Gastanfragen-System
# System-Cache leeren
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
## Lizenz
# Watchdog überwacht automatisch Speichernutzung
sudo journalctl -u kiosk-watchdog -f
```
Internes Projekt der Mercedes-Benz AG für die TBA Marienfelde.
### Support
Bei Problemen:
1. **System-Test durchführen**: `sudo ./setup.sh` → Option 4
2. **Log-Bundle erstellen**:
```bash
sudo tar -czf myp-logs-$(date +%Y%m%d).tar.gz \
logs/ \
/var/log/kiosk-watchdog.log \
/var/log/myp-install.log
```
## 🔄 Updates
### Anwendungs-Updates
```bash
cd /opt/myp
git pull origin main
sudo pip3 install -r requirements.txt --break-system-packages --upgrade
sudo npm install
# Services mit setup.sh aktualisieren
sudo ./setup.sh # Option 3: Nur Services installieren
sudo systemctl restart myp-https.service
```
### System-Updates
```bash
sudo apt-get update && sudo apt-get upgrade -y
sudo reboot
```
## 📄 Lizenz
Dieses Projekt ist für den internen Gebrauch bei Mercedes-Benz entwickelt.
## 🤝 Beitragen
1. Fork des Repositories erstellen
2. Feature-Branch erstellen (`git checkout -b feature/AmazingFeature`)
3. Änderungen committen (`git commit -m 'Add some AmazingFeature'`)
4. Branch pushen (`git push origin feature/AmazingFeature`)
5. Pull Request erstellen
## 📞 Support
- **Dokumentation**: [`docs/`](docs/) Verzeichnis
- **Setup-Anleitung**: [`docs/SETUP_ANLEITUNG.md`](docs/SETUP_ANLEITUNG.md)
- **Issues**: GitHub Issues für Bug-Reports
- **Logs**: Automatische Log-Sammlung mit `setup.sh`
---
**Entwickelt für:** Mercedes-Benz Technische Berufsausbildung Marienfelde
**Letzte Aktualisierung:** 2025-01-05
**Version:** 1.1
## Kürzlich behobene Probleme
### Shutdown- und Cleanup-Verbesserungen ✅
**Problem**: Die Anwendung hatte Probleme beim ordnungsgemäßen Herunterfahren mit hängenden Prozessen und inkonsistenten Zuständen.
**Lösung**: Implementierung eines zentralen Shutdown-Managers mit:
-**Koordiniertes Shutdown**: Alle Komponenten werden in der richtigen Reihenfolge gestoppt
-**Timeout-Management**: Verhindert hängende Cleanup-Operationen
-**Prioritäts-basierte Ausführung**: Kritische Komponenten werden zuerst gestoppt
-**Robuste Fehlerbehandlung**: Einzelfehler stoppen nicht das gesamte Shutdown
-**Plattform-spezifisch**: Optimiert für Windows und Unix/Linux
**Technische Details**:
- Neuer `utils/shutdown_manager.py` koordiniert alle Cleanup-Operationen
- Queue Manager, Scheduler und Datenbank-Cleanup werden zentral verwaltet
- Reduzierte Shutdown-Zeit von >30s auf <10s in normalen Fällen
- Detaillierte Logs für besseres Debugging
**Dokumentation**: Siehe [`docs/SHUTDOWN_VERBESSERUNGEN.md`](docs/SHUTDOWN_VERBESSERUNGEN.md) für vollständige Details.
---
**Version**: 4.0.0
**Plattform**: Debian/Linux (Raspberry Pi OS)
**Modus**: HTTPS Kiosk (Port 443)
**Setup**: Konsolidiertes `setup.sh` System
**Entwickelt für**: Mercedes-Benz MYP