# MYP Platform - Raspberry Pi Deployment Guide ## Übersicht Diese Anleitung beschreibt die vollständige Installation und Konfiguration der MYP Platform auf Raspberry Pi Systemen. ## Voraussetzungen ### Hardware - Raspberry Pi 4 (empfohlen) oder Raspberry Pi 3B+ - Mindestens 4GB RAM - 32GB+ SD-Karte (Class 10) - Netzwerkverbindung (Ethernet oder WiFi) ### Software - Raspberry Pi OS (Bullseye oder neuer) - SSH-Zugang aktiviert - Benutzer `user` erstellt ## Installation ### 1. Projekt auf Raspberry Pi kopieren ```bash # Auf dem Entwicklungsrechner scp -r Projektarbeit-MYP user@raspberrypi:/home/user/ # Oder mit Git ssh user@raspberrypi cd /home/user git clone Projektarbeit-MYP ``` ### 2. Setup-Skript ausführen ```bash ssh user@raspberrypi cd /home/user/Projektarbeit-MYP/backend chmod +x setup_raspberry_pi.sh ./setup_raspberry_pi.sh ``` Das Setup-Skript führt automatisch folgende Schritte aus: 1. **System-Updates**: Aktualisiert alle Pakete 2. **Abhängigkeiten**: Installiert Python, Nginx, Supervisor etc. 3. **Virtual Environment**: Erstellt isolierte Python-Umgebung 4. **Python-Pakete**: Installiert alle Requirements 5. **Verzeichnisse**: Erstellt notwendige Ordnerstruktur 6. **Datenbank**: Initialisiert SQLite-Datenbank 7. **SSL-Zertifikate**: Generiert selbstsignierte Zertifikate 8. **Services**: Konfiguriert Systemd, Nginx, Supervisor 9. **Firewall**: Öffnet notwendige Ports 10. **Drucker**: Trägt hardkodierte Drucker in DB ein ### 3. Manuelle Drucker-Konfiguration (optional) Falls die Drucker separat konfiguriert werden sollen: ```bash cd /home/user/Projektarbeit-MYP/backend/app source ../venv/bin/activate python setup_drucker_db.py ``` ## Konfiguration ### Pfadstruktur ``` /home/user/Projektarbeit-MYP/ ├── backend/ │ ├── app/ │ │ ├── database/ │ │ │ └── myp.db │ │ ├── logs/ │ │ │ ├── app/ │ │ │ ├── auth/ │ │ │ ├── jobs/ │ │ │ ├── printers/ │ │ │ ├── scheduler/ │ │ │ └── errors/ │ │ └── ... │ ├── certs/ │ │ ├── myp.crt │ │ └── myp.key │ ├── venv/ │ └── requirements.txt └── frontend/ └── ssl/ ├── myp.crt └── myp.key ``` ### Hardkodierte Drucker Die folgenden Drucker werden automatisch konfiguriert: | Name | IP-Adresse | Status | |------|------------|--------| | Printer 1 | 192.168.0.100 | Available | | Printer 2 | 192.168.0.101 | Available | | Printer 3 | 192.168.0.102 | Available | | Printer 4 | 192.168.0.103 | Available | | Printer 5 | 192.168.0.104 | Available | | Printer 6 | 192.168.0.106 | Available | ### Standard-Anmeldedaten - **E-Mail**: admin@mercedes-benz.com - **Passwort**: 744563017196A ## Services ### Systemd Service ```bash # Service-Status prüfen sudo systemctl status myp-platform # Service neu starten sudo systemctl restart myp-platform # Service aktivieren/deaktivieren sudo systemctl enable myp-platform sudo systemctl disable myp-platform # Logs anzeigen sudo journalctl -u myp-platform -f ``` ### Nginx ```bash # Nginx-Status prüfen sudo systemctl status nginx # Konfiguration testen sudo nginx -t # Nginx neu laden sudo systemctl reload nginx ``` ### Supervisor ```bash # Supervisor-Status sudo supervisorctl status # Service neu starten sudo supervisorctl restart myp-platform # Logs anzeigen sudo supervisorctl tail -f myp-platform ``` ## Zugriff ### URLs - **HTTPS**: https://raspberrypi - **HTTPS (IP)**: https://[IP-ADRESSE] - **HTTP**: Automatische Weiterleitung zu HTTPS ### SSL-Zertifikat Das System verwendet selbstsignierte SSL-Zertifikate: - Browser-Warnung beim ersten Zugriff ist normal - Zertifikat manuell akzeptieren - Für Produktionsumgebung: Echte Zertifikate verwenden ## Wartung ### Logs ```bash # Anwendungs-Logs tail -f /home/user/Projektarbeit-MYP/backend/app/logs/app/app.log # System-Logs sudo journalctl -u myp-platform -f # Nginx-Logs sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log ``` ### Datenbank-Backup ```bash # Backup erstellen cp /home/user/Projektarbeit-MYP/backend/app/database/myp.db \ /home/user/backup_$(date +%Y%m%d_%H%M%S).db # Automatisches Backup (Crontab) crontab -e # Hinzufügen: # 0 2 * * * cp /home/user/Projektarbeit-MYP/backend/app/database/myp.db /home/user/backup_$(date +\%Y\%m\%d).db ``` ### Updates ```bash # Code aktualisieren cd /home/user/Projektarbeit-MYP git pull # Python-Abhängigkeiten aktualisieren source backend/venv/bin/activate pip install -r backend/requirements.txt # Service neu starten sudo systemctl restart myp-platform ``` ## Troubleshooting ### Häufige Probleme #### Service startet nicht ```bash # Logs prüfen sudo journalctl -u myp-platform -n 50 # Manuell starten (Debug) cd /home/user/Projektarbeit-MYP/backend/app source ../venv/bin/activate python app.py ``` #### SSL-Probleme ```bash # Zertifikate neu generieren cd /home/user/Projektarbeit-MYP/backend/app source ../venv/bin/activate python -c "from utils.ssl_manager import ssl_manager; ssl_manager.generate_mercedes_certificate()" # Nginx neu starten sudo systemctl restart nginx ``` #### Datenbank-Probleme ```bash # Datenbank neu initialisieren cd /home/user/Projektarbeit-MYP/backend/app source ../venv/bin/activate python -c "from models import init_database, create_initial_admin; init_database(); create_initial_admin()" # Drucker neu einrichten python setup_drucker_db.py ``` #### Port-Konflikte ```bash # Verwendete Ports prüfen sudo netstat -tlnp | grep :443 sudo netstat -tlnp | grep :80 # Prozesse beenden sudo pkill -f "python app.py" ``` ### Performance-Optimierung #### Systemressourcen ```bash # RAM-Nutzung prüfen free -h # CPU-Nutzung prüfen htop # Festplatte prüfen df -h ``` #### Log-Rotation ```bash # Logrotate konfigurieren sudo tee /etc/logrotate.d/myp-platform > /dev/null <