Eclipse Mosquitto: MQTT-Broker unter Linux installieren
Schritt-für-Schritt-Anleitung zur Installation und Verwaltung des MQTT-Brokers Eclipse Mosquitto auf einem Linux-System (Ubuntu).
MQTT ist ein leichtgewichtiges Publish/Subscribe-Protokoll, das in IoT- und OT-Umgebungen weit verbreitet ist. Im Zentrum steht der Broker: Er nimmt alle Nachrichten entgegen, prüft, welche Clients welche Themen (Topics) abonniert haben, und leitet die Nachrichten an die jeweiligen Empfänger weiter. Eclipse Mosquitto ist ein quelloffener, ressourcenschonender Broker, der sich gut für Tests und produktive Setups eignet.
Diese Anleitung zeigt herstellerunabhängig, wie du Mosquitto auf einem Linux-System (Beispiel: Ubuntu 20.04) installierst und den Dienst verwaltest.
Voraussetzungen
Du benötigst ein Linux-System (hier Ubuntu 20.04) sowie SSH- oder Terminal-Zugriff mit Rechten zum Ausführen von Befehlen über sudo.
Installation unter Ubuntu 20.04
Schritt 1. Paketindex aktualisieren. Verbinde dich per SSH mit deinem System und aktualisiere zunächst den Paketinformationsindex.
1sudo apt update
Schritt 2. Mosquitto installieren. Installiere anschliessend das Paket mosquitto.
1sudo apt install -y mosquitto
Schritt 3. Dienststatus prüfen. Das Paket sollte nun installiert sein. Überprüfe den Status des Mosquitto-Dienstes.
1sudo systemctl status mosquitto
Dienst verwalten
Nach der Installation lässt sich der Mosquitto-Dienst über systemctl steuern. Mit den folgenden Befehlen stoppst, startest oder startest du den Broker neu.
1sudo systemctl stop mosquitto2sudo systemctl start mosquitto3sudo systemctl restart mosquitto
Tipp: Standardmaessig lauscht Mosquitto auf Port 1883. In produktiven Umgebungen solltest du Authentifizierung und TLS aktivieren, statt den Broker offen zu betreiben.
Installation mit Docker
Mosquitto läuft ebenso als Container — der einfachste Weg auf einem Server mit Docker. Drei Verzeichnisse hältst du persistent: config (Konfiguration + Passwortdatei), data (gespeicherte Nachrichten) und log. Wichtig: Seit Mosquitto 2.0 lässt der Broker standardmässig KEINE Verbindungen von aussen zu — du brauchst eine eigene mosquitto.conf.
Lege zuerst die Verzeichnisse und eine Basis-Konfiguration an:
1mkdir -p mosquitto/config mosquitto/data mosquitto/log23cat > mosquitto/config/mosquitto.conf <<'EOF'4listener 18835persistence true6persistence_location /mosquitto/data/7log_dest file /mosquitto/log/mosquitto.log8allow_anonymous false9password_file /mosquitto/config/passwordfile10EOF
Starte den Broker. Das config-Verzeichnis bindest du als Ordner ein (damit du mosquitto.conf und die Passwortdatei bearbeiten kannst); Daten und Logs liegen in benannten Volumes:
1docker run -d --name mosquitto \2 -p 1883:1883 -p 9001:9001 \3 -v "$(pwd)/mosquitto/config:/mosquitto/config" \4 -v mosquitto_data:/mosquitto/data \5 -v mosquitto_log:/mosquitto/log \6 eclipse-mosquitto:2
Oder als wiederverwendbare docker-compose.yml:
1services:2 mosquitto:3 image: eclipse-mosquitto:24 container_name: mosquitto5 restart: unless-stopped6 ports:7 - "1883:1883" # MQTT8 - "9001:9001" # MQTT über WebSockets (optional)9 volumes:10 - ./mosquitto/config:/mosquitto/config11 - mosquitto_data:/mosquitto/data12 - mosquitto_log:/mosquitto/log1314volumes:15 mosquitto_data:16 mosquitto_log:
Passwortschutz & Sicherheit
Ein offener Broker nimmt von jedem Nachrichten an — im Netz ist das ein Risiko. Mit „allow_anonymous false" (oben bereits in der mosquitto.conf gesetzt) erzwingst du Authentifizierung über eine Passwortdatei.
Benutzer legst du mit dem Werkzeug „mosquitto_passwd" an. Im Docker-Setup rufst du es direkt im Container auf:
1# ersten Benutzer anlegen (-c erstellt die Datei NEU)2docker exec -it mosquitto mosquitto_passwd -c /mosquitto/config/passwordfile meinuser34# weitere Benutzer hinzufügen (OHNE -c, sonst wird die Datei überschrieben)5docker exec -it mosquitto mosquitto_passwd /mosquitto/config/passwordfile zweiteruser67# Broker neu starten, damit die Änderungen greifen8docker restart mosquitto
Ohne Docker (apt-Installation) funktioniert derselbe Befehl direkt: „sudo mosquitto_passwd -c /etc/mosquitto/passwd meinuser", dazu in /etc/mosquitto/conf.d/ eine .conf mit „allow_anonymous false" und „password_file /etc/mosquitto/passwd".
Danach verbindest du dich nur noch mit Benutzer und Passwort — Test mit den mitgelieferten Clients:
1# abonnieren2mosquitto_sub -h DEIN-SERVER -t test/# -u meinuser -P meinpasswort34# in einem zweiten Terminal veröffentlichen5mosquitto_pub -h DEIN-SERVER -t test/temp -m "21.5" -u meinuser -P meinpasswort
Gib Port 1883 niemals ungeschützt ins Internet frei. Aktiviere die Authentifizierung (Passwortdatei) und für den Transport idealerweise TLS (Port 8883 mit Zertifikaten) — sonst sind Benutzername und Passwort im Klartext unterwegs.
Fazit
Mit wenigen Befehlen steht ein funktionsfähiger MQTT-Broker bereit: apt installiert das Paket, systemctl steuert den Dienst. Damit hast du die Basis, um Clients und Tools wie Node-RED oder mosquitto_pub/mosquitto_sub anzubinden und MQTT-Nachrichten auszutauschen.
