mqtt

Mosquitto, Zigbee2mqtt and node-red combo
git clone git://gtms.dev/mqtt
Log | Files | Refs

commit a639f50013ba09ecffb8ef988082fae2b79c0a20
parent e34e81f63ae31697c193d3ab74b660ac9f52a710
Author: Tomas Nemec <owl@gtms.dev>
Date:   Tue, 11 Mar 2025 08:15:39 +0100

feat: stack

Diffstat:
Dcompose.yaml | 74--------------------------------------------------------------------------
Dmosquitto/docker-entrypoint.sh | 15---------------
Anodered/Dockerfile | 2++
Astack.bridge.yaml | 47+++++++++++++++++++++++++++++++++++++++++++++++
Astack.dmmlocal.yaml | 22++++++++++++++++++++++
Astack.local.yaml | 67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 138 insertions(+), 89 deletions(-)

diff --git a/compose.yaml b/compose.yaml @@ -1,74 +0,0 @@ -name: mqtt - -volumes: - mosquitto-data: - node-red-data: - -services: - mosquitto: - profiles: - - server - image: tms/eclipse-mosquitto - build: - dockerfile_inline: | - FROM eclipse-mosquitto - COPY mosquitto/mosquitto.conf /mosquitto/config/mosquitto.conf - COPY mosquitto/docker-entrypoint.sh /docker-entrypoint.sh - restart: unless-stopped - volumes: - - mosquitto-data:/mosquitto/data - - /etc/ssl/certs/tms.pem:/mosquitto-certs/ca.crt:ro - - /home/pi/.local/share/ssl/server.crt:/mosquitto-certs/server.crt:ro - - /home/pi/.local/share/ssl/server.key:/mosquitto-certs/server.key:ro - ports: - - 1883:1883 - - 8883:8883 - zigbee2mqtt: - profiles: - - server - image: koenkk/zigbee2mqtt - restart: unless-stopped - volumes: - - /home/pi/.local/share/zigbee2mqtt/data:/app/data - - /run/udev:/run/udev:ro - environment: - - TZ=Europe/Prague - devices: - - /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_da97082b65e7ed119a26606262c613ac-if00-port0:/dev/ttyUSB0 - ports: - - 8080:8080 - user: 1000:1000 - group_add: - - dialout - node-red: - profiles: - - server - image: tms/node-red - build: - dockerfile_inline: | - FROM nodered/node-red - RUN npm install node-red-contrib-zigbee2mqtt - restart: always - volumes: - - node-red-data:/data - ports: - - 1880:1880 - mosquitto-bridge: - profiles: - - bridge - image: tms/eclipse-mosquitto - build: - dockerfile_inline: | - FROM eclipse-mosquitto - COPY mosquitto-bridge/mosquitto.conf /mosquitto/config/mosquitto.conf - COPY mosquitto-bridge/certs/* /mosquitto-certs/ - COPY mosquitto/docker-entrypoint.sh /docker-entrypoint.sh - restart: unless-stopped - volumes: - - /etc/ssl/certs/TMSCA.pem:/mosquitto-certs/ca.crt:ro - - /etc/mosquitto/certs/server.crt:/mosquitto-certs/server.crt:ro - - /etc/mosquitto/certs/server.key:/mosquitto-certs/server.key:ro - extra_hosts: - - "mqtt.home:<BROKER_IP>" - ports: - - 8883:8883 diff --git a/mosquitto/docker-entrypoint.sh b/mosquitto/docker-entrypoint.sh @@ -1,15 +0,0 @@ -#!/bin/ash -set -e - -# Set permissions -user="$(id -u)" -if [ "$user" = '0' ]; then - # Copy certs - if [ -d "/mosquitto-certs" ]; then - cp -r /mosquitto-certs /mosquitto/certs - fi - - [ -d "/mosquitto" ] && chown -R mosquitto:mosquitto /mosquitto || true -fi - -exec "$@" diff --git a/nodered/Dockerfile b/nodered/Dockerfile @@ -0,0 +1,2 @@ +FROM nodered/node-red +RUN npm install node-red-contrib-zigbee2mqtt diff --git a/stack.bridge.yaml b/stack.bridge.yaml @@ -0,0 +1,47 @@ +services: + mosquitto-bridge: + image: eclipse-mosquitto + extra_hosts: + - mqtt.home:89.103.82.147 + ports: + - 8883:8883 + configs: + - source: mosquitto.conf + target: /mosquitto/config/mosquitto.conf + secrets: + - source: tmsca.crt + target: /mosquitto/certs/ca.crt + uid: "1883" + gid: "1883" + - source: server.crt + target: /mosquitto/certs/server.crt + uid: "1883" + gid: "1883" + - source: server.key + target: /mosquitto/certs/server.key + uid: "1883" + gid: "1883" + - source: bridge.crt + target: /mosquitto/certs/bridge.crt + uid: "1883" + gid: "1883" + - source: bridge.key + target: /mosquitto/certs/bridge.key + uid: "1883" + gid: "1883" + +configs: + mosquitto.conf: + file: ./mosquitto-bridge/mosquitto.conf + +secrets: + tmsca.crt: + external: true + server.crt: + external: true + server.key: + external: true + bridge.crt: + file: ./mosquitto-bridge/certs/bridge.crt + bridge.key: + file: ./mosquitto-bridge/certs/bridge.key diff --git a/stack.dmmlocal.yaml b/stack.dmmlocal.yaml @@ -0,0 +1,22 @@ +services: + dmm: + image: docker + entrypoint: docker + restart: unless-stopped + privileged: true + command: | + run + -i + --rm + --privileged + --cgroupns=host + --pid=host + --userns=host + -v /sys:/host/sys + -v /var/run/docker.sock:/var/run/docker.sock + -v /dev:/dev + ghcr.io/allfro/allfro/device-mapping-manager:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + deploy: + mode: global diff --git a/stack.local.yaml b/stack.local.yaml @@ -0,0 +1,67 @@ +services: + mosquitto: + image: eclipse-mosquitto + volumes: + - mosquitto-data:/mosquitto/data + - /etc/ssl/certs/tms.pem:/mosquitto-certs/ca.crt:ro + - /home/pi/.local/share/ssl/server.crt:/mosquitto-certs/server.crt:ro + - /home/pi/.local/share/ssl/server.key:/mosquitto-certs/server.key:ro + ports: + - 1883:1883 + - 8883:8883 + configs: + - source: mosquitto.conf + target: /mosquitto/config/mosquitto.conf + uid: "1883" + gid: "1883" + secrets: + - source: tmsca.crt + target: /mosquitto/certs/ca.crt + uid: "1883" + gid: "1883" + - source: server.crt + target: /mosquitto/certs/server.crt + uid: "1883" + gid: "1883" + - source: server.key + target: /mosquitto/certs/server.key + uid: "1883" + gid: "1883" + + zigbee2mqtt: + image: koenkk/zigbee2mqtt + depends_on: + - mosquitto + volumes: + - /home/pi/.local/share/zigbee2mqtt/data:/app/data + - /run/udev:/run/udev:ro + - /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_da97082b65e7ed119a26606262c613ac-if00-port0:/dev/ttyUSB0 + environment: + - TZ=Europe/Prague + ports: + - 8080:8080 + + node-red: + image: gtms.dev:5000/node-red + depends_on: + - mosquitto + volumes: + - node-red-data:/data + ports: + - 1880:1880 + +volumes: + mosquitto-data: + node-red-data: + +configs: + mosquitto.conf: + external: true + +secrets: + tmsca.crt: + external: true + server.crt: + external: true + server.key: + external: true