#!/bin/bash # MYP Platform - Raspberry Pi Setup Script # Installiert und konfiguriert die MYP-Platform auf Raspberry Pi set -e # Exit on any error # Farben für Output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Logging-Funktion log() { echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}" } error() { echo -e "${RED}[ERROR] $1${NC}" >&2 } warning() { echo -e "${YELLOW}[WARNING] $1${NC}" } info() { echo -e "${BLUE}[INFO] $1${NC}" } # Variablen PROJECT_DIR="/home/user/Projektarbeit-MYP" BACKEND_DIR="$PROJECT_DIR/backend" APP_DIR="$BACKEND_DIR/app" VENV_DIR="$BACKEND_DIR/venv" SERVICE_NAME="myp-platform" USER="user" log "=== MYP Platform Raspberry Pi Setup ===" log "Projekt-Verzeichnis: $PROJECT_DIR" log "Backend-Verzeichnis: $BACKEND_DIR" log "App-Verzeichnis: $APP_DIR" # Prüfen, ob als root ausgeführt wird if [[ $EUID -eq 0 ]]; then error "Dieses Skript sollte nicht als root ausgeführt werden!" exit 1 fi # System-Updates log "1. System-Updates installieren..." sudo apt update && sudo apt upgrade -y # Notwendige System-Pakete installieren log "2. System-Pakete installieren..." sudo apt install -y \ python3 \ python3-pip \ python3-venv \ python3-dev \ build-essential \ libssl-dev \ libffi-dev \ libsqlite3-dev \ git \ curl \ wget \ nginx \ supervisor \ sqlite3 \ openssl \ ca-certificates \ net-tools \ htop \ vim \ nano # Python Virtual Environment erstellen log "3. Python Virtual Environment erstellen..." if [ ! -d "$VENV_DIR" ]; then python3 -m venv "$VENV_DIR" log "Virtual Environment erstellt: $VENV_DIR" else log "Virtual Environment existiert bereits: $VENV_DIR" fi # Virtual Environment aktivieren log "4. Virtual Environment aktivieren..." source "$VENV_DIR/bin/activate" # Pip upgraden log "5. Pip upgraden..." pip install --upgrade pip setuptools wheel # Python-Abhängigkeiten installieren log "6. Python-Abhängigkeiten installieren..." if [ -f "$BACKEND_DIR/requirements.txt" ]; then pip install -r "$BACKEND_DIR/requirements.txt" log "Abhängigkeiten aus requirements.txt installiert" else error "requirements.txt nicht gefunden in $BACKEND_DIR" exit 1 fi # Verzeichnisse erstellen log "7. Notwendige Verzeichnisse erstellen..." mkdir -p "$APP_DIR/database" mkdir -p "$APP_DIR/logs/app" mkdir -p "$APP_DIR/logs/auth" mkdir -p "$APP_DIR/logs/jobs" mkdir -p "$APP_DIR/logs/printers" mkdir -p "$APP_DIR/logs/scheduler" mkdir -p "$APP_DIR/logs/errors" mkdir -p "$APP_DIR/certs" mkdir -p "$PROJECT_DIR/frontend/ssl" # Berechtigungen setzen log "8. Berechtigungen setzen..." chown -R $USER:$USER "$PROJECT_DIR" chmod -R 755 "$PROJECT_DIR" chmod -R 700 "$APP_DIR/logs" chmod -R 700 "$APP_DIR/certs" # Datenbank initialisieren log "9. Datenbank initialisieren..." cd "$APP_DIR" if [ ! -f "database/myp.db" ]; then python3 -c " import sys sys.path.append('.') from models import init_database, create_initial_admin init_database() create_initial_admin() print('Datenbank initialisiert und Admin-Benutzer erstellt') " log "Datenbank erfolgreich initialisiert" else log "Datenbank existiert bereits" fi # SSL-Zertifikate generieren log "10. SSL-Zertifikate generieren..." python3 -c " import sys sys.path.append('.') from utils.ssl_manager import ssl_manager success = ssl_manager.generate_mercedes_certificate() if success: print('SSL-Zertifikate erfolgreich generiert') else: print('Fehler beim Generieren der SSL-Zertifikate') " # Systemd Service erstellen log "11. Systemd Service konfigurieren..." sudo tee "/etc/systemd/system/$SERVICE_NAME.service" > /dev/null < /dev/null < /dev/null <