MQTT-Broker Mosquitto als Docker Container installieren
Ein MQTT-Broker ist die Schnittstelle zwischen vielen IoT-Sensoren und Geräten, die Sensordaten auswerten oder Aktoren steuern. Das MQTT-Protokoll ist offen und sehr weit verbreitet. Es findet in der Industrie Anwendungen, ist aber auch in Smart Homes ist MQTT weit verbreitet.
MQTT ist ein sehr schlankes und schnelles Protokoll. Es wird in Anwendungen mit niedriger Bandbreite gerne angewendet.
MQTT funktioniert, grob gesagt, folgendermaßen: IoT-Geräte können Nachrichten versenden, die von anderen IoT-Geräten empfangen werden. Die Vermittlungsstelle ist ein sogenannter MQTT-Broker. Dieser empfängt die Nachrichten von den Clients. Gleichzeitig können diese Nachrichten von anderen Clients abonniert werden. Die Nachrichten werden in sog. Topics eingestuft, die hierarchisch angeordnet sind, z.B. Wohnzimmer/Klima/Luftfeuchtigkeit.
Home Assistant, oder ein anderer Client, kann diesen Topic abonnieren und den Nachrichteninhalt („Payload„) auswerten (z.B. 65%).

Home Assistant OS vs. Home Assistant Container
In Home Assistant OS und Supervisor gibt es ein Addon, das einen MQTT-Broker installiert. Das ist sehr einfach, komfortabel und funktioniert wohl recht zurverlässig. In den Installationsarten Home Assistant Container und Core gibt es diese Möglichkeit nicht. Hier muss man manuell einen MQTT-Broker aufsetzen.
In diesem Artikel beschäftige ich mich damit, wie man den MQTT-Brocker Mosquitto über Docker installiert. Anschließend zeige ich, wie man die Konfigurationsdatei gestaltet und eine Verbindung zu Home Assistant herstellt. Das Ergebnis ist dann ungefähr so, als hätte man das Addon installiert. Los gehts!
Schritt für Schritt: MQTT-Broker Mosquitto mit Docker installieren
Als MQTT-Broker verwende ich die weit verbreitete Software Mosquitto von Eclipse. Dieser wird auch von Home Assistant bevorzugt und ist derjenige Broker, den das Addon installieren würde.
Für diese Anleitung wird vorausgesetzt, dass Docker bereits installiert ist und eine SSH-Verbindung zum Server hergestellt werden kann.

Schritt 1: Zunächst erstellen wir ein paar Ordner, die wir später benötigen. Mosquitto wird später so konfiguriert, dass in diese Ordner alle wichtigen Dateien abgelegt werden. Dadurch kann man auf dem Filesystem des Servers Mosquitto konfigurieren und beobachten.
$ mkdir mosquitto $ mkdir mosquitto/config $ mkdir mosquitto/data $ mkdir mosquitto/log
Schritt 2: Nun wird die Konfigurationsdatei für Mosquitto erstellt. Über diese Datei kann man das Verhalten von Mosquitto steuern.
$ nano config/mosquitto.conf
persistence true persistence_location /mosquitto/data/ log_dest file /mosquitto/log/mosquitto.log log_dest stdout password_file /mosquitto/config/mosquitto.passwd allow_anonymous false listener 1883
Schritt 3: Mit dem folgenden Befehl lädt man sich das aktuelle Image von Eclipse Mosquitto auf den Server.
$ docker pull eclipse-mosquitto
Schritt 4: Mit dem folgenden Befehl wird der Docker-Container gestartet. Das ist der Schlüsselmoment, jetzt muss alles klappen.
$ docker run -it -p 1883:1883 -p 9001:9001 --name mosquitto -v /home/pi/mosquitto/config:/mosquitto/config -v /home/pi/mosquitto/data:/mosquitto/data -v /home/pi/mosquitto/log:/mosquitto/log eclipse-mosquitt
Die Flags bedeuten hierbei folgendes:
- -p 1883:1883 Der genannte Port ist die Standardeinstellung für MQTT. Alles was auf diesen Port am Server ankommt, wird in den Mosquitto-Container geleitet.
- -p 9001:9001 Über diesen Port laufen die Websocket-Anwendungen. Falls das nicht benötigt wird, kann man das weg lassen
- name mosquitto Über diesen kurzen Namen können wir den Docker-Container steuern
- -v <filesystem-Pfad>:<Container-Pfad> Die in Schritt 1 erstellten Ordner werden in den Container eingebunden
Wer lieber Docker Compose verwendet, trägt diesen Eintrag in seine *.yaml ein:
services:
eclipse-mosquitto:
stdin_open: true
tty: true
ports:
- 1883:1883
- 9001:9001
restart: unless-stopped
container_name: mosquitto
volumes:
- /home/pi/mosquitto/config:/mosquitto/config
- /home/pi/mosquitto/data:/mosquitto/data
- /home/pi/mosquitto/log:/mosquitto/log
image: eclipse-mosquitto
Schritt 5: Checken, ob der Container ordnungsgemäß läuft. In der folgenden Liste sollte eine Zeile mit dem Mosquitto-Docker auftauchen. Dieser sollte außerdem „up“ sein. Falls nicht, nochmal versuchen den Container zu starten und kontrollieren, ob er läuft.
$ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES xxxxxxxxx eclipse-mosquitto "/init" 3 minutes ago Up 2 minutes [...] mosquitto
Schritt 6: Sehr gut, der Container läuft. Es wird dringend empfohlen, den MQTT-Broker so abzusichern, dass nur angemeldete User darauf zugreifen können. Das ist ja schon in Schritt 2 in die Konfigurationsdatei geschrieben worden. Mit dem folgenden Befehl melden wir uns in der Shell innerhalb des Containers an und erstellen einen Benutzer. In diesem Beispiel mosquitto. Im Anschluss an diesen Befehl wird man zweimal gebeten, das Passwort für den User festzulegen. Ist das geschafft, läuft der MQTT-Broker auf dem Server. Herzlichen Glückwunsch!
$ docker exec -it sh // öffnet die Shell innerhalb des Dockers mosquitto_passwd -c /mosquitto/config/mosquitto.passwd mosquitto
Optional Schritt 7: Den MQTT-Broker bindet man in Home Assistant ein, indem man auf Einstellungen → Geräte und Dienste → + Integration hinzufügen klickt. Im Suchfenster nach „MQTT“ suchen und die Zugangsdaten eingeben.
Die Server-Adresse findet man übrigens am schnellsten über ifconfig heraus.

The post MQTT-Broker Mosquitto als Docker Container installieren first appeared on bejonet - Linux | Smart Home | Technik.
Viele von euch haben mich oft gefragt, wie ich meine Desktops anpasse, wenn sie meine Anpassungen in den Videos sehen. Aus diesem Grund präsentiere ich heute ein etwas anderes Format, in dem ich euch zeige, wie ich meine Desktops gestalte. Kurze Zusammenfassung der Ausgangslage: Dies ist eine Fortsetzung meines Beitrags von 2020 über die Anpassung...
Fedora Silverblue ist eine Variante des Fedora-Betriebssystems, die sich durch ihre innovative Ansätze in Bezug auf Softwareverwaltung und Systemkonfiguration auszeichnet. Hier sind einige der wichtigsten Merkmale von Fedora Silverblue Fedora Silverblue im Überblick Fedora Silverblue präsentiert eine aufregende Perspektive auf das Fedora-Betriebssystem, indem es sich auf Unveränderlichkeit, fortschrittliche Systemverwaltung und moderne Softwarebereitstellung konzentriert. Mit einem...
Nur noch wenige Monate bis zur lange erwarteten Freigabe der nächsten Ubuntu Long-Term-Support-Version (LTS), nämlich Ubuntu 24.04 LTS “Noble Numbat”. Nicht zu vergessen ist, dass Canonical im Dezember letzten Jahres einen Fahrplan geteilt hat, der zeigte, woran das Desktop-Team für Ubuntu 24.04 arbeitete. Selbst die frühere Ubuntu 23.10-Version könnte als starker Indikator dafür dienen, was...
Das GNOME-Projekt hat das dritte Point-Release für die neueste GNOME 45 “Riga” Desktop-Umgebung angekündigt. GNOME 45.3 soll nicht nur einige Fehler beheben, sondern auch Verbesserungen für Fans des GNOME-Desktops einführen. Nur wenige Wochen nach der Veröffentlichung von GNOME 45.2 bringt das Update 45.3 eine überarbeitete Version (45.3) des Mutter Fenster und Composite Managers mit. Diese...
In Gefolge von der Veröffentlichung von Linux Mint 21.3 wurde Cinnamon 6 für die Linux Mint Distros freigegeben. Nun erhält die alternative Ausgabe von Linux Mint, Linux Mint Debian Edition (LMDE) 6 ebenfalls die neueste Cinnamon Generation. Damit erhalten LMDE Nutzer nur wenige Tage nach der Freigabe von Linux Mint 21.3 das Update von Cinnamon...
Das openSUSE-Projekt hat den Nachfolger für die openSUSE Leap 15 Betriebssystemserie bestätigt: openSUSE Leap 16. Dieses wird auf der neuen Adaptable Linux Platform (ALP) von SUSE aufbauen. Für diejenigen, die sich auf die bewährte openSUSE Leap Systemverlässlichkeit verlassen, gibt es gute Neuigkeiten. Das openSUSE-Projekt arbeitet aktiv am Nachfolger, openSUSE Leap 16, und verspricht das gleiche...
Die Linux Mint Entwickler ließen sich etwas länger Zeit mit der Freigabe von Linux Mint 21.3 als erwartet. Statt als Präsent unter dem Weihnachtsbaum zu liegen, ist das dritte Point Release von Linux Mint 21 heute erschienen. Linux Mint 21.3 hatte ich bereits getestet. Mein Test gibt es hier und das YT Video dazu gibt...
Ich bedanke mich bei allen Lesern für die Treue und gute Diskussionskultur in den Kommentaren. Euch allen ein gesundes und gutes Jahr 2024. Aktuell ist noch nicht alles absehbar, was dieses Jahr kommt, was entwickelt wird. Wo genau der Fokus im Linux-Jahr 2024 liegt, werden wir sehen. Dennoch ein gewagter Ausblick, was wir 2024 erwarten...