# 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 <repository-url> 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 <<EOF
/home/user/Projektarbeit-MYP/backend/app/logs/*/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    copytruncate
}
EOF
```

## Sicherheit

### Firewall

```bash
# UFW-Status prüfen
sudo ufw status

# Zusätzliche Regeln
sudo ufw allow from 192.168.0.0/24 to any port 22
sudo ufw deny 22
```

### SSL-Härtung

Für Produktionsumgebung:

1. Echte SSL-Zertifikate verwenden (Let's Encrypt)
2. HSTS aktivieren
3. Security Headers konfigurieren
4. Regelmäßige Updates

### Backup-Strategie

1. Tägliche Datenbank-Backups
2. Wöchentliche Vollbackups
3. Externe Speicherung
4. Restore-Tests

## Support

### Kontakt

- **E-Mail**: admin@mercedes-benz.com
- **Dokumentation**: /home/user/Projektarbeit-MYP/docs/

### Nützliche Befehle

```bash
# System-Informationen
hostnamectl
cat /etc/os-release
python3 --version

# Netzwerk-Informationen
ip addr show
hostname -I

# Service-Übersicht
systemctl list-units --type=service --state=running
``` 