Projektarbeit-MYP/INSTALL.md
Till Tomczak 05bd3f3f22 Behebe YAML-Syntax-Fehler in Docker Compose und verbessere Installationsskripte
• Korrigiere YAML-Syntax-Fehler in docker-compose.yml-Dateien
• Füge automatische Docker-Installation für Raspberry Pi hinzu
• Aktualisiere Installationsdokumentation mit Fehlerbehebungstipps
• Verwende durchgängig docker-compose statt docker compose für bessere Kompatibilität

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-31 14:58:01 +02:00

6.6 KiB

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.

# 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.

# 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
  1. Frontend-Container neu starten:
cd /home/pi/myp/packages/reservation-platform
docker-compose down
docker-compose up -d

4. Wartung und Fehlerbehebung

Logs anzeigen

Backend:

docker logs -f myp-backend

Frontend:

docker logs -f myp-frontend

Container neustarten

Backend:

cd /pfad/zum/backend
docker-compose restart

Frontend:

cd /pfad/zum/frontend
docker-compose restart

Datenbank-Reset

Sollte die Datenbank zurückgesetzt werden müssen:

# 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:

# 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:

sudo systemctl start docker
# oder
sudo service docker start

Container startet nicht

Wenn der Container nicht startet, prüfen Sie die Logs:

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:

# 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:

# 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)