Projektarbeit-MYP/docs/DEPLOYMENT.md

6.9 KiB

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

# 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

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:

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

Services

Systemd Service

# 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

# Nginx-Status prüfen
sudo systemctl status nginx

# Konfiguration testen
sudo nginx -t

# Nginx neu laden
sudo systemctl reload nginx

Supervisor

# Supervisor-Status
sudo supervisorctl status

# Service neu starten
sudo supervisorctl restart myp-platform

# Logs anzeigen
sudo supervisorctl tail -f myp-platform

Zugriff

URLs

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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# RAM-Nutzung prüfen
free -h

# CPU-Nutzung prüfen
htop

# Festplatte prüfen
df -h

Log-Rotation

# 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

# 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

Nützliche Befehle

# 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