#!/bin/bash # Konfiguration REPO_URL="https://git.pi-farm.de/pi-farm/PiDoBot.git" INSTALL_DIR="jarvis-ai" echo ">>> Starte Setup für J.A.R.V.I.S. - AI ..." # 1. Prüfen, ob Git installiert ist, ansonsten installieren if ! command -v git &> /dev/null; then echo "--- Git nicht gefunden. Installiere Git..." sudo apt-get update sudo apt-get install -y git else echo "--- Git ist bereits installiert." fi # 2. Weitere zwingende System-Abhängigkeiten installieren # sshpass: Für das automatische Kopieren des SSH-Keys auf neue Nodes # python3-venv: Für die isolierte Python-Umgebung echo "--- Installiere benötigte System-Pakete..." sudo apt-get update sudo apt-get install -y wget sshpass python3-pip python3-venv # 3. Repository klonen if [ ! -d "$INSTALL_DIR" ]; then echo "--- Klone Repository von $REPO_URL..." git clone --branch dev --single-branch "$REPO_URL" "$INSTALL_DIR" else echo "--- Verzeichnis $INSTALL_DIR existiert bereits. Überspringe Klonen..." fi # In das Verzeichnis wechseln cd "$INSTALL_DIR" || exit # 4. Virtual Environment und Python-Abhängigkeiten einrichten echo "--- Erstelle Python Virtual Environment..." python3 -m venv venv source venv/bin/activate echo "--- Installiere Python-Pakete aus requirements.txt..." pip install --upgrade pip if [ -f "source/requirements.txt" ]; then pip install -r source/requirements.txt else echo "FEHLER: requirements.txt nicht im Repository gefunden!" exit 1 fi # 5. SSH-Key für den Master prüfen/erstellen (für passwortlosen Zugriff auf Nodes) if [ ! -f "$HOME/.ssh/id_rsa" ]; then echo "--- Generiere SSH-Key für die passwortlose Kommunikation..." ssh-keygen -t rsa -N "" -f "$HOME/.ssh/id_rsa" else echo "--- SSH-Key existiert bereits." fi # 6. Static Ordner anlegen und Dateien herunterladen if [ ! -f "source/static" ]; then echo "--- Static-Ordner anlegen und Dateien herunterladen..." mkdir -p source/static cd source/static # GridStack wget https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack.min.css wget https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all.js # Xterm wget https://cdn.jsdelivr.net/npm/xterm@5.1.0/css/xterm.css wget https://cdn.jsdelivr.net/npm/xterm@5.1.0/lib/xterm.js # Xterm Fit Addon wget https://cdn.jsdelivr.net/npm/xterm-addon-fit@0.7.0/lib/xterm-addon-fit.js # marked.js wget https://cdn.jsdelivr.net/npm/marked/marked.min.js cd ../../ else echo "--- Static-Dateien existieren bereits." fi echo ">>> Installation abgeschlossen!" echo "--- Starte J.A.R.V.I.S. - AI auf Port 8000..." # 6. Programm starten export PYTHONPATH=$PYTHONPATH:$(pwd)/source python3 -m uvicorn source.main:app --host 0.0.0.0 --port 8000