Eclipse Mosquitto ist der am weitesten verbreitete Open-Source-MQTT-Broker: klein, schnell und für praktisch jedes Betriebssystem verfügbar. Dieses Tutorial zeigt dir, wie du Mosquitto unter Ubuntu, Debian, Windows und macOS installierst, ihn als Hintergrunddienst laufen lässt, mit den Kommandozeilen-Clients prüfst und die häufigste Falle von Mosquitto 2.x umgehst – den Broker, der Remote-Verbindungen stillschweigend ablehnt.
Neu bei MQTT? Lies zuerst Was ist MQTT?; wenn du lieber nichts auf dem Host installieren willst, sieh dir Mosquitto in Docker betreiben an.
Mosquitto unter Ubuntu und Debian installieren
Mosquitto ist in den Standard-Repositorys von Ubuntu und Debian enthalten. Broker und CLI-Clients sind getrennte Pakete, installiere also beide:
sudo apt update
sudo apt install -y mosquitto mosquitto-clientsDistributionspakete hinken den Upstream-Releases oft hinterher. Wenn du unter Ubuntu die neueste Version brauchst, stellt das Mosquitto-Projekt ein PPA bereit:
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt update
sudo apt install -y mosquitto mosquitto-clientsPrüfe, was du bekommen hast:
mosquitto -h | head -n 1Mosquitto als systemd-Dienst betreiben
Das Debian-Paket registriert eine systemd-Unit mosquitto und startet sie meist sofort. Verwalte sie mit den üblichen Befehlen:
sudo systemctl enable --now mosquitto # start now and at boot
sudo systemctl status mosquitto # is it running?
sudo systemctl restart mosquitto # after editing the config
journalctl -u mosquitto -f # follow the logsDie Hauptkonfigurationsdatei ist /etc/mosquitto/mosquitto.conf. Sie bindet jede *.conf-Datei in /etc/mosquitto/conf.d/ ein – der sauberste Ort für deine eigenen Einstellungen.
Mosquitto unter Windows installieren
- Lade den Windows-Installer (64-Bit-
.exe) von der offiziellen Download-Seite untermosquitto.org/downloadherunter. - Führe ihn aus. Lass die Komponente Service ausgewählt, wenn Mosquitto als Windows-Dienst laufen soll. Der Standard-Installationspfad ist
C:\Program Files\mosquitto. - Füge diesen Ordner zu deinem
PATHhinzu, damitmosquitto_pubundmosquitto_subin jedem Terminal funktionieren.
Starte den Dienst aus einer PowerShell oder Eingabeaufforderung mit Administratorrechten:
net start mosquitto
# or run in the foreground with verbose logging:
cd "C:\Program Files\mosquitto"
.\mosquitto.exe -c mosquitto.conf -vMosquitto unter macOS installieren
Mit Homebrew ist es ein Einzeiler, und der Service-Manager von Homebrew hält ihn im Hintergrund am Laufen:
brew install mosquitto
brew services start mosquitto # run as a background service
brew services info mosquitto # check statusDie Konfigurationsdatei liegt unter dem Homebrew-Präfix: /opt/homebrew/etc/mosquitto/mosquitto.conf auf Apple Silicon bzw. /usr/local/etc/mosquitto/mosquitto.conf auf Intel-Macs. Die Clients sind in derselben Formula enthalten.
Die Installation mit mosquitto_sub und mosquitto_pub prüfen
Öffne zwei Terminals auf dem Rechner, auf dem der Broker läuft. Subscribe im ersten:
mosquitto_sub -h localhost -t 'test/#' -vPublishe aus dem zweiten:
mosquitto_pub -h localhost -t 'test/hello' -m 'Mosquitto works'Terminal 1 sollte test/hello Mosquitto works ausgeben. Für alle Flags halte unser Cheat Sheet zu mosquitto_pub und mosquitto_sub griffbereit.
Die Falle „Local only mode“ in Mosquitto 2.x
Der Test auf localhost klappt, aber ein Client auf einem anderen Rechner bekommt connection refused. Das ist Absicht. Seit Version 2.0 bindet sich Mosquitto nur an das Loopback-Interface, wenn mosquitto.conf keinen Listener definiert, und loggt etwa:
Starting in local only mode. Connections will only be possible from clients running on this machine.
Create a configuration file which defines a listener to allow remote access.Außerdem setzt Mosquitto 2.x standardmäßig allow_anonymous false, sobald du einen Listener definierst. Den Port zu öffnen reicht also nicht – du musst auch festlegen, wie sich Clients authentifizieren. Lege eine kleine Konfigurationsdatei an:
listener 1883
allow_anonymous truelistener 1883
allow_anonymous false
password_file /etc/mosquitto/passwdStarte den Broker neu (sudo systemctl restart mosquitto), und der Port ist aus dem Netzwerk erreichbar. Wie du die Passwortdatei anlegst und ACLs sowie TLS ergänzt, zeigen wir Schritt für Schritt unter Mosquitto absichern. Um eine Konfiguration zu bauen, ohne Direktiven auswendig zu lernen, nutze den mosquitto.conf-Generator.
Optional: WebSockets aktivieren
Browser-Clients können kein rohes TCP nutzen. Um deinen Broker von einer Webseite aus zu testen, füge einen zweiten Listener mit dem WebSockets-Protokoll hinzu (siehe MQTT über WebSockets und MQTT-Ports):
listener 9001
protocol websocketsBeachte, dass eine per HTTPS ausgelieferte Seite nur wss://-Verbindungen öffnen kann – für einen Browser-Client im öffentlichen Web brauchst du auf diesem Listener also auch TLS. Bevor du so weit gehst, kannst du MQTT im Browser gegen einen öffentlichen Test-Broker kennenlernen:
Im Online-MQTT-Client ausprobieren
Wo Mosquitto seine Dateien ablegt
| Plattform | Konfiguration | Logs |
|---|---|---|
| Ubuntu / Debian | /etc/mosquitto/mosquitto.conf + conf.d/ | /var/log/mosquitto/mosquitto.log und journalctl -u mosquitto |
| Windows | C:\Program Files\mosquitto\mosquitto.conf | Dort, wohin log_dest file zeigt; sonst -v im Vordergrund nutzen |
| macOS (Homebrew) | $(brew --prefix)/etc/mosquitto/mosquitto.conf | brew services info mosquitto zeigt den Log-Pfad |
Egal auf welcher Plattform: Wenn etwas nicht startet, führe mosquitto -c <path-to-conf> -v in einem Terminal aus – so werden Konfigurationsfehler direkt ausgegeben, statt in einem Dienst-Log zu verschwinden. Stoppe vorher den Dienst, sonst scheitert die Vordergrund-Instanz, weil der Port bereits belegt ist.
Fehlerbehebung bei einer frischen Installation
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Connection refused von einem anderen Host | Local-only-Modus (kein Listener) | listener 1883 hinzufügen und neu starten |
| „not authorised“ / CONNACK-Code 5 | Anonymer Zugriff deaktiviert | -u/-P übergeben oder eine Passwortdatei konfigurieren |
| „Address already in use“ | Ein anderer Broker oder eine andere Instanz belegt Port 1883 | Beenden oder mit sudo ss -ltnp | grep 1883 prüfen |
| Dienst startet nach einer Konfigurationsänderung nicht | Tippfehler oder falsche Dateiberechtigungen | mosquitto -c /etc/mosquitto/mosquitto.conf -v im Vordergrund ausführen, um den Fehler zu sehen |
Zu weiteren CONNACK-Codes und Timeouts siehe den Leitfaden zu MQTT-Verbindungsfehlern.
Nächste Schritte
- Sichere ihn mit Passwörtern, ACLs und TLS ab: Mosquitto-Authentifizierung.
- Lieber Container? Mosquitto in Docker betreiben.
- Vergleiche Mosquitto mit anderen Brokern in unserem Broker-Verzeichnis.
Häufig gestellte Fragen
Warum akzeptiert Mosquitto nur Verbindungen von localhost?
Seit Mosquitto 2.0 startet der Broker im Local-only-Modus, wenn kein Listener konfiguriert ist. Füge in mosquitto.conf eine Listener-Zeile wie listener 1883 hinzu, dazu entweder allow_anonymous true oder eine password_file, und starte den Broker neu.
Werden mit mosquitto unter Ubuntu auch mosquitto_pub und mosquitto_sub installiert?
Nein. Unter Debian und Ubuntu stecken die Kommandozeilen-Clients im separaten Paket mosquitto-clients. Installiere es mit sudo apt install mosquitto-clients.
Wo liegt die Datei mosquitto.conf?
Unter Linux in /etc/mosquitto/mosquitto.conf, unter Windows im Installationsordner (meist C:\Program Files\mosquitto) und mit Homebrew im etc-Verzeichnis von Homebrew, zum Beispiel /opt/homebrew/etc/mosquitto/mosquitto.conf auf Apple Silicon.