MQTT ist ein leichtgewichtiges Publish/Subscribe-Protokoll, das in der IoT-Welt weit verbreitet ist. Ein MQTT-Broker wie Mosquitto kann effizient in Docker betrieben werden, wodurch Deployment, Updates und Skalierung stark vereinfacht werden. In diesem Tutorial zeigen wir, wie man Mosquitto in Docker für IoT-Szenarien sicher und performant aufsetzt.
Docker-Image auswählen und starten
Das offizielle Mosquitto-Image bietet alle notwendigen Features für den schnellen Einstieg:
docker run -d
--name mosquitto
-p 1883:1883
-p 9001:9001
-v mosquitto-data:/mosquitto/data
-v mosquitto-log:/mosquitto/log
-v mosquitto-config:/mosquitto/config
eclipse-mosquitto:2
- Port 1883 ist Standard-MQTT
- Port 9001 ermöglicht WebSocket-Zugriffe
- Volumes sichern Konfiguration, Daten und Logs persistent
Konfiguration von Mosquitto
Die Broker-Konfiguration erfolgt über Dateien im /mosquitto/config-Volume. Minimal ist eine mosquitto.conf erforderlich:
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous false
password_file /mosquitto/config/passwordfile
Benutzer und Passwörter setzen
docker exec -it mosquitto mosquitto_passwd -c /mosquitto/config/passwordfile username
- Der Broker verlangt nun Authentifizierung
- Passwörter werden in der Datei
passwordfilegespeichert - Für Produktion TLS einsetzen
Sicherheit und TLS
TLS schützt Datenübertragungen. Zertifikate können aus LetsEncrypt oder internen CA stammen:
listener 8883
cafile /mosquitto/config/ca.crt
certfile /mosquitto/config/server.crt
keyfile /mosquitto/config/server.key
- Port 8883 für verschlüsselte MQTT-Verbindungen
- WebSocket TLS analog konfigurieren
Netzwerk-Isolation
MQTT-Broker sollte nur von den IoT-Geräten oder Services erreichbar sein:
docker network create mqtt-net
docker run -d --name mosquitto --network mqtt-net
-v mosquitto-data:/mosquitto/data
-v mosquitto-log:/mosquitto/log
-v mosquitto-config:/mosquitto/config
eclipse-mosquitto:2
- Keine unnötigen Ports nach außen freigeben
- Nur andere Container im Netzwerk können direkt verbinden
Healthchecks und Restart-Policies
Zur Stabilität empfiehlt sich ein Healthcheck:
docker run -d --name mosquitto
--network mqtt-net
--health-cmd="mosquitto_sub -h localhost -t 'healthcheck' -C 1"
--health-interval=30s
--health-retries=3
-v mosquitto-data:/mosquitto/data
-v mosquitto-log:/mosquitto/log
-v mosquitto-config:/mosquitto/config
eclipse-mosquitto:2
- Docker markiert Container als
unhealthy, wenn Healthcheck fehlschlägt - Restart-Policy kann automatische Neustarts ermöglichen
Logging und Monitoring
Logs sind zentral im Volume mosquitto-log abgelegt und können für Monitoring genutzt werden:
docker exec -it mosquitto tail -f /mosquitto/log/mosquitto.log
- Überwachung von Fehlermeldungen und Verbindungsproblemen
- Integration in zentrale Logging-Lösungen wie Loki oder ELK möglich
Backups
MQTT-Persistenzdaten sollten regelmäßig gesichert werden:
docker exec mosquitto sh -c 'cp -r /mosquitto/data /backup/mosquitto_$(date +%F)'
- Volume
mosquitto-dataenthält alle persistierten Messages - Backups automatisieren via Cron oder CI/CD
Best Practices zusammengefasst
- Persistente Volumes für Daten und Logs
- Benutzer und Passwörter für Authentifizierung
- TLS für verschlüsselte Kommunikation
- Netzwerk-Isolation durch eigenes Docker-Netzwerk
- Healthchecks und Restart-Policies aktivieren
- Regelmäßige Backups einplanen
- Monitoring der Logs und Verbindungen
Mit diesen Maßnahmen lässt sich Mosquitto in Docker stabil, sicher und performant für IoT-Anwendungen betreiben. Durch persistente Speicherung, abgesicherte Kommunikation und Überwachung bleiben Container zuverlässig im Betrieb und unterstützen skalierbare IoT-Architekturen.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

