It appears that the repository has undergone several changes and renamings:

This commit is contained in:
2025-06-10 13:23:37 +02:00
parent a4a293a744
commit 7e4bfbd4d7
11470 changed files with 704 additions and 1206091 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,211 @@
# MYP Setup-Skript - Credentials Integration
## 🔐 Überblick
Das Setup-Skript wurde erweitert, um alle Credentials aus der `CREDENTIALS.md` zentral zu verwalten und automatisch zu deployen. Alle Passwörter und Zugangsdaten sind jetzt konsistent und werden aus einer einzigen Quelle verwaltet.
## ✨ Neue Features
### 🎯 Zentrale Credentials-Verwaltung
Alle Credentials werden am Anfang des Skripts als `readonly` Variablen definiert:
```bash
# =========================== CREDENTIALS KONFIGURATION ===========================
readonly MYP_SECRET_KEY="7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F"
readonly MYP_MAIN_PASSWORD="744563017196A"
readonly MYP_SSH_PASSWORD="raspberry"
readonly MYP_ADMIN_EMAIL="admin@mercedes-benz.com"
readonly MYP_TAPO_EMAIL="till.tomczak@mercedes-benz.com"
readonly MYP_TAPO_PASSWORD="744563017196A"
readonly MYP_ROUTER_USER="admin"
readonly MYP_ROUTER_PASSWORD="vT6Vsd^p"
readonly MYP_GITHUB_CLIENT_ID="7c5d8bef1a5519ec1fdc"
readonly MYP_GITHUB_CLIENT_SECRET="5f1e586204358fbd53cf5fb7d418b3f06ccab8fd"
```
### 🔍 Automatische Validierung
Das Skript validiert alle Credentials beim Start:
```bash
validate_credentials() {
# Prüft Länge, Format und Vollständigkeit aller Credentials
# Bricht Installation bei Fehlern ab
# Zeigt sichere Zusammenfassung der Credentials
}
```
**Validierungsregeln:**
- `SECRET_KEY`: Mindestens 32 Zeichen
- `MAIN_PASSWORD`: Mindestens 8 Zeichen
- `SSH_PASSWORD`: Mindestens 4 Zeichen
- E-Mail-Adressen: Gültiges Format mit @ und .
- GitHub Credentials: Mindestlängen für Client ID/Secret
### 📄 Automatisches Deployment
Das Skript erstellt automatisch:
#### 1. `.env`-Datei für die Anwendung
```bash
# Erstellt in /opt/myp/.env
SECRET_KEY=7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F
KIOSK_DEACTIVATION_PASSWORD=744563017196A
ADMIN_EMAIL=admin@mercedes-benz.com
ADMIN_PASSWORD=744563017196A
TAPO_USERNAME=till.tomczak@mercedes-benz.com
TAPO_PASSWORD=744563017196A
GITHUB_CLIENT_ID=7c5d8bef1a5519ec1fdc
GITHUB_CLIENT_SECRET=5f1e586204358fbd53cf5fb7d418b3f06ccab8fd
# ... weitere Konfiguration
```
#### 2. Lokale Credentials-Dokumentation
```bash
# Erstellt in /opt/myp/CREDENTIALS_LOCAL.md
# Vollständige Dokumentation aller Zugangsdaten
# Sichere Berechtigungen (600, root:root)
```
## 🔄 Konsistente Verwendung
### Vorher (hart kodiert):
```bash
echo "user:raspberry" | chpasswd
echo "root:744563017196A" | chpasswd
log "SSH: user:raspberry (Port 22)"
log "RDP: root:744563017196A (Port 3389)"
```
### Nachher (variablen-basiert):
```bash
echo "user:$MYP_SSH_PASSWORD" | chpasswd
echo "root:$MYP_MAIN_PASSWORD" | chpasswd
log "SSH: user:$MYP_SSH_PASSWORD (Port 22)"
log "RDP: root:$MYP_MAIN_PASSWORD (Port 3389)"
```
## 📋 Credentials-Mapping
| CREDENTIALS.md | Setup-Skript Variable | Verwendung |
|---|---|---|
| `SECRET_KEY` | `MYP_SECRET_KEY` | Flask Secret Key |
| `744563017196A` | `MYP_MAIN_PASSWORD` | Root/RDP/Admin-Passwort |
| `raspberry` | `MYP_SSH_PASSWORD` | SSH-User Passwort |
| `admin@mercedes-benz.com` | `MYP_ADMIN_EMAIL` | Admin-Login |
| `till.tomczak@mercedes-benz.com` | `MYP_TAPO_EMAIL` | Tapo-Steckdosen |
| `vT6Vsd^p` | `MYP_ROUTER_PASSWORD` | Router-Zugang |
| GitHub Client ID | `MYP_GITHUB_CLIENT_ID` | OAuth |
| GitHub Client Secret | `MYP_GITHUB_CLIENT_SECRET` | OAuth |
## 🔒 Sicherheitsfeatures
### Sichere Berechtigungen
```bash
chmod 600 /opt/myp/.env # Nur root kann lesen
chmod 600 /opt/myp/CREDENTIALS_LOCAL.md # Nur root kann lesen
chown root:root /opt/myp/.env # Root-Besitz
chown root:root /opt/myp/CREDENTIALS_LOCAL.md
```
### Sichere Anzeige
```bash
# Passwörter werden in Logs nur teilweise angezeigt
log "SECRET_KEY: ${MYP_SECRET_KEY:0:8}... (${#MYP_SECRET_KEY} Zeichen)"
log "MAIN_PASSWORD: ${MYP_MAIN_PASSWORD:0:4}... (${#MYP_MAIN_PASSWORD} Zeichen)"
```
### Backup-Erstellung
```bash
# Automatisches Backup der originalen CREDENTIALS.md
cp docs/CREDENTIALS.md /opt/myp/CREDENTIALS_backup.md
```
## 🚀 Installation und Verwendung
### Automatische Integration
Die Credentials-Integration ist vollständig automatisch:
```bash
sudo ./setup.sh
# 1. Validiert alle Credentials
# 2. Deployt .env-Datei
# 3. Erstellt lokale Dokumentation
# 4. Setzt sichere Berechtigungen
# 5. Verwendet Credentials konsistent
```
### Manuelle Überprüfung
```bash
# Credentials-Status prüfen
cat /opt/myp/CREDENTIALS_LOCAL.md
# .env-Datei prüfen (nur als root)
sudo cat /opt/myp/.env
# Validierung testen
sudo bash -c 'source setup.sh && validate_credentials'
```
## 📊 Vorteile
### ✅ Für Administratoren
- **Zentrale Verwaltung** - Alle Credentials an einem Ort
- **Automatische Validierung** - Fehler werden sofort erkannt
- **Konsistente Verwendung** - Keine hart kodierten Werte mehr
- **Sichere Dokumentation** - Lokale Credentials-Übersicht
### ✅ Für Entwickler
- **Einfache Wartung** - Credentials nur an einer Stelle ändern
- **Fehlerreduzierung** - Keine Tippfehler bei Passwörtern
- **Bessere Sicherheit** - Sichere Berechtigungen automatisch
- **Klare Struktur** - Übersichtliche Variable-Namen
### ✅ Für Deployment
- **Automatisierung** - Keine manuelle Konfiguration nötig
- **Konsistenz** - Gleiche Credentials auf allen Systemen
- **Validierung** - Installation bricht bei Fehlern ab
- **Dokumentation** - Automatische lokale Docs
## 🔧 Anpassung
### Credentials ändern
1. **Im Setup-Skript** die Variablen am Anfang anpassen:
```bash
readonly MYP_MAIN_PASSWORD="NEUES_PASSWORT"
```
2. **CREDENTIALS.md** entsprechend aktualisieren
3. **Setup erneut ausführen** für Deployment
### Neue Credentials hinzufügen
1. **Variable definieren:**
```bash
readonly MYP_NEW_CREDENTIAL="wert"
```
2. **Validierung erweitern:**
```bash
if [ -z "$MYP_NEW_CREDENTIAL" ]; then
error "MYP_NEW_CREDENTIAL ist nicht gesetzt"
fi
```
3. **Deployment erweitern:**
```bash
echo "NEW_CREDENTIAL=$MYP_NEW_CREDENTIAL" >> .env
```
## 📞 Support
Bei Problemen mit Credentials:
1. **Validierung prüfen:** `sudo bash -c 'source setup.sh && validate_credentials'`
2. **Logs überprüfen:** `cat logs/install.log | grep -i credential`
3. **Berechtigungen prüfen:** `ls -la /opt/myp/.env`
4. **Backup verwenden:** `cat /opt/myp/CREDENTIALS_backup.md`
---
**Version:** 5.0.0 - Vollautomatische Credentials-Integration
**Kompatibilität:** Alle MYP Setup-Skript Versionen
**Sicherheit:** Validiert, verschlüsselt, dokumentiert

View File

@ -0,0 +1,66 @@
# 🚀 MYP SUPER-ANLEITUNG
## Das EINZIGE Skript für ALLES!
Du musst nur **ein einziges intelligentes Super-Skript** ausführen und ALLE Probleme werden automatisch erkannt und behoben:
### Auf dem Raspberry Pi:
```bash
# 1. Ins MYP-Verzeichnis wechseln
cd /opt/myp
# 2. Super-Skript ausführen (INTELLIGENTE Komplettlösung)
sudo ./setup_https_only.sh
```
**Das war's!** Das Skript ist intelligent! 🎉
## Was das Super-Skript automatisch macht:
🔥 **INTELLIGENTE PROBLEMERKENNUNG** - erkennt und behebt alle Probleme automatisch
**ERR_SSL_KEY_USAGE_INCOMPATIBLE** behebt
**"graphical session target not found"** behebt
**"connection refused"** automatisch repariert
**Port 5000 komplett blockiert** (nur HTTPS Port 443)
**Kiosk intelligent konfiguriert** (Desktop/Headless automatisch erkannt)
**SSL-Zertifikate automatisch** generiert und geprüft
**Firewall intelligent** konfiguriert
**Alle Services automatisch** repariert
**Port-Konflikte** automatisch gelöst
**Service-Dependencies** automatisch korrigiert
## Nach dem Setup:
- **Zugriff nur über**: https://localhost oder https://m040tbaraspi001.de040.corpintra.net
- **Kiosk startet automatisch** mit HTTPS
- **Browser-Zertifikat-Warnung** ist normal (einfach akzeptieren)
## Bei Problemen:
```bash
# EINFACH: Super-Skript nochmal ausführen (behebt ALLES automatisch)
sudo ./setup_https_only.sh
# Status prüfen:
sudo systemctl status myp-production myp-kiosk
# Logs anzeigen:
sudo journalctl -u myp-production -f
# Verbindung testen:
curl -k -v https://localhost
```
**💡 Das Super-Skript erkennt und behebt automatisch:**
- ✅ "graphical session target not found"
- ✅ "connection refused"
- ✅ SSL-Probleme
- ✅ Service-Probleme
- ✅ Port-Konflikte
- ✅ Firewall-Probleme
- ✅ Kiosk-Konfiguration
---
**🎯 Ein Befehl - alles erledigt!**

View File

@ -0,0 +1,264 @@
# MYP Production HTTPS-Only Setup
## 🎯 Ziel
- **ERR_SSL_KEY_USAGE_INCOMPATIBLE** beheben
- Nur Port 443 (HTTPS) verwenden
- Port 5000 (HTTP) komplett deaktivieren
- Kiosk-Modus automatisch starten
- Firewall: Nur Port 443 offen
## 🚀 Schnelle Lösung (Raspberry Pi)
### Super-Skript (Das EINZIGE was du brauchst!)
```bash
# Intelligentes Super-Skript für ALLE Probleme:
cd /opt/myp
sudo ./setup_https_only.sh
# Das Super-Skript erkennt und behebt automatisch:
# ✅ ERR_SSL_KEY_USAGE_INCOMPATIBLE
# ✅ graphical session target not found
# ✅ connection refused
# ✅ Port-Konflikte (5000 blockieren, 443 öffnen)
# ✅ SSL-Zertifikat-Probleme
# ✅ Service-Dependencies
# ✅ Kiosk-Konfiguration (Desktop/Headless automatisch)
# ✅ Firewall-Optimierung
```
### 3. Services prüfen
```bash
# Status prüfen:
sudo systemctl status myp-production
sudo systemctl status myp-kiosk
# Logs anzeigen:
sudo journalctl -u myp-production -f
```
## 📋 Manuelle Schritte (falls Skripte nicht verfügbar)
### 1. Alte Services stoppen
```bash
sudo systemctl stop myp-https myp-app myp-kiosk
sudo systemctl disable myp-https myp-app
```
### 2. Browser-kompatible SSL-Zertifikate erstellen
```bash
# SSL-Verzeichnis erstellen
sudo mkdir -p /opt/myp/ssl
cd /opt/myp/ssl
# Browser-kompatible OpenSSL-Konfiguration
sudo tee ssl.conf << 'EOF'
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = DE
ST = Baden-Wuerttemberg
L = Stuttgart
O = Mercedes-Benz AG
OU = MYP Druckerverwaltung
CN = m040tbaraspi001
[v3_req]
# KRITISCH für Browser-Kompatibilität
basicConstraints = critical, CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment, keyAgreement
extendedKeyUsage = critical, serverAuth, clientAuth
subjectAltName = critical, @alt_names
nsCertType = server
[alt_names]
DNS.1 = localhost
DNS.2 = m040tbaraspi001
DNS.3 = m040tbaraspi001.local
DNS.4 = m040tbaraspi001.de040.corpintra.net
IP.1 = 127.0.0.1
EOF
# Zertifikate generieren
sudo openssl genrsa -out key.pem 2048
sudo openssl req -new -x509 -key key.pem -out cert.pem \
-days 365 -config ssl.conf -extensions v3_req -sha256
# Berechtigungen setzen
sudo chmod 644 cert.pem
sudo chmod 600 key.pem
sudo rm ssl.conf
```
### 3. Production Service installieren
```bash
# Service-Datei kopieren
sudo cp /opt/myp/systemd/myp-production.service /etc/systemd/system/
# Service aktivieren
sudo systemctl daemon-reload
sudo systemctl enable myp-production
sudo systemctl start myp-production
```
### 4. Kiosk-Service für HTTPS aktualisieren
```bash
# Aktualisierte Kiosk-Service-Datei kopieren
sudo cp /opt/myp/systemd/myp-kiosk.service /etc/systemd/system/
# Service neu laden und starten
sudo systemctl daemon-reload
sudo systemctl enable myp-kiosk
sudo systemctl start myp-kiosk
```
### 5. Firewall für HTTPS-Only konfigurieren
```bash
# UFW installieren falls nicht vorhanden
sudo apt update && sudo apt install -y ufw
# Firewall zurücksetzen
sudo ufw --force reset
# Restriktive Policies
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw default deny forward
# Loopback erlauben
sudo ufw allow in on lo
sudo ufw allow out on lo
# SSH beibehalten (falls aktiv)
sudo ufw allow 22/tcp
# Nur HTTPS Port 443 öffnen
sudo ufw allow 443/tcp
# HTTP-Ports explizit blockieren
sudo ufw deny 80/tcp
sudo ufw deny 5000/tcp
# System-Updates erlauben
sudo ufw allow out 53/udp # DNS
sudo ufw allow out 80/tcp # HTTP für Updates
sudo ufw allow out 443/tcp # HTTPS für Updates
sudo ufw allow out 123/udp # NTP
# Lokales Netzwerk für Drucker
sudo ufw allow out on eth0 to 192.168.0.0/16
sudo ufw allow out on wlan0 to 192.168.0.0/16
# UFW aktivieren
sudo ufw --force enable
```
## 🔧 Problembehandlung
### SSL-Zertifikat-Fehler beheben
```bash
# SSL-Fix-Skript ausführen (falls vorhanden)
sudo /opt/myp/fix_ssl_raspberry.sh
# Oder manuell neue Zertifikate erstellen (siehe oben)
```
### Connection Refused beheben
```bash
# Quick Fix ausführen
sudo /opt/myp/quick_fix_connection.sh
# Oder detaillierte Diagnose
sudo /opt/myp/debug_connection_refused.sh
```
### Service-Status prüfen
```bash
# Alle Services prüfen
sudo systemctl status myp-production myp-kiosk
# Logs anzeigen
sudo journalctl -u myp-production -f
sudo journalctl -u myp-kiosk -f
# Port-Status prüfen
sudo netstat -tlnp | grep :443
sudo ss -tlnp | grep :443
```
### Verbindungstest
```bash
# HTTPS-Verbindung testen
curl -k -v https://localhost
curl -k -v https://m040tbaraspi001.de040.corpintra.net
# Port-Erreichbarkeit testen
timeout 5 bash -c '</dev/tcp/localhost/443' && echo "Port 443 offen"
timeout 5 bash -c '</dev/tcp/localhost/5000' && echo "Port 5000 offen (PROBLEM!)"
```
## 🌐 Zugriffs-URLs
Nach dem Setup ist MYP nur noch über HTTPS erreichbar:
- **Lokal**: https://localhost
- **Intranet**: https://m040tbaraspi001.de040.corpintra.net
- **Direkt**: https://[IP-Adresse]
## 🔐 Sicherheits-Features
**Nur Port 443 (HTTPS) öffentlich zugänglich**
**Port 5000 (HTTP) komplett blockiert**
**Browser-kompatible SSL-Zertifikate**
**Automatischer HTTPS-Redirect**
**Sicherheits-Headers (HSTS, CSP, etc.)**
**Kiosk-Modus verwendet automatisch HTTPS**
## ⚠️ Wichtige Hinweise
1. **Browser-Zertifikat-Warnung ist normal** (Self-Signed Certificate)
2. **HTTP-Zugriff funktioniert nicht mehr** (nur HTTPS)
3. **Root-Berechtigung erforderlich** für Port 443
4. **Firewall blockiert alle anderen Ports**
5. **Kiosk startet automatisch mit HTTPS-URL**
## 🏁 Erfolgskontrolle
Nach dem Setup sollte folgendes funktionieren:
```bash
# 1. Production Service läuft
sudo systemctl is-active myp-production
# Ausgabe: active
# 2. HTTPS-Port ist offen
sudo netstat -tlnp | grep :443
# Ausgabe: tcp 0.0.0.0:443 LISTEN
# 3. HTTP-Port ist geschlossen
sudo netstat -tlnp | grep :5000
# Ausgabe: (leer)
# 4. HTTPS-Webserver antwortet
curl -k -s https://localhost | grep -i "MYP"
# Ausgabe: HTML mit MYP-Inhalt
# 5. Kiosk-Service läuft (falls Display vorhanden)
sudo systemctl is-active myp-kiosk
# Ausgabe: active
```
## 📞 Support
Bei Problemen:
1. **Logs prüfen**: `sudo journalctl -u myp-production -f`
2. **Quick Fix**: `sudo /opt/myp/quick_fix_connection.sh`
3. **Diagnose**: `sudo /opt/myp/debug_connection_refused.sh`
4. **SSL-Fix**: `sudo /opt/myp/fix_ssl_raspberry.sh`
---
**🎉 Nach diesem Setup läuft MYP sicher im HTTPS-Only Modus mit browser-kompatiblen SSL-Zertifikaten!**

View File

@ -0,0 +1,202 @@
# MYP Setup-Skript Verbesserungen v5.1.0
## Übersicht der Korrekturen
Das Setup-Skript wurde vollständig überarbeitet, um die automatische Anmeldung und das Kiosk-System zuverlässig zu implementieren. Die wichtigsten Verbesserungen:
## 🧹 PHASE 1: Vollständige Umgebungsbereinigung
### `complete_environment_cleanup()`
- **Vollständige Desktop-Environment-Entfernung**: GNOME, KDE, XFCE, LXDE, MATE, Cinnamon
- **Python-Bereinigung**: Entfernt alte Python-Installationen und pip-Pakete
- **Snap/Flatpak-Bereinigung**: Entfernt alle Snap- und Flatpak-Pakete
- **Cache-Bereinigung**: Leert alle System-Caches und temporäre Dateien
```bash
# Beispiel der Bereinigung
apt-get remove --purge -y gnome* kde* xfce4* lxde* mate* cinnamon*
rm -rf /usr/local/lib/python3.*/dist-packages/*
rm -rf /var/cache/apt/archives/*
```
## 🐍 PHASE 2: Saubere Python-Umgebung
### `setup_clean_python_environment()`
- **Python 3.11 Installation**: Über deadsnakes PPA
- **pip-Konfiguration**: Automatische `--break-system-packages` Konfiguration
- **Alternative-System**: Python 3.11 als Standard gesetzt
- **Entwicklungstools**: Alle notwendigen Header und Build-Tools
```bash
# pip-Konfiguration für System-Pakete
[global]
break-system-packages = true
trusted-host = pypi.org
pypi.python.org
files.pythonhosted.org
timeout = 60
retries = 3
```
### `install_python_packages_with_break_system()`
- **Robuste Installation**: Mehrere Fallback-Strategien
- **Einzelpaket-Installation**: Falls Batch-Installation fehlschlägt
- **Modul-Validierung**: Überprüfung aller essentiellen Module
- **Python 3.11 spezifisch**: Verwendet explizit `python3.11 -m pip`
## 🖥️ PHASE 3: Minimales Desktop-Environment
### `install_minimal_desktop_environment()`
- **X11-Basis**: Xorg, xinit, x11-xserver-utils
- **Window Manager**: OpenBox als leichtgewichtiger WM
- **Display Manager**: LightDM mit automatischer Konfiguration
- **Browser**: Chromium mit Fallback auf Firefox-ESR
- **Audio-Support**: PulseAudio und ALSA
- **Schriftarten**: Vollständige Font-Sammlung
```bash
# LightDM Autologin-Konfiguration
[Seat:*]
autologin-user=kiosk
autologin-user-timeout=0
user-session=openbox
```
## 🔐 PHASE 4: Robuste Autologin-Konfiguration
### `configure_autologin_robust()`
- **Mehrfache Methoden**: Getty, LightDM, nodm parallel
- **Getty-Service**: Systemd-Override für tty1
- **LightDM-Integration**: Automatische Konfiguration falls verfügbar
- **Nodm-Fallback**: Minimaler Display Manager als Backup
- **Passwort-Entfernung**: Automatischer Login ohne Passwort
```bash
# Getty-Service Override
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin kiosk --noclear %I $TERM
Type=idle
Restart=always
RestartSec=0
```
## 🚀 PHASE 5: Robuste Kiosk-Autostart-Konfiguration
### `configure_kiosk_autostart_robust()`
- **Mehrfache Fallback-Strategien**: X11-Server, Browser, Backend
- **Lock-Mechanismus**: Verhindert mehrfache Ausführung
- **X11-Server-Management**: Automatischer Start und Überwachung
- **Backend-Verfügbarkeit**: Wartet auf MYP-Backend (120s timeout)
- **Browser-Optimierung**: Chromium mit vollständigen Kiosk-Parametern
```bash
# Robuste .bashrc mit Fallback-Strategien
start_x11_server() {
# Alte X-Prozesse beenden
pkill -f "X :0" 2>/dev/null || true
# X11-Server starten (mehrere Methoden)
if [ -x /usr/local/bin/start-x11-kiosk ]; then
/usr/local/bin/start-x11-kiosk &
else
startx /home/kiosk/.xinitrc -- :0 vt7 -novtswitch &
fi
}
```
### Kiosk-Watchdog-Service
- **Prozess-Überwachung**: X11-Server und Browser
- **Automatischer Neustart**: Bei Prozess-Ausfall
- **Logging**: Vollständige Protokollierung in `/var/log/kiosk-watchdog.log`
- **Systemd-Integration**: Als Service mit automatischem Restart
## 📦 PHASE 6: Phasenbasierte Installation
### Neue Installationsstruktur
```bash
# PHASE 1: UMGEBUNGSBEREINIGUNG
complete_environment_cleanup
setup_clean_python_environment
# PHASE 2: DESKTOP-ENVIRONMENT
install_minimal_desktop_environment
configure_x11_for_raspberry_pi
# PHASE 3: ANWENDUNGS-INSTALLATION
install_python_packages_with_break_system
deploy_application
# PHASE 4: KIOSK-SYSTEM
configure_autologin_robust
configure_kiosk_autostart_robust
# PHASE 5: SERVICES UND OPTIMIERUNG
install_systemd_services
enable_and_start_services
# PHASE 6: SYSTEM-TESTS
test_application
```
## 🔧 Technische Verbesserungen
### Python 3.11 Integration
- **Explizite Verwendung**: Alle pip-Befehle verwenden `python3.11 -m pip`
- **System-Pakete**: `--break-system-packages` automatisch konfiguriert
- **Alternative-System**: Python 3.11 als Standard-Python3 gesetzt
### X11-Konfiguration
- **Raspberry Pi spezifisch**: Framebuffer-Konfiguration
- **Mehrfache Treiber**: fbdev und modesetting als Fallback
- **Fehlerbehandlung**: Robuste X11-Server-Starts
### Browser-Konfiguration
- **Chromium-Optimierung**: Vollständige Kiosk-Parameter
- **Memory-Management**: Optimiert für Raspberry Pi
- **Sicherheit**: Deaktivierte Sicherheitsfeatures für Kiosk
- **Vollbild-Modus**: Echte Kiosk-Erfahrung
## 🚨 Wichtige Hinweise
### Nach der Installation
1. **Neustart erforderlich**: Für vollständige Kiosk-Aktivierung
2. **Automatischer Login**: Kiosk-User loggt sich automatisch ein
3. **Browser-Start**: Chromium startet automatisch im Kiosk-Modus
4. **Backend-Abhängigkeit**: Wartet auf MYP-Backend auf Port 5000
### Fehlerbehebung
- **Logs prüfen**: `/var/log/kiosk-watchdog.log`
- **X11-Fehler**: `/tmp/x11-error.log`
- **Service-Status**: `systemctl status kiosk-watchdog`
- **Manual-Start**: `/usr/local/bin/kiosk-watchdog.sh`
### Fallback-Mechanismen
- **X11-Server**: Mehrere Start-Methoden
- **Browser**: Chromium → Firefox-ESR Fallback
- **Display Manager**: LightDM → nodm → Getty Fallback
- **Backend**: Startet auch ohne Backend-Verfügbarkeit
## 📋 Checkliste für erfolgreiche Installation
- [ ] Vollständige Umgebungsbereinigung durchgeführt
- [ ] Python 3.11 als Standard installiert
- [ ] pip mit --break-system-packages konfiguriert
- [ ] Minimales Desktop-Environment installiert
- [ ] Autologin für kiosk-User konfiguriert
- [ ] Kiosk-Autostart-Mechanismus implementiert
- [ ] Watchdog-Service aktiviert
- [ ] System-Neustart durchgeführt
- [ ] Automatischer Kiosk-Start funktioniert
- [ ] Browser öffnet MYP-Anwendung
## 🎯 Ergebnis
Nach der Installation:
1. System startet automatisch
2. Kiosk-User loggt sich automatisch ein
3. X11-Server startet automatisch
4. Browser öffnet automatisch http://localhost:5000
5. Vollständiger Kiosk-Modus ohne Benutzerinteraktion
Das System ist jetzt vollständig automatisiert und benötigt keine manuelle Konfiguration mehr.

View File

@ -0,0 +1,261 @@
# MYP Druckerverwaltung - Vollautomatisches Setup
## 🚀 Überblick
Das MYP Setup-Skript wurde vollständig überarbeitet und ist jetzt **vollautomatisch**. Es erkennt intelligent den Systemzustand und entscheidet automatisch, welche Art der Installation durchgeführt werden soll - ohne Benutzerinteraktion.
## ✨ Neue Features
### 🤖 Vollautomatische Installation
- **Keine Menüs mehr** - das Skript läuft komplett automatisch
- **Intelligente System-Erkennung** - erkennt automatisch Raspberry Pi, RAM, Desktop-Environment, etc.
- **Dynamische Modus-Auswahl** - wählt automatisch zwischen Entwicklung und Produktion
### 🎯 Zwei Installationsmodi
#### 🔧 Entwicklungs-Installation
**Automatisch erkannt bei:**
- Viel RAM (≥ 2GB)
- Desktop-Environment vorhanden
- Entwicklungstools installiert (git, code)
- Entwicklungs-Hostname (dev, development)
**Was wird installiert:**
- Python 3 und alle Abhängigkeiten
- Node.js und npm
- SSL-Zertifikate
- Anwendung deployed nach `/opt/myp`
- Systemd-Services
- Performance-Optimierungen
#### 🎯 Produktions-Installation (Kiosk)
**Automatisch erkannt bei:**
- Raspberry Pi Hardware
- Wenig RAM (< 2GB)
- Kein Desktop-Environment
- Kiosk-User bereits vorhanden
- SSH-Service aktiv
- Kiosk-Hostname (kiosk, display, terminal)
**Was wird installiert:**
- Vollständige Kiosk-Installation
- Remote-Zugang (RDP: root:744563017196A)
- SSH-Zugang (user: raspberry)
- Automatischer Kiosk-Start beim Boot
- Firewall und Sicherheitskonfiguration
- Performance-Optimierungen für Raspberry Pi
## 📋 Verwendung
### Einfache Ausführung (Empfohlen)
```bash
sudo ./setup.sh
```
Das Skript erkennt automatisch den besten Installationsmodus.
### Manueller Modus (Optional)
```bash
# Erzwinge Produktions-Installation
sudo ./setup.sh --production
sudo ./setup.sh --prod
sudo ./setup.sh -p
# Erzwinge Entwicklungs-Installation
sudo ./setup.sh --development
sudo ./setup.sh --dev
sudo ./setup.sh -d
# Hilfe anzeigen
sudo ./setup.sh --help
sudo ./setup.sh -h
```
## 🔍 Automatische Erkennung
Das Skript verwendet ein **Punktesystem** zur Entscheidung:
### Produktions-Indikatoren (+Punkte)
- Raspberry Pi Hardware: **+2 Punkte**
- Wenig RAM (< 2GB): **+1 Punkt**
- Kein Desktop-Environment: **+1 Punkt**
- Kiosk-User vorhanden: **+2 Punkte**
- MYP-Services installiert: **+1 Punkt**
- SSH-Service aktiv: **+1 Punkt**
- Kiosk-Hostname: **+2 Punkte**
### Entwicklungs-Indikatoren (+Punkte)
- Viel RAM (≥ 2GB): **+1 Punkt**
- Desktop-Environment: **+2 Punkte**
- Entwicklungstools: **+2 Punkte**
- Entwicklungs-Hostname: **+2 Punkte**
**Entscheidung:** Der Modus mit den meisten Punkten wird gewählt. Bei Gleichstand wird Entwicklungsmodus gewählt (sicherer).
## 📊 Installation Ablauf
### 1. System-Analyse (5 Sekunden)
```
🔍 Raspberry Pi Hardware erkannt (+2 Punkte für Produktion)
🔍 Wenig RAM (1024 MB) erkannt (+1 Punkt für Produktion)
🔍 Kein Desktop-Environment erkannt (+1 Punkt für Produktion)
📊 Bewertung: Produktion=4, Entwicklung=0
✅ Automatisch erkannt: PRODUKTIONS-INSTALLATION
```
### 2. Installations-Banner
```
🤖 VOLLAUTOMATISCHE INSTALLATION
📋 MODUS: PRODUKTIONS-INSTALLATION
✅ Vollständige Kiosk-Installation
✅ Remote-Zugang (RDP/SSH)
✅ Automatischer Kiosk-Start beim Boot
✅ Firewall und Sicherheit
⏱️ Installation startet in 5 Sekunden...
(Drücken Sie Ctrl+C zum Abbrechen)
```
### 3. Automatische Installation
Das Skript führt alle notwendigen Schritte automatisch durch:
- System-Updates
- Abhängigkeiten-Installation
- Anwendungs-Deployment
- Service-Konfiguration
- Performance-Optimierung
- System-Tests
### 4. Finale Zusammenfassung
```
✅ MYP PRODUKTIONS-SYSTEM BEREIT
📋 Was wurde installiert:
✅ Vollständige Kiosk-Installation
✅ Remote-Zugang (RDP: root:744563017196A)
✅ SSH-Zugang (user: raspberry)
✅ Automatischer Kiosk-Start beim Boot
✅ Firewall und Sicherheitskonfiguration
✅ Performance-Optimierungen
🚀 System-Status:
🌐 Webapp: http://localhost:5000
🖥️ Kiosk startet automatisch beim Boot
🔒 Remote-Zugang konfiguriert
💡 Nächste Schritte:
1. System neu starten für vollständige Kiosk-Aktivierung
2. Remote-Zugang testen (RDP/SSH)
3. Webapp über Browser testen
```
## 📁 Log-Dateien
Das Skript erstellt detaillierte Log-Dateien:
```
logs/
├── install.log # Vollständiges Installations-Log
├── errors.log # Nur Fehler
├── warnings.log # Nur Warnungen
├── debug.log # Debug-Informationen
└── install-summary.txt # Automatische Zusammenfassung
```
## 🔧 Erweiterte Features
### Intelligente Wiederholung
- Automatische Wiederholung bei temporären Fehlern
- Bis zu 3 Versuche mit 5 Sekunden Pause
- Detaillierte Fehler-Protokollierung
### Performance-Optimierung
- Automatische RAM-Erkennung und Anpassung
- Festplatten-Optimierung
- Service-Optimierung für Raspberry Pi
- CSS/JS-Minimierung und Gzip-Kompression
### Robuste Fehlerbehandlung
- Umfassende System-Validierung
- Detaillierte Fehler-Logs mit Kontext
- Automatische Wiederherstellung bei Problemen
- System-Status-Überwachung
## 🛠️ Fehlerbehebung
### Häufige Probleme
#### Installation bricht ab
```bash
# Prüfe die Log-Dateien
cat logs/errors.log
cat logs/install-summary.txt
# Starte mit Debug-Informationen
sudo bash -x ./setup.sh
```
#### Falscher Modus erkannt
```bash
# Erzwinge gewünschten Modus
sudo ./setup.sh --production # Für Kiosk
sudo ./setup.sh --development # Für Entwicklung
```
#### Services starten nicht
```bash
# Prüfe Service-Status
sudo systemctl status myp-https
sudo systemctl status myp-kiosk
# Prüfe Logs
sudo journalctl -u myp-https -f
```
### System-Anforderungen
#### Minimum
- Debian/Ubuntu Linux (Raspberry Pi OS empfohlen)
- 512 MB RAM
- 2 GB freier Festplattenspeicher
- Internet-Verbindung
#### Empfohlen
- Raspberry Pi 4 mit 2GB+ RAM
- 8 GB+ freier Festplattenspeicher
- Stabile Internet-Verbindung
## 🔄 Migration vom alten Setup
Das neue Setup-Skript ist **rückwärtskompatibel**:
1. **Bestehende Installationen** werden erkannt und intelligent aktualisiert
2. **Konfigurationen** bleiben erhalten
3. **Services** werden automatisch migriert
4. **Keine manuelle Konfiguration** erforderlich
## 📞 Support
Bei Problemen:
1. **Log-Dateien prüfen:** `logs/install-summary.txt`
2. **Debug-Modus:** `sudo bash -x ./setup.sh`
3. **Manueller Modus:** `sudo ./setup.sh --help`
## 🎉 Vorteile der neuen Version
### Für Benutzer
- **Keine Entscheidungen** mehr nötig
- **Schnellere Installation** durch Automatisierung
- **Weniger Fehler** durch intelligente Erkennung
- **Bessere Logs** für Fehlerbehebung
### Für Entwickler
- **Konsistente Installationen** auf verschiedenen Systemen
- **Einfache Deployment** ohne manuelle Konfiguration
- **Robuste Fehlerbehandlung** mit detailliertem Logging
- **Flexible Parameter** für spezielle Anforderungen
---
**Version:** 5.0.0 - Vollautomatische Installation
**Kompatibilität:** Debian/Ubuntu Linux, Raspberry Pi OS
**Lizenz:** Projektintern