#!/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 ""