Projektarbeit-MYP/docs/DEPLOYMENT.md

351 lines
6.9 KiB
Markdown

# 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
```