diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..88aa1fe --- /dev/null +++ b/install.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# === 1. Root-Rechte prüfen === +if [ "$EUID" -ne 0 ]; then + echo "🚫 Bitte führe dieses Skript mit Root-Rechten aus (sudo ./install_fail2ban_discord.sh)" + exit 1 +fi + +echo "✅ Root-Rechte erkannt" + +# === 2. Webhook-Link abfragen === +read -rp "Bitte gib deinen Discord Webhook-Link ein: " DISCORD_WEBHOOK + +if [[ -z "$DISCORD_WEBHOOK" ]]; then + echo "🚫 Kein Webhook angegeben. Abbruch." + exit 1 +fi + +# === 3. Testnachricht an Webhook senden === +echo "📨 Sende Testnachricht an Discord Webhook..." +curl -H "Content-Type: application/json" \ + -X POST \ + -d '{"content": "✅ Testnachricht: Fail2Ban Discord Alert erfolgreich eingerichtet!"}' \ + "$DISCORD_WEBHOOK" + +# === 4. Webhook in .env schreiben === +echo "🔧 Trage Webhook in .env-Datei ein..." +echo "DISCORD_WEBHOOK_URL=$DISCORD_WEBHOOK" > .env + +# === 5. Python virtualenv erstellen und Abhängigkeiten installieren === +echo "🐍 Erstelle Python-Umgebung..." +python3 -m venv venv +source venv/bin/activate +pip install --upgrade pip +pip install -r requirements.txt +deactivate + +# === 6. Systemd Service erstellen === +SERVICE_PATH="/etc/systemd/system/fail2ban_discord_alert.service" + +echo "🛠️ Erstelle systemd service unter $SERVICE_PATH ..." + +cat < "$SERVICE_PATH" +[Unit] +Description=Fail2Ban Discord Webhook Monitor +After=network.target + +[Service] +Type=simple +WorkingDirectory=$(pwd) +ExecStart=$(pwd)/venv/bin/python3 $(pwd)/fail2ban_discord.py +Restart=on-failure + +[Install] +WantedBy=multi-user.target +EOF + +# === 7. Service aktivieren und starten === +echo "🔄 Aktiviere und starte fail2ban_discord_alert.service..." +systemctl daemon-reexec +systemctl daemon-reload +systemctl enable fail2ban_discord_alert.service +systemctl start fail2ban_discord_alert.service + +# === 8. Status anzeigen === +echo "📋 Status des Dienstes:" +systemctl status fail2ban_discord_alert.service --no-pager + +echo "✅ Installation abgeschlossen."