# MYP Reservation Platform Mercedes-Benz Werk 040 Berlin - 3D-Drucker Reservierungsplattform ## 🚀 Schnellstart ### MYP Control Center (Empfohlen) Das zentrale Installationssystem für alle Komponenten: ```bash # Repository klonen git clone cd Projektarbeit-MYP # MYP Control Center starten ./myp_installer.sh ``` Das MYP Control Center bietet: - **Schnellstart-Installationen** (Vollständig, Backend-Only, Entwicklung) - **Produktions-Installer** (Integration der v3.2 install.sh Funktionalität) - **Granulare Installation** (Einzelne Komponenten) - **System & Wartung** (Tests, Status, Informationen) ### Direkter Produktions-Installer Für schnelle Produktions-Deployments direkt im MYP Control Center → Option 4: ```bash ./myp_installer.sh # → Wähle Option 4: Produktions-Installer # → Backend installieren (Raspberry Pi) # → Frontend installieren (Docker) ``` ### Voraussetzungen - **Backend (Raspberry Pi)**: Python 3.11, systemd - **Frontend (m040tbaraspi001)**: Docker, Docker Compose ## 🌐 Zugriff - **Frontend**: https://m040tbaraspi001.de040.corpintra.net - **Backend API**: https://raspberrypi/api ## 🔧 Konfiguration ### Netzwerk | Komponente | Hostname | IP | Port | |------------|----------|----|----- | | Frontend | m040tbaraspi001.de040.corpintra.net | 192.168.0.109 | 443 | | Backend | raspberrypi | 192.168.0.105 | 443 | ### TLS-Zertifikate Selbstsignierte Zertifikate werden automatisch generiert: - Backend: `backend/app/certs/` - Frontend: `frontend/certs/` ## 📊 Health Checks ```bash # Backend curl -k https://raspberrypi/api/test # Frontend curl -k https://m040tbaraspi001.de040.corpintra.net/health ``` ## 🛠️ Entwicklung ### MYP Control Center (Entwicklungs-Setup) ```bash ./myp_installer.sh # → Option 3: Entwicklungs-Setup ``` ### MYP Kiosk-Modus (Produktions-bereit) Das Backend bietet parallel zur API auch ein **vollständiges Web-Interface** für Kiosk-Betrieb: ```bash ./myp_installer.sh # → Option 2: Backend-Only Installation (mit Kiosk Web Interface) # oder # → Option 5: Granulare Installation → Kiosk-Modus installieren ``` **Kiosk-Features:** - ✅ **Web-Interface parallel zur API** - Kein separates Frontend nötig - ✅ **Touch-optimierte Bedienung** - Ideal für Raspberry Pi Touchscreens - ✅ **Automatischer Browser-Start** - Vollbild-Modus beim Boot - ✅ **systemd Integration** - Service-basierte Kiosk-Verwaltung - ✅ **Produktions-bereit** - SSL, Logging, Monitoring **Kiosk URLs:** - Hauptinterface: `https://raspberrypi/` - Dashboard: `https://raspberrypi/dashboard` - Drucker-Verwaltung: `https://raspberrypi/printers` - Job-Verwaltung: `https://raspberrypi/jobs` - Admin-Panel: `https://raspberrypi/admin` ### Manuelle Installation #### Backend Debug-Modus ```bash cd backend/app python3.11 app.py --debug ``` #### Frontend Development ```bash cd frontend npm run dev ``` #### Kiosk-Modus manuell starten ```bash # Backend starten cd backend/app && python app.py # Kiosk-Browser starten (separates Terminal) ./backend/app/start_kiosk.sh ``` ## 📁 Projektstruktur ``` Projektarbeit-MYP/ ├── myp_installer.sh # 🎯 HAUPT-INSTALLER (Control Center) ├── backend/ │ ├── app/ │ │ ├── certs/ # TLS-Zertifikate │ │ ├── database/ # SQLite-Datenbank │ │ ├── logs/ # Anwendungslogs │ │ └── app.py # Hauptanwendung │ ├── myp.service # systemd Service │ ├── requirements.txt # Python-Abhängigkeiten │ └── legacy_setup_raspberry_pi.sh # Legacy Skript ├── frontend/ │ ├── certs/ # TLS-Zertifikate │ ├── docker/ │ │ ├── caddy/ │ │ │ └── Caddyfile # Reverse Proxy Konfiguration │ │ └── legacy_deploy.sh # Legacy Skript │ ├── src/ # Next.js Anwendung │ └── docker-compose.yml ├── scripts/ │ └── legacy_generate_certs.sh # Legacy Skript ├── archiv/ │ └── myp_installer_legacy.sh # Archivierte Version └── docs/ # Dokumentation ``` ### Script-Status | Skript | Status | Verwendung | |--------|--------|------------| | `myp_installer.sh` | ✅ **AKTIV** | Haupt-Control-Center | | `*legacy_*.sh` | 📦 Legacy | Historische Versionen | | `archiv/myp_installer_legacy.sh` | 📦 Archiv | Alte Version 4.0 | ## 🔒 Sicherheit - HTTPS-only (Port 443) - Selbstsignierte TLS-Zertifikate - HTTP → HTTPS Redirect - Security Headers (HSTS, CSP, etc.) ## 📝 Logs ### Backend ```bash # systemd Journal sudo journalctl -u myp.service -f # Anwendungslogs tail -f backend/app/logs/app/app.log ``` ### Frontend ```bash # Docker Logs docker-compose logs -f # Caddy Logs docker-compose logs caddy ``` ### Kiosk-Modus ```bash # Backend Service sudo systemctl status myp.service # Kiosk-Browser Service sudo systemctl status myp-kiosk-browser.service # Kiosk-Browser Logs sudo journalctl -u myp-kiosk-browser.service -f ``` ## 🔧 Services ### Backend Services ```bash # Backend starten/stoppen sudo systemctl start myp.service sudo systemctl stop myp.service sudo systemctl restart myp.service # Kiosk-Browser starten/stoppen (falls installiert) sudo systemctl start myp-kiosk-browser.service sudo systemctl stop myp-kiosk-browser.service # Automatischen Start aktivieren/deaktivieren sudo systemctl enable myp.service sudo systemctl enable myp-kiosk-browser.service ``` ## 🆘 Troubleshooting ### MYP Control Center verwenden ```bash ./myp_installer.sh # → Option 6: Systemvoraussetzungen prüfen # → Option 7: Anwendung starten ``` ### Backend startet nicht ```bash # Service Status prüfen sudo systemctl status myp.service # Logs prüfen sudo journalctl -u myp.service --no-pager # Zertifikate prüfen ls -la backend/app/certs/ ``` ### Frontend nicht erreichbar ```bash # Container Status prüfen docker-compose ps # Netzwerk prüfen docker network ls # Zertifikate prüfen ls -la frontend/certs/ ``` ### Verbindungsprobleme ```bash # DNS auflösen nslookup raspberrypi nslookup m040tbaraspi001.de040.corpintra.net # Ports prüfen netstat -tlnp | grep :443 ``` ## 📋 Version - **Version**: 3.2-final - **Control Center**: v4.0 mit v3.2 Integration - **Build**: Production - **Installer**: MYP Control Center ## 👥 Support Bei Problemen verwenden Sie das MYP Control Center oder wenden Sie sich an das IT-Team des Mercedes-Benz Werk 040 Berlin. ## 🖥️ Zwei-Server-Setup (Produktions-Architektur) Das MYP-System ist für eine **Zwei-Server-Architektur** optimiert: ### Server-Architektur | Server | Hostname | Komponenten | URL | |--------|----------|-------------|-----| | **Frontend-Server** | `m040tbaraspi001.de040.corpintra.net` | Next.js + Docker + Caddy | `https://m040tbaraspi001.de040.corpintra.net` | | **Backend-Server** | `raspberrypi` | Flask API + Web Interface + Kiosk | `https://raspberrypi` | ### 🚀 Server-spezifische Installation (Empfohlen) Der `myp_installer.sh` erkennt automatisch den Server-Typ und bietet passende Installationsoptionen: ```bash ./myp_installer.sh # Wählen Sie: "1. Server-spezifische Installation (Empfohlen)" ``` #### Frontend-Server (m040tbaraspi001) ```bash # Automatische Erkennung: m040tbaraspi001.de040.corpintra.net # Verfügbare Optionen: # 1. Frontend installieren (Next.js + Docker) # 2. Frontend Produktions-Deployment (Port 443 mit SSL) # 3. Nur Docker & Dependencies installieren ``` #### Backend-Server (Raspberry Pi) ```bash # Automatische Erkennung: raspberrypi # Verfügbare Optionen: # 1. Backend installieren (Flask API + Web Interface) # 2. Kiosk-Modus installieren (Touch-Interface) # 3. Produktions-Setup (Backend + Kiosk + Services) # 4. Nur Python & Dependencies installieren ``` ### 🔧 Manuelle Installation #### Frontend-Server Setup ```bash # Auf m040tbaraspi001.de040.corpintra.net cd frontend/ npm install docker-compose up -d ``` #### Backend-Server Setup ```bash # Auf raspberrypi cd backend/app/ python3.11 -m pip install -r requirements.txt sudo systemctl start myp.service sudo systemctl start myp-kiosk-browser.service # Optional: Kiosk-Modus ``` ### 🌐 URLs & Zugriff #### Frontend (m040tbaraspi001) - **Haupt-URL**: `https://m040tbaraspi001.de040.corpintra.net` - **Entwicklung**: `http://localhost:3000` (npm run dev) - **Produktion**: `https://localhost:443` (Docker) #### Backend (Raspberry Pi) - **API**: `https://raspberrypi/api` - **Web Interface**: `https://raspberrypi` - **Kiosk-Modus**: `https://raspberrypi` (Vollbild-Touch-Interface) ### 🔗 Server-Kommunikation Die Server kommunizieren über HTTPS: - **Frontend → Backend**: `https://raspberrypi/api` - **OAuth Callbacks**: `https://m040tbaraspi001.de040.corpintra.net/auth/login/callback` - **Cross-Origin**: Automatisch konfiguriert für beide Domains ### 🛠️ Konfiguration #### Frontend (.env.local) ```bash # Backend-Verbindung NEXT_PUBLIC_API_URL=https://raspberrypi NEXT_PUBLIC_BACKEND_HOST=raspberrypi # Frontend-URLs NEXT_PUBLIC_FRONTEND_URL=https://m040tbaraspi001.de040.corpintra.net NEXTAUTH_URL=https://m040tbaraspi001.de040.corpintra.net ``` #### Backend (config/settings.py) ```python # Frontend-Verbindung FRONTEND_URL = "https://m040tbaraspi001.de040.corpintra.net" CORS_ORIGINS = ["https://m040tbaraspi001.de040.corpintra.net"] # Kiosk-Konfiguration KIOSK_MODE = True KIOSK_AUTO_LOGIN = True ```