← Anleitungen
MQTT & KonnektivitätEinsteiger2 Min

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 mosquitto
2sudo systemctl start mosquitto
3sudo 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/log
2
3cat > mosquitto/config/mosquitto.conf <<'EOF'
4listener 1883
5persistence true
6persistence_location /mosquitto/data/
7log_dest file /mosquitto/log/mosquitto.log
8allow_anonymous false
9password_file /mosquitto/config/passwordfile
10EOF

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:2
4 container_name: mosquitto
5 restart: unless-stopped
6 ports:
7 - "1883:1883" # MQTT
8 - "9001:9001" # MQTT über WebSockets (optional)
9 volumes:
10 - ./mosquitto/config:/mosquitto/config
11 - mosquitto_data:/mosquitto/data
12 - mosquitto_log:/mosquitto/log
13
14volumes:
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 meinuser
3
4# weitere Benutzer hinzufügen (OHNE -c, sonst wird die Datei überschrieben)
5docker exec -it mosquitto mosquitto_passwd /mosquitto/config/passwordfile zweiteruser
6
7# Broker neu starten, damit die Änderungen greifen
8docker 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# abonnieren
2mosquitto_sub -h DEIN-SERVER -t test/# -u meinuser -P meinpasswort
3
4# in einem zweiten Terminal veröffentlichen
5mosquitto_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.