From 38f13b10df9cd99160ee0f498328aea104441bbb Mon Sep 17 00:00:00 2001
From: Christian Elberfeld <6413499+elberfeld@users.noreply.github.com>
Date: Tue, 6 Aug 2024 20:46:51 +0200
Subject: [PATCH] mqtt explorer

---
 host_vars/ogg                                 |  1 +
 intern/docker_mqtt/tasks/main.yml             |  1 +
 .../docker_mqtt/templates/docker-compose.yml  | 32 +++++++++++++++++++
 intern/docker_mqtt/templates/settings.json    | 26 +++++++++++++++
 site.yml                                      |  1 +
 5 files changed, 61 insertions(+)
 create mode 100644 intern/docker_mqtt/templates/settings.json

diff --git a/host_vars/ogg b/host_vars/ogg
index 90b4d20f..7d499710 100644
--- a/host_vars/ogg
+++ b/host_vars/ogg
@@ -61,6 +61,7 @@ alert:
     - { name: "homeassistant-app-1" }    
     - { name: "homeassistant-influxdb-1" }    
     - { name: "mqtt-app-1" } 
+    - { name: "mqtt-explorer-1" } 
     - { name: "mqtt-influxdb-1" } 
     - { name: "mqtt-tgbinary-1" } 
     - { name: "mqtt-tgfloat-1" } 
diff --git a/intern/docker_mqtt/tasks/main.yml b/intern/docker_mqtt/tasks/main.yml
index d34fec1e..3abe7233 100644
--- a/intern/docker_mqtt/tasks/main.yml
+++ b/intern/docker_mqtt/tasks/main.yml
@@ -22,6 +22,7 @@
   with_items: 
     - docker-compose.yml
     - mosquitto.conf
+    - settings.json
     - telegraf_binary.conf
     - telegraf_float.conf
   register: config_files
diff --git a/intern/docker_mqtt/templates/docker-compose.yml b/intern/docker_mqtt/templates/docker-compose.yml
index 32ebf09d..90fea4c0 100644
--- a/intern/docker_mqtt/templates/docker-compose.yml
+++ b/intern/docker_mqtt/templates/docker-compose.yml
@@ -10,6 +10,27 @@ services:
       - {{ basedir }}/mosquitto.conf:/mosquitto/config/mosquitto.conf
       - {{ basedir }}/data:/mosquitto/data
       - {{ basedir }}/log:/mosquitto/log
+    networks:
+      - default
+
+
+  explorer:
+
+    image: smeagolworms4/mqtt-explorer
+    restart: always
+    volumes:
+      - {{ basedir }}/settings.json:/mqtt-explorer/config/settings.json:ro
+    environment:
+      HTTP_PORT: 8080
+      CONFIG_PATH: "/mqtt-explorer/config"
+    labels:
+      - traefik.enable=true
+      - traefik.http.routers.{{ servicename }}.rule=Host(`{{ domain }}`)
+      - traefik.http.routers.{{ servicename }}.entrypoints=websecure
+      - traefik.http.services.{{ servicename }}.loadbalancer.server.port=8080
+    networks:
+      - default
+      - web
 
 
   influxdb:
@@ -28,6 +49,8 @@ services:
       DOCKER_INFLUXDB_INIT_ORG: mqtt
       DOCKER_INFLUXDB_INIT_BUCKET: mqtt
       DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: {{ influxdb_token }}
+    networks:
+      - default
 
 
   tgbinary:
@@ -39,6 +62,8 @@ services:
       - influxdb
     volumes:
       - "{{ basedir }}/telegraf_binary.conf:/etc/telegraf/telegraf.conf:ro"
+    networks:
+      - default
 
 
   tgfloat:
@@ -50,3 +75,10 @@ services:
       - influxdb
     volumes:
       - "{{ basedir }}/telegraf_float.conf:/etc/telegraf/telegraf.conf:ro"
+    networks:
+      - default
+
+
+networks:
+  web:
+    external: true
diff --git a/intern/docker_mqtt/templates/settings.json b/intern/docker_mqtt/templates/settings.json
new file mode 100644
index 00000000..be6bfb74
--- /dev/null
+++ b/intern/docker_mqtt/templates/settings.json
@@ -0,0 +1,26 @@
+{
+    "ConnectionManager_connections": {
+      "mqtt-local": {
+        "configVersion": 1,
+        "certValidation": true,
+        "clientId": "mqtt-explorer",
+        "id": "mqtt-local",
+        "name": "MQTT",
+        "encryption": false,
+        "subscriptions": [
+          {
+            "topic": "#",
+            "qos": 0
+          },
+          {
+            "topic": "$SYS/#",
+            "qos": 0
+          }
+        ],
+        "type": "mqtt",
+        "host": "app",
+        "port": 1883,
+        "protocol": "mqtt"
+      }
+    }
+  }
diff --git a/site.yml b/site.yml
index 2ffbeac6..8b2373b7 100644
--- a/site.yml
+++ b/site.yml
@@ -203,6 +203,7 @@
         role: intern/docker_mqtt, tags: [ mqtt, docker_services ],
         servicename: mqtt,
         basedir: /srv/mqtt, 
+        domain: "mqtt.warpzone.lan",
         mqtt_port: 1883,
         influxdb_port: 18086
       }
-- 
GitLab