115 lines
3.8 KiB
Bash
115 lines
3.8 KiB
Bash
#!/bin/bash
|
|
|
|
# MQTT Setup Script - Erstellt User für Mosquitto
|
|
# ================================================
|
|
|
|
set -e
|
|
|
|
# Lade Umgebungsvariablen aus .env
|
|
if [ ! -f .env ]; then
|
|
echo "❌ Fehler: .env Datei nicht gefunden!"
|
|
echo "Bitte erstelle eine .env Datei basierend auf .env.example"
|
|
exit 1
|
|
fi
|
|
|
|
# Lade .env und exportiere Variablen
|
|
set -a
|
|
source .env
|
|
set +a
|
|
|
|
echo "================================================"
|
|
echo "MQTT Server Setup - Benutzer erstellen"
|
|
echo "================================================"
|
|
echo ""
|
|
|
|
# Validiere dass alle benötigten Variablen gesetzt sind
|
|
required_vars=(
|
|
"MQTT_ADMIN_USERNAME" "MQTT_ADMIN_PASSWORD"
|
|
"MQTT_PANEL_USERNAME" "MQTT_PANEL_PASSWORD"
|
|
"MQTT_TESTUSER_USERNAME" "MQTT_TESTUSER_PASSWORD"
|
|
"MQTT_DEVICE1_USERNAME" "MQTT_DEVICE1_PASSWORD"
|
|
"MQTT_DEVICE2_USERNAME" "MQTT_DEVICE2_PASSWORD"
|
|
"MQTT_MONITOR_USERNAME" "MQTT_MONITOR_PASSWORD"
|
|
)
|
|
|
|
for var in "${required_vars[@]}"; do
|
|
if [ -z "${!var}" ]; then
|
|
echo "❌ Fehler: $var ist nicht in .env definiert!"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Prüfe ob Docker läuft
|
|
if ! docker info > /dev/null 2>&1; then
|
|
echo "❌ Fehler: Docker ist nicht gestartet!"
|
|
exit 1
|
|
fi
|
|
|
|
# Prüfe ob Container läuft
|
|
if ! docker ps | grep -q mosquitto-mqtt; then
|
|
echo "⚠️ Mosquitto Container läuft nicht. Starte Container..."
|
|
docker-compose up -d mosquitto
|
|
echo "⏳ Warte 5 Sekunden bis Mosquitto gestartet ist..."
|
|
sleep 5
|
|
fi
|
|
|
|
echo "📝 Erstelle Benutzer in der Passwort-Datei..."
|
|
echo ""
|
|
|
|
# Admin User
|
|
echo "➡️ Erstelle Admin User (Vollzugriff)"
|
|
docker exec -it mosquitto-mqtt mosquitto_passwd -b /mosquitto/config/passwords.txt "$MQTT_ADMIN_USERNAME" "$MQTT_ADMIN_PASSWORD"
|
|
echo " ✅ User: $MQTT_ADMIN_USERNAME erstellt"
|
|
|
|
# Panel User für Web UI
|
|
echo "➡️ Erstelle Panel User (für Web Dashboard)"
|
|
docker exec -it mosquitto-mqtt mosquitto_passwd -b /mosquitto/config/passwords.txt "$MQTT_PANEL_USERNAME" "$MQTT_PANEL_PASSWORD"
|
|
echo " ✅ User: $MQTT_PANEL_USERNAME erstellt"
|
|
|
|
# Test User
|
|
echo "➡️ Erstelle Test User"
|
|
docker exec -it mosquitto-mqtt mosquitto_passwd -b /mosquitto/config/passwords.txt "$MQTT_TESTUSER_USERNAME" "$MQTT_TESTUSER_PASSWORD"
|
|
echo " ✅ User: $MQTT_TESTUSER_USERNAME erstellt"
|
|
|
|
# Device User
|
|
echo "➡️ Erstelle Device1 User"
|
|
docker exec -it mosquitto-mqtt mosquitto_passwd -b /mosquitto/config/passwords.txt "$MQTT_DEVICE1_USERNAME" "$MQTT_DEVICE1_PASSWORD"
|
|
echo " ✅ User: $MQTT_DEVICE1_USERNAME erstellt"
|
|
|
|
echo "➡️ Erstelle Device2 User"
|
|
docker exec -it mosquitto-mqtt mosquitto_passwd -b /mosquitto/config/passwords.txt "$MQTT_DEVICE2_USERNAME" "$MQTT_DEVICE2_PASSWORD"
|
|
echo " ✅ User: $MQTT_DEVICE2_USERNAME erstellt"
|
|
|
|
# Monitor User (Read-Only)
|
|
echo "➡️ Erstelle Monitor User (Read-Only)"
|
|
docker exec -it mosquitto-mqtt mosquitto_passwd -b /mosquitto/config/passwords.txt "$MQTT_MONITOR_USERNAME" "$MQTT_MONITOR_PASSWORD"
|
|
echo " ✅ User: $MQTT_MONITOR_USERNAME erstellt"
|
|
|
|
echo ""
|
|
echo "================================================"
|
|
echo "✅ Setup abgeschlossen!"
|
|
echo "================================================"
|
|
echo ""
|
|
echo "Erstellte User:"
|
|
echo " - $MQTT_ADMIN_USERNAME (Vollzugriff)"
|
|
echo " - $MQTT_PANEL_USERNAME (für Web Dashboard)"
|
|
echo " - $MQTT_TESTUSER_USERNAME (normaler User)"
|
|
echo " - $MQTT_DEVICE1_USERNAME (IoT Device 1)"
|
|
echo " - $MQTT_DEVICE2_USERNAME (IoT Device 2)"
|
|
echo " - $MQTT_MONITOR_USERNAME (Read-Only)"
|
|
echo ""
|
|
echo "⚠️ Passwörter sind in der .env Datei definiert"
|
|
echo ""
|
|
echo "Mosquitto neu laden..."
|
|
docker exec mosquitto-mqtt mosquitto -c /mosquitto/config/mosquitto.conf &
|
|
|
|
echo ""
|
|
echo "🚀 MQTT Broker läuft auf:"
|
|
echo " - MQTT: localhost:1883"
|
|
echo " - WebSocket: ws://localhost:9001"
|
|
echo " - Web Dashboard: http://localhost:8080"
|
|
echo ""
|
|
echo "📡 Öffentliches Topic ohne Authentifizierung:"
|
|
echo " - public/*"
|
|
echo ""
|