79 lines
2.5 KiB
Bash
79 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
# Konfiguration
|
|
REPO_URL="https://git.pi-farm.de/pi-farm/PiDoBot.git"
|
|
INSTALL_DIR="pi-orchestrator"
|
|
|
|
echo ">>> Starte Setup für den Pi-Orchestrator Master..."
|
|
|
|
# 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 sshpass python3-pip python3-venv
|
|
|
|
# 3. Repository klonen
|
|
if [ ! -d "$INSTALL_DIR" ]; then
|
|
echo "--- Klone Repository von $REPO_URL..."
|
|
git clone "$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 "requirements.txt" ]; then
|
|
pip install -r 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 "./static" ]; then
|
|
echo "--- Static-Ordner anlegen und Dateien herunterladen..."
|
|
mkdir -p static
|
|
cd 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
|
|
cd ..
|
|
else
|
|
echo "--- Static-Dateien existiert bereits."
|
|
fi
|
|
echo ">>> Installation abgeschlossen!"
|
|
echo "--- Starte den Master-Server auf Port 8000..."
|
|
|
|
# 6. Programm starten
|
|
python3 -m uvicorn main:app --host 0.0.0.0 --port 8000 |