# MYP System - Installationsanleitung Dieses Dokument beschreibt die Installation des MYP-Systems, bestehend aus einem Frontend und einem Backend. ## Systemanforderungen - **Frontend**: - Raspberry Pi 3B+ oder neuer (empfohlen: Pi 4 mit mindestens 2GB RAM) - Raspbian/Raspberry Pi OS (64-bit empfohlen) - Docker und Docker Compose (werden automatisch installiert) - Internet-Zugang für die Installation - Zwei Netzwerk-Schnittstellen: - Eine mit Internet-Zugang - Eine für die Verbindung zum Backend-Netzwerk - **Backend**: - Raspberry Pi 3B+ oder neuer (empfohlen: Pi 4 mit mindestens 2GB RAM) - Raspbian/Raspberry Pi OS (64-bit empfohlen) - Docker und Docker Compose (werden automatisch installiert) - Verbindung zum Druckernetzwerk ## 1. Installation des Backends Das Backend wird auf dem ersten Raspberry Pi installiert, der mit den Smart Plugs verbunden ist. ```bash # Den Code auf den Raspberry Pi kopieren scp -r /pfad/zum/projektverzeichnis pi@raspberry-backend:/home/pi/myp # SSH-Verbindung herstellen ssh pi@raspberry-backend # In das Projektverzeichnis wechseln cd /home/pi/myp # Installations-Skript ausführbar machen und ausführen chmod +x install-backend.sh ./install-backend.sh ``` Das Skript erledigt folgende Aufgaben: - Installation von Docker und Docker Compose (falls nicht vorhanden) - Erstellung der nötigen Verzeichnisse und Dateien - Erstellung und Start des Docker-Containers - Initialisierung der Datenbank - Überprüfung, ob der Service korrekt läuft Nach erfolgreicher Installation ist das Backend unter `http://raspberry-backend:5000` erreichbar. ## 2. Installation des Frontends Das Frontend wird auf dem zweiten Raspberry Pi installiert, der mit dem Unternehmensnetzwerk verbunden ist. ```bash # Den Code auf den Raspberry Pi kopieren scp -r /pfad/zum/projektverzeichnis pi@raspberry-frontend:/home/pi/myp # SSH-Verbindung herstellen ssh pi@raspberry-frontend # In das Projektverzeichnis wechseln cd /home/pi/myp # Installations-Skript ausführbar machen und ausführen chmod +x install-frontend.sh ./install-frontend.sh ``` Das Skript erledigt folgende Aufgaben: - Installation von Docker und Docker Compose (falls nicht vorhanden) - Erstellung der benötigten Verzeichnisse und Dateien - Erstellung und Start des Docker-Containers - Überprüfung, ob der Service korrekt läuft Nach erfolgreicher Installation ist das Frontend unter `http://raspberry-frontend:3000` erreichbar. ## 3. Konfiguration der Verbindung zwischen Frontend und Backend Für die Kommunikation zwischen Frontend und Backend muss die API-URL im Frontend konfiguriert werden: 1. Die Datei `/home/pi/myp/packages/reservation-platform/.env` auf dem Frontend-Raspberry Pi bearbeiten: ``` # Basic Server Configuration RUNTIME_ENVIRONMENT=prod DB_PATH=db/sqlite.db # OAuth Configuration OAUTH_CLIENT_ID=client_id OAUTH_CLIENT_SECRET=client_secret # Backend-URL (Hostname oder IP-Adresse des Backend-Raspberry Pi) NEXT_PUBLIC_API_URL=http://raspberry-backend:5000 ``` 2. Frontend-Container neu starten: ```bash cd /home/pi/myp/packages/reservation-platform docker-compose down docker-compose up -d ``` ## 4. Wartung und Fehlerbehebung ### Logs anzeigen **Backend:** ```bash docker logs -f myp-backend ``` **Frontend:** ```bash docker logs -f myp-frontend ``` ### Container neustarten **Backend:** ```bash cd /pfad/zum/backend docker-compose restart ``` **Frontend:** ```bash cd /pfad/zum/frontend docker-compose restart ``` ### Datenbank-Reset Sollte die Datenbank zurückgesetzt werden müssen: ```bash # Auf dem Backend-Raspberry Pi cd /home/pi/myp/backend docker-compose down rm -f instance/myp.db docker-compose up -d ``` ### Docker Compose YAML-Fehler Wenn Sie einen YAML-Fehler in der Docker Compose-Datei erhalten: ``` yaml: line 12: did not find expected key ``` Überprüfen Sie folgende Punkte: 1. Die Docker Compose-Version könnte veraltet sein. Die Installationsskripte installieren automatisch die richtige Version. 2. Es könnte ein Syntaxfehler in der YAML-Datei vorliegen. Prüfen Sie insbesondere komplexe Werte wie JSON-Strings. Fehlerbehebung: ```bash # Auf dem betroffenen Server cd /home/pi/myp # Für das Backend nano backend/docker-compose.yml # Für das Frontend nano packages/reservation-platform/docker-compose.yml ``` ### Docker-Daemon läuft nicht Wenn Sie die Fehlermeldung erhalten, dass der Docker-Daemon nicht läuft: ``` Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? ``` Starten Sie den Docker-Daemon: ```bash sudo systemctl start docker # oder sudo service docker start ``` ### Container startet nicht Wenn der Container nicht startet, prüfen Sie die Logs: ```bash docker logs myp-backend # oder docker logs myp-frontend ``` ### Frontend kann nicht auf Backend zugreifen 1. Stellen Sie sicher, dass beide Server im selben Netzwerk sind 2. Überprüfen Sie die Firewall-Einstellungen 3. Stellen Sie sicher, dass der Backend-Service auf Port 5000 läuft 4. Stellen Sie sicher, dass die richtige Backend-URL in der .env-Datei des Frontends eingestellt ist ## 5. Automatischer Start beim Systemstart Die Docker-Container sind so konfiguriert, dass sie automatisch beim Neustart der Geräte starten (`restart: unless-stopped`). Sollte dies nicht funktionieren, kann der Start in die `/etc/rc.local` eingetragen werden: ```bash # Auf dem Backend-Raspberry Pi echo "cd /home/pi/myp/backend && docker-compose up -d" >> /etc/rc.local # Auf dem Frontend-Raspberry Pi echo "cd /home/pi/myp/packages/reservation-platform && docker-compose up -d" >> /etc/rc.local ``` ## 6. Technische Details - Das Backend ist eine Flask-Anwendung, die mit den Smart Plugs kommuniziert - Das Frontend ist eine Next.js-Anwendung - Beide Komponenten laufen in Docker-Containern mit Host-Netzwerkanbindung - Die Datenbanken werden in Docker-Volumes persistiert ## 7. Raspberry Pi-spezifische Anmerkungen Wenn Sie Probleme mit der Docker-Installation auf dem Raspberry Pi haben, können Sie folgende Schritte manuell ausführen: ```bash # Docker für Raspberry Pi installieren curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER # Docker Compose für die richtige Architektur installieren # Für 32-bit (armhf): sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-armv7" -o /usr/local/bin/docker-compose # Für 64-bit (arm64): sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-aarch64" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` ## 8. Unterstützung Bei Fragen oder Problemen wenden Sie sich an: - Till Tomczak (Projektentwickler)