From 07bd5df3cd91a98ea0c3cbb34f9d33ee421903c6 Mon Sep 17 00:00:00 2001 From: "info@pi-farm.de" Date: Tue, 10 Mar 2026 00:54:30 +0000 Subject: [PATCH] setup.sh aktualisiert --- setup.sh | 138 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 86 insertions(+), 52 deletions(-) diff --git a/setup.sh b/setup.sh index d3586fe..4cc0013 100644 --- a/setup.sh +++ b/setup.sh @@ -12,6 +12,7 @@ C_YELLOW=$'\e[1;33m' # Gelb C_RED=$'\e[1;31m' # Rot REPO_URL="https://git.pi-farm.de/pi-farm/PiDoBot.git" +SERVICE_FILE="/etc/systemd/system/jarvis.service" echo -e "${C_CYAN}${C_BOLD}==========================================${C_DEF}" echo -e "${C_CYAN}${C_BOLD}>>> J.A.R.V.I.S. - Professional Setup <<<${C_DEF}" @@ -56,8 +57,8 @@ else exit 1 fi -# 4. SSH-Key -echo -e "\n${C_BLUE}${C_BOLD}--- 4. Prüfe SSH-Schlüssel...${C_DEF}" +# 4. SSH-Key & Konfiguration (Silent Mode) +echo -e "\n${C_BLUE}${C_BOLD}--- 4. Prüfe SSH-Schlüssel und Konfiguration...${C_DEF}" if [ ! -f "$HOME/.ssh/id_rsa" ]; then ssh-keygen -t rsa -N "" -f "$HOME/.ssh/id_rsa" echo -e "${C_GREEN}✅ SSH-Key generiert.${C_DEF}" @@ -65,6 +66,20 @@ else echo -e "${C_GREEN}✅ SSH-Key existiert bereits.${C_DEF}" fi +# SSH 'Silent Mode' einrichten, um Spam im Log zu verhindern +mkdir -p "$HOME/.ssh" +if [ ! -f "$HOME/.ssh/config" ] || ! grep -q "StrictHostKeyChecking no" "$HOME/.ssh/config"; then + echo -e "${C_YELLOW}Richte SSH Silent-Mode für lokale Netze ein...${C_DEF}" + cat <> "$HOME/.ssh/config" + +Host 192.168.* 10.* 172.* + StrictHostKeyChecking no + UserKnownHostsFile /dev/null + LogLevel ERROR +EOF + chmod 600 "$HOME/.ssh/config" +fi + # 5. Static Dateien echo -e "\n${C_BLUE}${C_BOLD}--- 5. Lade Frontend-Bibliotheken...${C_DEF}" mkdir -p source/static @@ -115,7 +130,7 @@ fi echo -e "\nBitte gib die neuen Werte ein. (Drücke ENTER, um den Wert in Klammern beizubehalten):" -# Farbige Prompts mit /dev/null 2>&1; then - if sudo ufw status | grep -qw "active"; then - echo -e "${C_YELLOW}UFW Firewall ist aktiv. Öffne Port 8000...${C_DEF}" - sudo ufw allow 8000/tcp - echo -e "${C_GREEN}✅ Port 8000 (TCP) in UFW freigegeben.${C_DEF}" - else - echo -e "${C_GREEN}✅ UFW ist installiert, aber inaktiv. Keine Blockade zu erwarten.${C_DEF}" - fi -else - echo -e "${C_GREEN}✅ Keine UFW Firewall gefunden. Überspringe Firewall-Setup.${C_DEF}" -fi +# ========================================== +# Weiche: Update vs. Neuinstallation +# ========================================== -# 9. Systemd Service einrichten -echo -e "\n${C_BLUE}${C_BOLD}--- 9. Systemdienst (Autostart) einrichten...${C_DEF}" -read -p "${C_CYAN}Möchtest du J.A.R.V.I.S. als Hintergrunddienst installieren? (j/N): ${C_DEF}" setup_service $SERVICE_FILE + sudo systemctl daemon-reload + sudo systemctl restart jarvis.service + + echo -e "\n${C_GREEN}${C_BOLD}==========================================${C_DEF}" + echo -e "${C_GREEN}✅ Update komplett! J.A.R.V.I.S. wurde erfolgreich aktualisiert und neu gestartet.${C_DEF}" + echo -e "Verzeichnis: ${C_BOLD}$INSTALL_DIR${C_DEF}" + echo -e "Web-Interface: ${C_CYAN}http://:8000${C_DEF}" + echo -e "Log-Ausgabe: ${C_YELLOW}sudo journalctl -u jarvis -f${C_DEF}" + echo -e "${C_GREEN}${C_BOLD}==========================================${C_DEF}" +else + + # 7. Port Check + echo -e "\n${C_BLUE}${C_BOLD}--- 7. Prüfe Port 8000...${C_DEF}" + if ss -tuln | grep -q ":8000 "; then + echo -e "${C_RED}⚠️ WARNUNG: Port 8000 wird bereits von einem anderen Prozess verwendet!${C_DEF}" + echo "J.A.R.V.I.S. wird möglicherweise nicht starten können. Bitte prüfe dies nach dem Setup." + read -p "Drücke ENTER, um trotzdem fortzufahren..." /dev/null 2>&1; then + if sudo ufw status | grep -qw "active"; then + echo -e "${C_YELLOW}UFW Firewall ist aktiv. Öffne Port 8000...${C_DEF}" + sudo ufw allow 8000/tcp + echo -e "${C_GREEN}✅ Port 8000 (TCP) in UFW freigegeben.${C_DEF}" + else + echo -e "${C_GREEN}✅ UFW ist installiert, aber inaktiv. Keine Blockade zu erwarten.${C_DEF}" + fi + else + echo -e "${C_GREEN}✅ Keine UFW Firewall gefunden. Überspringe Firewall-Setup.${C_DEF}" + fi + + # 9. Systemd Service einrichten + echo -e "\n${C_BLUE}${C_BOLD}--- 9. Systemdienst (Autostart) einrichten...${C_DEF}" + read -p "${C_CYAN}Möchtest du J.A.R.V.I.S. als Hintergrunddienst installieren? (j/N): ${C_DEF}" setup_service $SERVICE_FILE [Unit] Description=J.A.R.V.I.S. AI Web und Telegram Bot After=network.target @@ -208,23 +241,24 @@ RestartSec=5 WantedBy=multi-user.target EOF" - echo "Aktiviere und starte den Dienst..." - sudo systemctl daemon-reload - sudo systemctl enable jarvis.service - sudo systemctl restart jarvis.service - - echo -e "\n${C_GREEN}${C_BOLD}==========================================${C_DEF}" - echo -e "${C_GREEN}✅ Setup komplett! J.A.R.V.I.S. läuft als Dienst.${C_DEF}" - echo -e "Verzeichnis: ${C_BOLD}$INSTALL_DIR${C_DEF}" - echo -e "Web-Interface: ${C_CYAN}http://:8000${C_DEF}" - echo -e "Log-Ausgabe: ${C_YELLOW}sudo journalctl -u jarvis -f${C_DEF}" - echo -e "${C_GREEN}${C_BOLD}==========================================${C_DEF}" -else - echo -e "\n${C_GREEN}${C_BOLD}==========================================${C_DEF}" - echo -e "${C_GREEN}✅ Setup komplett! Du kannst J.A.R.V.I.S. nun manuell starten:${C_DEF}" - echo "cd $INSTALL_DIR" - echo "source venv/bin/activate" - echo "export PYTHONPATH=\$PYTHONPATH:\$(pwd)/source" - echo "python3 -m uvicorn source.main:app --host 0.0.0.0 --port 8000" - echo -e "${C_GREEN}${C_BOLD}==========================================${C_DEF}" + echo "Aktiviere und starte den Dienst..." + sudo systemctl daemon-reload + sudo systemctl enable jarvis.service + sudo systemctl restart jarvis.service + + echo -e "\n${C_GREEN}${C_BOLD}==========================================${C_DEF}" + echo -e "${C_GREEN}✅ Setup komplett! J.A.R.V.I.S. läuft als Dienst.${C_DEF}" + echo -e "Verzeichnis: ${C_BOLD}$INSTALL_DIR${C_DEF}" + echo -e "Web-Interface: ${C_CYAN}http://:8000${C_DEF}" + echo -e "Log-Ausgabe: ${C_YELLOW}sudo journalctl -u jarvis -f${C_DEF}" + echo -e "${C_GREEN}${C_BOLD}==========================================${C_DEF}" + else + echo -e "\n${C_GREEN}${C_BOLD}==========================================${C_DEF}" + echo -e "${C_GREEN}✅ Setup komplett! Du kannst J.A.R.V.I.S. nun manuell starten:${C_DEF}" + echo "cd $INSTALL_DIR" + echo "source venv/bin/activate" + echo "export PYTHONPATH=\$PYTHONPATH:\$(pwd)/source" + echo "python3 -m uvicorn source.main:app --host 0.0.0.0 --port 8000" + echo -e "${C_GREEN}${C_BOLD}==========================================${C_DEF}" + fi fi \ No newline at end of file