Home Assistant entschlacken: Mosquitto als Docker-Container auf Unraid

Home Assistant · Unraid · MQTT

Nachdem ich mein Home-Assistant-Setup etwas entschlackt habe, war einer der ersten Dienste, die ich ausgelagert habe, der Mosquitto MQTT Broker. In diesem Beitrag zeige ich, warum ich Mosquitto auf meinem Unraid-Server als eigenen Docker-Container betreibe und wie Home Assistant damit verbunden wird.

Kurz gesagt

Home Assistant bleibt bei mir die zentrale Oberfläche für Geräte, Zustände und Automationen. Mosquitto übernimmt sauber getrennt die MQTT-Kommunikation. Unraid stellt die Container-Plattform bereit.

Unraid
└── Docker
    ├── Mosquitto
    ├── Node-RED
    ├── InfluxDB
    ├── Grafana
    └── Frigate

Warum ich Mosquitto ausgelagert habe

Am Anfang ist es bequem, möglichst viel direkt in Home Assistant laufen zu lassen. Add-on installieren, starten, einrichten und fertig. Für kleinere Setups ist das völlig in Ordnung.

Bei mir wurde das System mit der Zeit aber größer. Es kamen mehr Geräte, mehr Automationen, mehr Datenpunkte und weitere Dienste dazu. Irgendwann wollte ich die einzelnen Aufgaben klarer voneinander trennen.

Home Assistant

Zentrale Oberfläche, Geräteverwaltung, Dashboards und einfache Automationen.

Mosquitto

Stabiler MQTT Broker für die Kommunikation zwischen Geräten und Diensten.

Node-RED

Komplexere Logik, Flows, Bedingungen und gut nachvollziehbares Debugging.

Der Mosquitto Broker ist dabei eine wichtige Basis. Wenn Home Assistant neu startet oder ich daran arbeite, soll MQTT nicht automatisch davon betroffen sein. Genau deshalb läuft Mosquitto bei mir als eigener Docker-Container auf Unraid.

Warum Unraid dafür gut passt

Unraid ist bei mir ohnehin die zentrale Plattform für mehrere Dienste. Home Assistant, Node-RED, Mosquitto, InfluxDB, Grafana und weitere Container laufen auf dem Homeserver. Dadurch ist es für mich logisch, auch MQTT sauber dort zu betreiben.

Der Vorteil: Jeder Dienst bleibt für sich wartbar. Ich kann Home Assistant aktualisieren, ohne Mosquitto anzufassen. Ich kann Mosquitto prüfen, ohne in den Home-Assistant-Logs suchen zu müssen. Und ich kann meine Container-Struktur sauber über Unraid verwalten.

Mein Ziel: Nicht alles komplizierter machen, sondern die Struktur klarer bekommen. Jeder Dienst soll genau das machen, wofür er gedacht ist.

Meine Ordnerstruktur unter Unraid

Für Mosquitto nutze ich unter Unraid eine typische appdata-Struktur. Dadurch bleiben Konfiguration, Daten und Logs auch dann erhalten, wenn der Container aktualisiert oder neu erstellt wird.

/mnt/user/appdata/mosquitto/config
/mnt/user/appdata/mosquitto/data
/mnt/user/appdata/mosquitto/log

config

Hier liegt die Mosquitto-Konfiguration, zum Beispiel die mosquitto.conf und die Passwortdatei.

data

In diesem Ordner speichert Mosquitto persistente Daten, falls Persistence aktiviert ist.

log

Hier können Mosquitto-Logs abgelegt werden, wenn man sie zusätzlich als Datei speichern möchte.

Mosquitto als Docker-Container

Als Docker-Image nutze ich:

eclipse-mosquitto:2

Die wichtigsten Container-Pfade sind:

Host-Pfad:      /mnt/user/appdata/mosquitto/config
Container-Pfad: /mosquitto/config

Host-Pfad:      /mnt/user/appdata/mosquitto/data
Container-Pfad: /mosquitto/data

Host-Pfad:      /mnt/user/appdata/mosquitto/log
Container-Pfad: /mosquitto/log

Für den normalen MQTT-Betrieb reicht in den meisten Fällen Port 1883. Optional kann zusätzlich Port 9001 für WebSockets genutzt werden. Für meine Home-Assistant-Anbindung ist aber vor allem 1883 relevant.

1883 TCP  = MQTT
9001 TCP  = MQTT über WebSocket, optional

Mosquitto-Konfiguration

Im Ordner /mnt/user/appdata/mosquitto/config liegt die Datei mosquitto.conf. Eine einfache Grundkonfiguration kann so aussehen:

listener 1883

allow_anonymous false
password_file /mosquitto/config/passwd

persistence true
persistence_location /mosquitto/data/

log_dest stdout
log_dest file /mosquitto/log/mosquitto.log

Wichtig: Mit allow_anonymous false dürfen sich Clients nicht anonym verbinden. Geräte und Dienste brauchen also Benutzername und Passwort. Das ist im Heimnetz nicht immer zwingend, aber deutlich sauberer.

MQTT-Benutzer anlegen

Damit Home Assistant sich später verbinden kann, braucht Mosquitto einen Benutzer. Im Mosquitto-Container kann man dafür eine Passwortdatei anlegen.

mosquitto_passwd -c /mosquitto/config/passwd homeassistant

Danach wird ein Passwort abgefragt. Wenn später weitere Benutzer ergänzt werden sollen, nutzt man den Befehl ohne -c, damit die bestehende Passwortdatei nicht überschrieben wird.

mosquitto_passwd /mosquitto/config/passwd weiterer_user

Nach dem Anlegen oder Ändern der Passwortdatei sollte der Mosquitto-Container einmal neu gestartet werden.

Home Assistant mit dem externen Broker verbinden

In Home Assistant wird anschließend die MQTT-Integration eingerichtet. Dabei wird nicht mehr ein internes Add-on verwendet, sondern der externe Mosquitto Broker auf Unraid.

Einstellungen
→ Geräte & Dienste
→ Integration hinzufügen
→ MQTT

Die Daten sehen ungefähr so aus:

Broker:   IP-Adresse deines Unraid-Servers
Port:     1883
Benutzer: homeassistant
Passwort: dein MQTT-Passwort

Beispiel:

Broker: 192.168.178.50
Port:   1883

Die IP-Adresse muss natürlich zur eigenen Unraid-Installation passen. Sinnvoll ist eine feste IP-Adresse oder eine DHCP-Reservierung im Router, damit sich die Adresse des Servers nicht plötzlich ändert.

Testen, ob MQTT funktioniert

Nach dem Einrichten sollte geprüft werden, ob Home Assistant den Broker sauber erreicht. In Home Assistant kann man unter der MQTT-Integration testen, ob Nachrichten veröffentlicht oder empfangen werden können.

Ein einfaches Test-Topic könnte zum Beispiel so aussehen:

test/gerlcraft

Später können eigene Topics dazukommen, zum Beispiel für Shellys, ESP32-Projekte oder eigene Sensoren.

shelly/...
esp32/...
homeassistant/...

Nicht vergessen: Wenn vorher ein anderer MQTT Broker verwendet wurde, müssen auch die Geräte und Dienste auf den neuen Broker zeigen. Sonst sucht man später an der falschen Stelle nach Fehlern.

Warum das gut zu Node-RED passt

Node-RED und MQTT passen für mich sehr gut zusammen. In Node-RED kann ich MQTT-Nachrichten abonnieren, auswerten, verändern und wieder veröffentlichen. Gerade bei komplexeren Logiken ist das deutlich angenehmer als verschachtelte Automationen.

Ein typischer Ablauf kann so aussehen:

Sensor sendet MQTT-Wert
→ Mosquitto empfängt die Nachricht
→ Node-RED verarbeitet die Logik
→ Home Assistant zeigt den Status an
→ Gerät oder Automation reagiert

Das ist sauber nachvollziehbar und lässt sich gut debuggen. Genau deshalb bleibt MQTT bei mir eine zentrale Kommunikationsschicht zwischen den einzelnen Diensten.

Was man beachten sollte

  • Der Unraid-Server sollte eine feste IP-Adresse haben.
  • Die Mosquitto-Zugangsdaten sollten sauber dokumentiert werden.
  • Die Ordner unter appdata sollten ins Backup aufgenommen werden.
  • Geräte und Dienste müssen auf den neuen Broker umgestellt werden.
  • Nach Änderungen an der Passwortdatei sollte der Container neu gestartet werden.

Mein Fazit

Mosquitto als eigenen Docker-Container auf Unraid zu betreiben, passt für mein Setup deutlich besser, als alles direkt in Home Assistant laufen zu lassen.

Home Assistant bleibt dadurch schlanker. Mosquitto läuft unabhängig. Node-RED kann sauber mit MQTT arbeiten. Und Unraid übernimmt die Rolle als zentrale Plattform für meine Dienste.

Für kleine Smart-Home-Setups ist das nicht zwingend notwendig. Aber sobald das System wächst, lohnt sich diese Trennung meiner Meinung nach.

Weitergedacht

Home Assistant bleibt die Zentrale – aber nicht jeder Dienst muss darin laufen.

Für mich ist die Auslagerung von Mosquitto ein weiterer Schritt zu einem saubereren Smart-Home-Setup. Nicht komplizierter, sondern besser getrennt und leichter wartbar.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert