351 lines
6.9 KiB
Markdown
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
|
|
``` |