commit a639f50013ba09ecffb8ef988082fae2b79c0a20
parent e34e81f63ae31697c193d3ab74b660ac9f52a710
Author: Tomas Nemec <owl@gtms.dev>
Date: Tue, 11 Mar 2025 08:15:39 +0100
feat: stack
Diffstat:
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