final-cleanup: Produktionsfertige Konfiguration - Alle Ports auf 443 vereinheitlicht, TLS-Zertifikate vorgeneriert, Zentraler Installer erstellt
This commit is contained in:
351
docs/DEPLOYMENT.md
Normal file
351
docs/DEPLOYMENT.md
Normal file
@@ -0,0 +1,351 @@
|
||||
# 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
|
||||
```
|
Reference in New Issue
Block a user