MQTT Broker als docker container

    • Offizieller Beitrag

    Um Sensordaten etc. von IOT Geräten zu verteilen hat sich MQTT durchgesetzt. Ich nutze das bisher nicht, werde das aber nutzen, um von KNX, IP Symcon die Daten an dem MQTT Bus zu Verfügung zu stellen. Ich plane dann die Daten in Prometheus zu packen und mittels Grafan auszuwerten - kommt dann irgendwann nächstes Jahr.

    Als Broker nehme ich Mosquitto - gibt keine speziellen Gründe - hatte dazu halt ein Image und Doku gefunden:

    Meine mosquitto.conf Datei beinhaltet:

    Code
    allow_anonymous true
    listener 1883
    persistence true
    persistence_location /mosquitto/data

    Da kann man dann auch auf eine passwort Datei verweisen, wenn man den Anonymen Zugriff nicht mag.

    Den Container Starte ich dann mit:

    Code
    docker run -d   -p 1883:1883 -p 9001:9001   -v /opt/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro   -v /opt/mosquitto/data/:/mosquitto/data   --name mosquitto   eclipse-mosquitto

    -v sind die Volumes dann der lokale Pfad auf meinem Docker Host (/opt/,,,) und danach der im Image.

    In Portainer sieht das dann wie folgt aus:


    Jetzt kann man sich noch mit einem Client auf den Broker hängen und die Topics anschauen

    • Offizieller Beitrag

    Bei meiner Installation oben habe ich ja der Einfachheit auf Benutzer verzichtet. Da ich das nun produktiv nutze um Daten aus meiner Wärmepumpe in mein IPSymcon System zu bringen sollte das ein wenig sicherer gemacht werden.

    Dazu habe ich jetzt ein passwort.conf hinzugefügt.

    Code
    docker run -d --restart=always  -p 1883:1883 -p 9001:9001   -v /opt/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro -v /opt/mosquitto/config/passwords.conf:/mosquitto/config/passwords.conf  -v /opt/mosquitto/data/:/mosquitto/data   --name mosquitto   eclipse-mosquitto

    auf dem dockerhost dann mit

    Code
    mosquitto_passwd -c passwords.conf <username>

    die Datei anlegen (-c für create) das passwort wird dann abgefragt. Weitere Nutzer einfach mit

    Code
    mosquitto_passwd  passwords.conf <weiterer_user>

    hinzufügen. die Datei sieht dann ungefähr so aus

    cat passwords.conf

    Code
    username:$7$101&8OkCoNTlqnPARJCC$qMsaa/hllJTux5JPgkNxgI8G9qnMdtAfnGO96TSOtxsjaBaYOqT+2gb7mP+RNQB2v9XNGbAvkwztYbMAjQ9BKQ==
    weiterer_user:$6$101$rrBJjinA53c2ZFEN$UoQ5f6NV8aqFURWwwDfBlqJH3CAhymLMAKlvIWgzsjH5Bhb3vaawpKaKl4cPmHD/4Y7rh306nMyEsNValo2ZFg==

    sollte mosquitto_passwd nicht auffindbar sein evtl. mosquitto auf dem host mit apt install mosquitto installieren.

    argh vergessen:

    Code
    cat mosquitto.conf
    allow_anonymous true
    listener 1883
    persistence true
    persistence_location /mosquitto/data
    password_file /mosquitto/config/passwords.conf

    die letzte Zeile muss noch in die Mosquitto.conf datei. Sobald Ihr sicher seit das die Benutzer funktionieren, könnt ihr die Zeile mit allow_anonymous auf false setzen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!