setup.sh aktualisiert
This commit is contained in:
130
setup.sh
130
setup.sh
@@ -12,6 +12,7 @@ C_YELLOW=$'\e[1;33m' # Gelb
|
|||||||
C_RED=$'\e[1;31m' # Rot
|
C_RED=$'\e[1;31m' # Rot
|
||||||
|
|
||||||
REPO_URL="https://git.pi-farm.de/pi-farm/PiDoBot.git"
|
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}==========================================${C_DEF}"
|
||||||
echo -e "${C_CYAN}${C_BOLD}>>> J.A.R.V.I.S. - Professional Setup <<<${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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 4. SSH-Key
|
# 4. SSH-Key & Konfiguration (Silent Mode)
|
||||||
echo -e "\n${C_BLUE}${C_BOLD}--- 4. Prüfe SSH-Schlüssel...${C_DEF}"
|
echo -e "\n${C_BLUE}${C_BOLD}--- 4. Prüfe SSH-Schlüssel und Konfiguration...${C_DEF}"
|
||||||
if [ ! -f "$HOME/.ssh/id_rsa" ]; then
|
if [ ! -f "$HOME/.ssh/id_rsa" ]; then
|
||||||
ssh-keygen -t rsa -N "" -f "$HOME/.ssh/id_rsa"
|
ssh-keygen -t rsa -N "" -f "$HOME/.ssh/id_rsa"
|
||||||
echo -e "${C_GREEN}✅ SSH-Key generiert.${C_DEF}"
|
echo -e "${C_GREEN}✅ SSH-Key generiert.${C_DEF}"
|
||||||
@@ -65,6 +66,20 @@ else
|
|||||||
echo -e "${C_GREEN}✅ SSH-Key existiert bereits.${C_DEF}"
|
echo -e "${C_GREEN}✅ SSH-Key existiert bereits.${C_DEF}"
|
||||||
fi
|
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 <<EOF >> "$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
|
# 5. Static Dateien
|
||||||
echo -e "\n${C_BLUE}${C_BOLD}--- 5. Lade Frontend-Bibliotheken...${C_DEF}"
|
echo -e "\n${C_BLUE}${C_BOLD}--- 5. Lade Frontend-Bibliotheken...${C_DEF}"
|
||||||
mkdir -p source/static
|
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):"
|
echo -e "\nBitte gib die neuen Werte ein. (Drücke ENTER, um den Wert in Klammern beizubehalten):"
|
||||||
|
|
||||||
# Farbige Prompts mit </dev/tty
|
# Farbige Prompts
|
||||||
read -p "${C_CYAN}Dein Web-Benutzername [${C_YELLOW}$web_user${C_CYAN}]: ${C_DEF}" input_web_user </dev/tty
|
read -p "${C_CYAN}Dein Web-Benutzername [${C_YELLOW}$web_user${C_CYAN}]: ${C_DEF}" input_web_user </dev/tty
|
||||||
web_user=${input_web_user:-$web_user}
|
web_user=${input_web_user:-$web_user}
|
||||||
|
|
||||||
@@ -159,39 +174,57 @@ ALLOWED_TELEGRAM_USER_ID=$tg_id
|
|||||||
EOF
|
EOF
|
||||||
echo -e "${C_GREEN}✅ Konfiguration erfolgreich gespeichert.${C_DEF}"
|
echo -e "${C_GREEN}✅ Konfiguration erfolgreich gespeichert.${C_DEF}"
|
||||||
|
|
||||||
# 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/tty
|
|
||||||
else
|
|
||||||
echo -e "${C_GREEN}✅ Port 8000 ist frei.${C_DEF}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 8. Firewall Check (NEU!)
|
# ==========================================
|
||||||
echo -e "\n${C_BLUE}${C_BOLD}--- 8. Prüfe Firewall-Einstellungen...${C_DEF}"
|
# Weiche: Update vs. Neuinstallation
|
||||||
if command -v ufw >/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}"
|
if [ -f "$SERVICE_FILE" ]; then
|
||||||
sudo ufw allow 8000/tcp
|
echo -e "\n${C_BLUE}${C_BOLD}--- 7. Update-Modus: Bestehender Dienst gefunden...${C_DEF}"
|
||||||
echo -e "${C_GREEN}✅ Port 8000 (TCP) in UFW freigegeben.${C_DEF}"
|
echo -e "${C_YELLOW}Überspringe Port- und Firewall-Check, starte Dienst neu...${C_DEF}"
|
||||||
|
|
||||||
|
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://<deine-ip>: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/tty
|
||||||
else
|
else
|
||||||
echo -e "${C_GREEN}✅ UFW ist installiert, aber inaktiv. Keine Blockade zu erwarten.${C_DEF}"
|
echo -e "${C_GREEN}✅ Port 8000 ist frei.${C_DEF}"
|
||||||
fi
|
fi
|
||||||
else
|
|
||||||
echo -e "${C_GREEN}✅ Keine UFW Firewall gefunden. Überspringe Firewall-Setup.${C_DEF}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 9. Systemd Service einrichten
|
# 8. Firewall Check
|
||||||
echo -e "\n${C_BLUE}${C_BOLD}--- 9. Systemdienst (Autostart) einrichten...${C_DEF}"
|
echo -e "\n${C_BLUE}${C_BOLD}--- 8. Prüfe Firewall-Einstellungen...${C_DEF}"
|
||||||
read -p "${C_CYAN}Möchtest du J.A.R.V.I.S. als Hintergrunddienst installieren? (j/N): ${C_DEF}" setup_service </dev/tty
|
if command -v ufw >/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
|
||||||
|
|
||||||
if [[ "$setup_service" =~ ^[jJ]$ ]]; then
|
# 9. Systemd Service einrichten
|
||||||
SERVICE_FILE="/etc/systemd/system/jarvis.service"
|
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 </dev/tty
|
||||||
|
|
||||||
echo "Erstelle Service-Datei in $SERVICE_FILE..."
|
if [[ "$setup_service" =~ ^[jJ]$ ]]; then
|
||||||
sudo bash -c "cat <<EOF > $SERVICE_FILE
|
echo "Erstelle Service-Datei in $SERVICE_FILE..."
|
||||||
|
sudo bash -c "cat <<EOF > $SERVICE_FILE
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=J.A.R.V.I.S. AI Web und Telegram Bot
|
Description=J.A.R.V.I.S. AI Web und Telegram Bot
|
||||||
After=network.target
|
After=network.target
|
||||||
@@ -208,23 +241,24 @@ RestartSec=5
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF"
|
EOF"
|
||||||
|
|
||||||
echo "Aktiviere und starte den Dienst..."
|
echo "Aktiviere und starte den Dienst..."
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
sudo systemctl enable jarvis.service
|
sudo systemctl enable jarvis.service
|
||||||
sudo systemctl restart jarvis.service
|
sudo systemctl restart jarvis.service
|
||||||
|
|
||||||
echo -e "\n${C_GREEN}${C_BOLD}==========================================${C_DEF}"
|
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 "${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 "Verzeichnis: ${C_BOLD}$INSTALL_DIR${C_DEF}"
|
||||||
echo -e "Web-Interface: ${C_CYAN}http://<deine-ip>:8000${C_DEF}"
|
echo -e "Web-Interface: ${C_CYAN}http://<deine-ip>:8000${C_DEF}"
|
||||||
echo -e "Log-Ausgabe: ${C_YELLOW}sudo journalctl -u jarvis -f${C_DEF}"
|
echo -e "Log-Ausgabe: ${C_YELLOW}sudo journalctl -u jarvis -f${C_DEF}"
|
||||||
echo -e "${C_GREEN}${C_BOLD}==========================================${C_DEF}"
|
echo -e "${C_GREEN}${C_BOLD}==========================================${C_DEF}"
|
||||||
else
|
else
|
||||||
echo -e "\n${C_GREEN}${C_BOLD}==========================================${C_DEF}"
|
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 -e "${C_GREEN}✅ Setup komplett! Du kannst J.A.R.V.I.S. nun manuell starten:${C_DEF}"
|
||||||
echo "cd $INSTALL_DIR"
|
echo "cd $INSTALL_DIR"
|
||||||
echo "source venv/bin/activate"
|
echo "source venv/bin/activate"
|
||||||
echo "export PYTHONPATH=\$PYTHONPATH:\$(pwd)/source"
|
echo "export PYTHONPATH=\$PYTHONPATH:\$(pwd)/source"
|
||||||
echo "python3 -m uvicorn source.main:app --host 0.0.0.0 --port 8000"
|
echo "python3 -m uvicorn source.main:app --host 0.0.0.0 --port 8000"
|
||||||
echo -e "${C_GREEN}${C_BOLD}==========================================${C_DEF}"
|
echo -e "${C_GREEN}${C_BOLD}==========================================${C_DEF}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
Reference in New Issue
Block a user