From c0fadd826948c5796327cd9ac1491b0f378454ce Mon Sep 17 00:00:00 2001 From: Tommy Hartmann Date: Thu, 22 Feb 2024 13:29:01 +0100 Subject: [PATCH 1/8] added eclipse-mosquitto broker with cedalo management center --- apps/eclipse-mosquitto/config.json | 34 +++++++++ .../data/config/mosquitto.conf | 27 +++++++ apps/eclipse-mosquitto/data/data/.gitkeep | 0 .../data/scripts/dynsec-setup.sh | 34 +++++++++ apps/eclipse-mosquitto/docker-compose.yml | 68 ++++++++++++++++++ .../metadata/caledo_mgm_center.png | Bin 0 -> 60300 bytes .../eclipse-mosquitto/metadata/description.md | 59 +++++++++++++++ apps/eclipse-mosquitto/metadata/logo.jpg | Bin 0 -> 21516 bytes 8 files changed, 222 insertions(+) create mode 100755 apps/eclipse-mosquitto/config.json create mode 100755 apps/eclipse-mosquitto/data/config/mosquitto.conf create mode 100644 apps/eclipse-mosquitto/data/data/.gitkeep create mode 100644 apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh create mode 100755 apps/eclipse-mosquitto/docker-compose.yml create mode 100644 apps/eclipse-mosquitto/metadata/caledo_mgm_center.png create mode 100755 apps/eclipse-mosquitto/metadata/description.md create mode 100755 apps/eclipse-mosquitto/metadata/logo.jpg diff --git a/apps/eclipse-mosquitto/config.json b/apps/eclipse-mosquitto/config.json new file mode 100755 index 00000000..6f4a7934 --- /dev/null +++ b/apps/eclipse-mosquitto/config.json @@ -0,0 +1,34 @@ +{ + "$schema": "../schema.json", + "name": "Eclipse Mosquitto", + "port": 8288, + "available": true, + "exposable": true, + "id": "eclipse-mosquitto", + "tipi_version": 1, + "version": "2.0.18", + "categories": [ + "utilities", + "automation" + ], + "description": "Eclipse Mosquitto is an open source message broker that implements the MQTT protocol.", + "short_desc": "open source message broker", + "author": "Eclipse Foundation", + "source": "https://github.com/eclipse/mosquitto/", + "website": "https://mosquitto.org/", + "form_fields": [ + { + "type": "password", + "label": "MQTT Broker Admin Password", + "max": 50, + "min": 6, + "required": true, + "env_variable": "MQTT_ADMIN_PASSWORD" + } + ], + "supported_architectures": [ + "arm64", + "amd64" + ] +} + diff --git a/apps/eclipse-mosquitto/data/config/mosquitto.conf b/apps/eclipse-mosquitto/data/config/mosquitto.conf new file mode 100755 index 00000000..28c1794b --- /dev/null +++ b/apps/eclipse-mosquitto/data/config/mosquitto.conf @@ -0,0 +1,27 @@ +# Copyright 2022 Shantanoo "Shan" Desai +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Mosquitto v2.0 Configuration File + +# Default Port +listener 1883 + +# Dynamic Security Plugin +plugin /usr/lib/mosquitto_dynamic_security.so + +# Path to the Dynamic Security JSON file +# WILL BE GENERATED THROUGH INIT CONTAINER +plugin_opt_config_file /mosquitto/config/dynamic-security.json + +# Ever User / Client should follow the given RBAC rules +per_listener_settings false diff --git a/apps/eclipse-mosquitto/data/data/.gitkeep b/apps/eclipse-mosquitto/data/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh b/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh new file mode 100644 index 00000000..378a6d3f --- /dev/null +++ b/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# Copyright 2022 Shantanoo "Shan" Desai +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Setup Script to be executed in a Docker Init Container + +# Set Default Admin Credentials for Dynamic Security Plugin Configuration +DEFAULT_DYNSEC_ADMIN=admin +DEFAULT_DYNSEC_PASSWORD=securePassword +DYNSEC_FILE_PATH=/mosquitto/config/dynamic-security.json + +# Set values if provided via Environment Variables in the Docker Init Container +MQTT_DYNSEC_ADMIN_USER=${MQTT_DYNSEC_ADMIN_USER:-DEFAULT_DYNSEC_ADMIN} +MQTT_DYNSEC_ADMIN_PASSWORD=${MQTT_DYNSEC_ADMIN_PASSWORD:-DEFAULT_DYNSEC_PASSWORD} + +echo "Admin/Pass: ${MQTT_DYNSEC_ADMIN_USER}/${MQTT_DYNSEC_ADMIN_PASSWORD}" ## DEBUG + +# Set the Admin Credentials for RBAC control via Dyamic Security Plugin +mosquitto_ctrl dynsec init ${DYNSEC_FILE_PATH} ${MQTT_DYNSEC_ADMIN_USER} ${MQTT_DYNSEC_ADMIN_PASSWORD} + +chmod 700 ${DYNSEC_FILE_PATH} +chown 1883:1883 ${DYNSEC_FILE_PATH} + +exec "$@" \ No newline at end of file diff --git a/apps/eclipse-mosquitto/docker-compose.yml b/apps/eclipse-mosquitto/docker-compose.yml new file mode 100755 index 00000000..8fae829a --- /dev/null +++ b/apps/eclipse-mosquitto/docker-compose.yml @@ -0,0 +1,68 @@ +version: '3.7' + +services: + mosquitto-management-center: + image: cedalo/management-center:dev + container_name: mosquitto-management-center + environment: + - TZ=${TZ} + - CEDALO_MC_BROKER_ID=mosquitto-broker + - CEDALO_MC_BROKER_NAME=mosquitto-broker-2 + - CEDALO_MC_BROKER_URL=mqtt://mosquitto-broker:1883 + - CEDALO_MC_BROKER_USERNAME=admin + - CEDALO_MC_BROKER_PASSWORD=${MQTT_ADMIN_PASSWORD} + - CEDALO_MC_USERNAME=admin + - CEDALO_MC_PASSWORD=admin + ports: + - ${APP_PORT}:8088 + expose: + - 8088 + depends_on: + - mosquitto-broker + networks: + - tipi_main_network + restart: unless-stopped + labels: + # Main + traefik.enable: true + traefik.http.middlewares.mosquitto-web-redirect.redirectscheme.scheme: https + traefik.http.services.mosquitto.loadbalancer.server.port: 8088 + # Web + traefik.http.routers.mosquitto-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.mosquitto-insecure.entrypoints: web + traefik.http.routers.mosquitto-insecure.service: mosquitto-web + traefik.http.routers.mosquitto-insecure.middlewares: mosquitto-web-redirect + # Websecure + traefik.http.routers.mosquitto.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.mosquitto.entrypoints: websecure + traefik.http.routers.mosquitto.service: mosquitto-web + traefik.http.routers.mosquitto.tls.certresolver: myresolver + # Local domain + traefik.http.routers.mosquitto-local-insecure.rule: Host(`mosquitto.${LOCAL_DOMAIN}`) + traefik.http.routers.mosquitto-local-insecure.entrypoints: web + traefik.http.routers.mosquitto-local-insecure.service: mosquitto-web + traefik.http.routers.mosquitto-local-insecure.middlewares: mosquitto-web-redirect + # Local domain secure + traefik.http.routers.mosquitto-local.rule: Host(`mosquitto.${LOCAL_DOMAIN}`) + traefik.http.routers.mosquitto-local.entrypoints: websecure + traefik.http.routers.mosquitto-local.service: mosquitto-web + traefik.http.routers.mosquitto-local.tls: true + mosquitto-broker: + image: eclipse-mosquitto:2.0.18 + container_name: mosquitto-broker + environment: + - TZ=${TZ} + - MQTT_DYNSEC_ADMIN_USER=admin + - MQTT_DYNSEC_ADMIN_PASSWORD=${MQTT_ADMIN_PASSWORD} + ports: + - 1883:1883 + command: ["/dynsec-setup.sh", "/usr/sbin/mosquitto", "-c", "/mosquitto/config/mosquitto.conf"] + expose: + - 1883 + volumes: + - ${APP_DATA_DIR}/data/data:/mosquitto/data + - ${APP_DATA_DIR}/data/config:/mosquitto/config + - ${APP_DATA_DIR}/data/scripts/dynsec-setup.sh:/dynsec-setup.sh + restart: unless-stopped + networks: + - tipi_main_network diff --git a/apps/eclipse-mosquitto/metadata/caledo_mgm_center.png b/apps/eclipse-mosquitto/metadata/caledo_mgm_center.png new file mode 100644 index 0000000000000000000000000000000000000000..46a0902199625ac493e2d51af5f13fa22805d154 GIT binary patch literal 60300 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 literal 0 HcmV?d00001 From 72c95e07c44b4162c77200bbd067a85e44dc4eac Mon Sep 17 00:00:00 2001 From: Tommy Hartmann Date: Fri, 23 Feb 2024 18:03:42 +0100 Subject: [PATCH 2/8] added zigbee2mqtt app --- apps/zigbee2mqtt/config.json | 32 +++++++++++++++++ apps/zigbee2mqtt/data/.gitkeep | 0 apps/zigbee2mqtt/docker-compose.yml | 43 +++++++++++++++++++++++ apps/zigbee2mqtt/metadata/description.md | 29 +++++++++++++++ apps/zigbee2mqtt/metadata/logo.jpg | Bin 0 -> 29833 bytes 5 files changed, 104 insertions(+) create mode 100755 apps/zigbee2mqtt/config.json create mode 100644 apps/zigbee2mqtt/data/.gitkeep create mode 100644 apps/zigbee2mqtt/docker-compose.yml create mode 100644 apps/zigbee2mqtt/metadata/description.md create mode 100644 apps/zigbee2mqtt/metadata/logo.jpg diff --git a/apps/zigbee2mqtt/config.json b/apps/zigbee2mqtt/config.json new file mode 100755 index 00000000..658e580f --- /dev/null +++ b/apps/zigbee2mqtt/config.json @@ -0,0 +1,32 @@ +{ + "$schema": "../schema.json", + "name": "Zigbee2MQTT", + "port": 8290, + "available": true, + "exposable": true, + "id": "zigbee2mqtt", + "tipi_version": 1, + "version": "1.35", + "categories": [ + "utilities", + "automation" + ], + "description": "Zigbee to MQTT bridge, get rid of your proprietary Zigbee bridges", + "short_desc": "Zigbee to MQTT bridge", + "author": "@Koenkk", + "source": "https://github.com/Koenkk/zigbee2mqtt", + "website": "https://www.zigbee2mqtt.io/", + "form_fields": [ + { + "type": "string", + "label": "zigbee device path", + "required": true, + "hint": "/dev/ttyUSB0", + "env_variable": "Z2M_DEVICE" + } + ], + "supported_architectures": [ + "arm64", + "amd64" + ] +} \ No newline at end of file diff --git a/apps/zigbee2mqtt/data/.gitkeep b/apps/zigbee2mqtt/data/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/zigbee2mqtt/docker-compose.yml b/apps/zigbee2mqtt/docker-compose.yml new file mode 100644 index 00000000..83d14c26 --- /dev/null +++ b/apps/zigbee2mqtt/docker-compose.yml @@ -0,0 +1,43 @@ +version: "3.7" + +services: + + zigbee2mqtt: + container_name: zigbee2mqtt + image: koenkk/zigbee2mqtt:1.35 + environment: + - TZ=${TZ} + volumes: + - ${APP_DATA_DIR}/data/:/app/data + devices: + - ${Z2M_DEVICE}:/dev/ttyACM0 + ports: + - ${APP_PORT}:8080 + expose: + - 8080 + restart: unless-stopped + labels: + # Main + traefik.enable: true + traefik.http.middlewares.zigbee2mqtt-web-redirect.redirectscheme.scheme: https + traefik.http.services.zigbee2mqtt.loadbalancer.server.port: 8080 + # Web + traefik.http.routers.zigbee2mqtt-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.zigbee2mqtt-insecure.entrypoints: web + traefik.http.routers.zigbee2mqtt-insecure.service: zigbee2mqtt-web + traefik.http.routers.zigbee2mqtt-insecure.middlewares: zigbee2mqtt-web-redirect + # Websecure + traefik.http.routers.zigbee2mqtt.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.zigbee2mqtt.entrypoints: websecure + traefik.http.routers.zigbee2mqtt.service: zigbee2mqtt-web + traefik.http.routers.zigbee2mqtt.tls.certresolver: myresolver + # Local domain + traefik.http.routers.zigbee2mqtt-local-insecure.rule: Host(`zigbee2mqtt.${LOCAL_DOMAIN}`) + traefik.http.routers.zigbee2mqtt-local-insecure.entrypoints: web + traefik.http.routers.zigbee2mqtt-local-insecure.service: zigbee2mqtt-web + traefik.http.routers.zigbee2mqtt-local-insecure.middlewares: zigbee2mqtt-web-redirect + # Local domain secure + traefik.http.routers.zigbee2mqtt-local.rule: Host(`zigbee2mqtt.${LOCAL_DOMAIN}`) + traefik.http.routers.zigbee2mqtt-local.entrypoints: websecure + traefik.http.routers.zigbee2mqtt-local.service: zigbee2mqtt-web + traefik.http.routers.zigbee2mqtt-local.tls: true diff --git a/apps/zigbee2mqtt/metadata/description.md b/apps/zigbee2mqtt/metadata/description.md new file mode 100644 index 00000000..2297dfca --- /dev/null +++ b/apps/zigbee2mqtt/metadata/description.md @@ -0,0 +1,29 @@ +# Zigbee2MQTT 🐝🌉🔨 + +Allows you to use your Zigbee devices without the vendor's bridge or gateway. + +It bridges events and allows you to control your Zigbee devices via MQTT. In this way you can integrate your Zigbee devices with whatever smart home infrastructure you are using. + +|**Compatible** | **Integrations** | **Open Source** | +|---|---|---| +| Zigbee2MQTT supports [various Zigbee adapters](https://www.zigbee2mqtt.io/guide/adapters/) and a big bunch of [devices](https://www.zigbee2mqtt.io/supported-devices/). | Zigbee2MQTT integrates well with most home automation solutions because it uses [MQTT](https://mqtt.org/). | Zigbee2MQTT is licenced under the free [GNU General Public License 3](https://www.gnu.org/licenses/gpl-3.0.de.html). | + +## Setup + +You need to have a mqtt broker like [eclipse mosquitto](/apps/eclipse-mosquitto) running to use this app. + +### Configuration of the Zigbee adapter + +For USB apdaters you can use dmesg command on Linux hosts to find the mounted device. Where possible you should use the `/dev/serial/by-id/` path of the stick, instead of `/dev/tty*`. This is because the `/dev/tty*` path can change - for example ´/dev/ttyACM0` may become `/dev/ttyACM1` and then later back to `/dev/ttyACM0`. The `/dev/serial/by-id/` path won't change. + +The **usb device path** must be set in the settings of the app before installing. + +## Integrations + +Zigbee2MQTT integrates well with (almost) every home automation solution because it uses MQTT. However the following integrations are worth mentioning: + +- [Home Assistant](/apps/homeassistant) +- [Homey](https://homey.app/) +- [Domoticz](https://www.domoticz.com/) +- [Gladys Assistant](https://gladysassistant.com/) +- [IoBroker](https://www.iobroker.net/) \ No newline at end of file diff --git a/apps/zigbee2mqtt/metadata/logo.jpg b/apps/zigbee2mqtt/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0f9621f613ee4a53b28eac9830af43ccf944153f GIT binary patch literal 29833 zcmdqJ1yEegwm-VZad&rjcY?dShryj-2_6y%4#6FQyG!sGgy8N3fQ%jZJvB3HTGr~``?sXm?wZ@B+YbPqy0V%w00Myk8`KN9-C~SUQ&6zc z)z?v0(^Nt=0083ycRLSXFdhJSc>4M1tH{%tnwirfHULZj1Hb|Z05MxTUvCaimj}Rq zESC!aiW30La{uP_AG`hg226VgUpoK*p`n_a?7V&aP;@8iO>p1O8%2Z1Q1wK1&bIa_ z`U8sQ@ydxbbiZk*KWU-gw2z^_0;-QH0MKDM{S%G+C)&>0#{;!~LsWmJ zKj(m=0D#IDbrHB7+}$0xjRm-UeVmYfK6X4VcBnc2y-)+bfIgrC$OGJf1K^H&IiM(G zKmhgW3-|y|021&+ecJ&%fD7vLpU3{4$^R3=&*1^;+5mupmv^9#i<7e-od6%dFc+N? zYT9%LeqNpqbZqw>kiIT{4ia?EetzB(yu6++o(}d7PCgC}zDNgmulqc9ULL%XbPgW2 zF76U^zZdNLd*Gda*N>ft&d}M#mkxyG_ZGUe5qP z>;hH)^dEIhMF4;s2>=}f|ENP|0l@QU03cho^Y;n(Lk@saBouf7FaQN$031L7=qNqH zL}?NZfQxFx2M7TofEXYF$N+MH0-yw_02+W6pabXuMt})m23P<#fF0lfI8j*Q0eAsE z6siOPAwU=q1;hYxKmw2iqyZT~7Py1Lp8}u=D4~$33aA0%7OAQ4Cco&qUADv$x~rhsW+7MKI(fkj{mSO!*rHQ+t44txMMfh}MM*ah~01K<$& z2z&yLfzQAx@CEn^oCBA@74QwX27UlHz%SqyWd^|@Cfy6L3k}7DxxA3(^M}f{Z{WATy9T$P#1?x(l)e*?}BDP9SHHE65$> z3GxEn1NnmdK>?r#pde5PC=3)1iU2(ZMS-G0v7k6m0w@Xe6qE`|2W5h?Kslg1Pywh2 zR17Kwm4hll)u38X9jF1+1Zn}bfjU5)pl(nvs2}ta^cpk(dJB378Uc-gCO}i58PFVP z0ki~K0j+`7L7Sj$&@N~nbO<^E9fLlDzJR`hE~Lsf5%(>LE>#R!9e=3(^aD0eKA> zgbYK*Ad`?8$UI~TvI^ONY(aJ*2aqGk3FHiN0r>{`0r>?5Lt#)fC?*saN&qE>l0m7U zv`_{pGn5_51?7bbLPenBP-*BLr~*_4st(nH>Ol>mCQu8gH53VTfI36np~jf6%+e?2bvFk1}%kFLTjK6&}L{mv=iD3eF1#~eG46dPC%!j^Ux*e z8uSBn8@dnu2t9$GK`)@+p*Ju928E%)Fk!ebLKq2*0!9O4fHA|^Vcal&m=H`1CI!0# zQ-G~PFb~*0m_IBK77B}iMZ#iW39zTIbXYblANCAZ2CIVA z!5U$$u;;KI*bCSj*brX8_o|GhKs{x;PP-~xH?=LZU8rdTflALc5r97JKP)Y2M>gY!Xw~O@Hlu9 zJQbb=&x04i%ivY;I(Rd@9o_}+hrfoug^$7~;dAgM_!@i@z6<{dKY^dYui!rr00N3Y zM_?le5F`jn1TBII!G_>Q@FPSJ5(rs@0zws`h0sG7Bg_#t2s?x`!UJ&+5r7Crgd-vm zv4})ODk2M!hj@l4M^qyk5Uq&kh+f1i#9PD&ViGZjSVp`@Y$5g$pAcUV7l>=bEgBRJ z9Ss|e0F4xl3XL9(1&tGp7flFF98CsI0ZkQ63r!!*1kDo77R?dO4b2GTH{(4%#8w3EEe*Z)i8@5Og$j zY;*#2Qgmu`26R?*E_8l$QFJMEIdo-oO>{kUV{{92TXaWsH}rex0qDW#5$I3Q;KdNakid||P{L5h(8Vyuu)wgzaKv!O@WHr`5sL8`BL*W0BON0LqX?rMqXwf1 zqXVNC;}ymb#yG|-#uCOl#tz0ujL#Ss7(XyUmRkFAQWgKdOuiH*c|!S=!qzz)HFj2(;p6gv~U0J{vk2D=&iId(txAoeKs z4E8ei2KFBIC+x4-*Ek>?1P%@kF%BgT0}eY5FOCR~G>#&UI*uNWDUJ<}BaS5tAK29l44NfyoCr&@kAkG-hEY1qfCe8uQXPir%8(b(ZCN2RkIW8S8D=rVN zFs>A?0f8s&#Fz^WQ$nog#Sn+uAMDV2X6!A3i4DihHka#Y5-gpo2!ttKqCE;b@72uWO z)#A0{b>qFp8^)W$Tf*DG+s8Y>yTrS}hv8%46X8?hGvagL3*d|6%i*iy>*AZ>+u%Fl zd*TP+hvG-!C*r5$=i`^**W$P0_u#+AAHko&U&i0WKg2)9|3&~1pb_8_kP^@muoCbP zh!DsSC=+NC7!gr1wc5lE#vzlID|^lQxh(Cw)meOgcllO1eXOOnOBIkfDRnVOYTPQM;=BVO`bxYOI}7^PyU?zCHV;XEctu#J@QlXYYGSjHU$X< z9R&x4AcZuAGKDUMIfWgC2gQAg2#Pq0bc#ZXN{VKR9*RMV35q3(Es9SR7ZkUY=#+$% z)Re50e3TNDij>-vrj$rZcS?WCaLQQ9G|B?XO3G%+9?C(=Ny=r)ZOUWHD=H8bCKWLi zEfqVJAeA(g3Y8v}1(gGpH&qZ-BvlesHdP5#9aRU_E2>edd8!SnL#lJCU({&S1k_a2 ztknF}lGIAny42>>_S9a~fz*$wlc=+)OQ`FqpHsi09;05M-lRUFzMuhUFldNrXlXcT zglJ@F)MyN7tZAHSd}%^yVrbH63TUcmT4?%chG=GJ)@b%=&S-wpB4`O{sc2bg1!$#c zRcQ5TEoq%-eP}~yqiIuV3ur58TWI@e-_g#{zNbB){Yv|b4vmhGj)sn%PKZvHPMyw> z&W6sF&Y$ifT|8YTT`^r9-E+FvbmMeOblY?%bl>Tr^tkjC^vv{p^pf<-^m_D`^iK3X z^kMX|^y&0P^fmPD^e^eh=ojg?=#S~YF+dq`87LT-8Tc5a7*rVa8LSyx82lK*8R8i- z8HyR|89Eu>FibM6FzhjWVfe|2#z@FW%gDhf%qYjG$!N-G$LPfv#Q20Ug|UFKim{FH z1>-2=0^=6r3FCJr7!w{76%!kiAd@VU29q%plF5@PkSU5Og(;t@im8q11=A?gBGWe0 z3DY$*oSA@`hMApNm|2cli`k6Xf!UimggJ&eo%tDa9djr10P_^{8uLE$SLRz5OcqiW zMiyQcNfs3r0~Q+=Hkt|PH@>!}_+E`w)jIk`S?691&+_0jv60_2?aOueaSk;y3D%E`i1p|4TFt@jggI)O_EKO&5-Rbn+IDU+Y`1_ zwnDaAw&!dEY*TFS*$&w**}?3%?3C_Y5v>{{&R>`v^y><`%!*mKw`*jw0Nu#d4X zvG1~fVgJQ}$w9`!#KF%Y!=cV$!eP&Gk0X>Ljw6esjH8*Ok7I;mkz-w4x#WfL;`7q* za`8&=s_+`|B6+=e!+7I)b9gIx+jw8|PVv6yJ>vb&2j?T=W8mZEljhUlGvjmO^W%HO z_mr=Yua2*aZ-{T6Z=3H6-z`5jKLtMJ$U+=}9eQj2nlN{Xt9nuE=?}YE-fytDs3w5Ed4+_Mmk%%Qu?{{ko2PTzVww0 zLWWd^RYp`sMaD$NN#?#xv`m&vrOb1gA(=&)eVHp+ge<8ntE{N3imZvOlk5Z87};#u zD%noice2Z}hqB-Apx+_C!*NIAj`|(*J8pM^@5JB9zf*Uo_s;m8_jiu({F1|wqmkp4 zla;27g?5Fv3X2N+3f~mb6)6-s6(tol6|EFK6~h&u zDi$lYD85#lRoqd$P=YIwDzPbvE2%44D7hmqSB@^sIs7Ppz>W6 zLzPOETUAz7SJhV4S2a>KQ?*jHOLatbP4!syRt-;$K}}FiNzGWzSuIE{Uadf_LG7j5 zjM}!^g*sfFOr1krQe8{kM*W`pBlUFk3iape!|JQ*$LhBlcp3~ELK?~%rW!69!5WDg zMH1f$% z`D#UJWocDw^=eIMeb747hH8^)vujIgYiZkP`)EgMXKGh#_h^r6Z)l(CKy^rT*mWdz zv~}+4_~=CGWa-rC^y*CLZ0dZ~h3k^(a_UO!>gpnO{dJ>tb9L)=U+B*0?&x0Wq3coU z@#@Lx8R|Ld1?nZ}73nqW4d^ZE9qRqm$JJ-h7t&YJH`n*jf2g0TU#{P&KdQg3|HS}m zKw`jdAZ4IqfHd$oh%v}BXfSwXFlVrDaBYZfNM|T$sBCCv=x!Kpm}*#V*l9RwxNdl6 z1T!Kt;xv*m(lc@}dSDc9RA|&}G-$MBbY%3)n829XSj6@vQNl z@wExI37v_MiHeDZiKodUlMIt;lU|c4lWmhLQw&oYQ+`t=Q&UrS(}$*Mrj@4MrW2-H zrWa=DX4GbUW{PH}W^QKTW@%=XX5D5JW?N>L=IG|s=KSVL=4R&Z<`2!&&8y6N&8N(F z%)eP+TF_buTBul9Sa?}Hw#c%mwRmAMYq4+f!xGn$(Nfe>!}6}BpJj|?zGai;faQ|q zCo7N@u@$?Ow3VKfgH@1Kl2wUSht;UnhSgVVG;1nrK5Ip5Giwj)N7k9vHP$bzXRY_G zf7;;LFx!aRXxkud?%TxMJhN%D8Mb+Eb9NVgm+~&}UB$bmcRlVtx|?~o_U?e@Qk2H7UrmfCjOj@xe9ULrA(bVy;O8qyl+i;O`QAX|__$W`R29n6lx zj@M4n&dko!?y+6AUA^6FyG6TC_8@x_drtd1_D1%u_Tly!_BHk|?C0zc?SDBCII#xRNInFp9INmrBII%fNI~h1R zJB2x=IaNFLJIy&AI^8-GIdeG6IvY8=IzM#Ibgp%N<-Fkh$p!2}>cZ`!;9~0H=@RLZ zI!$Iausk@b+vN!b&Yi`a&31VasA+W>4xRT;3np#?Pl*5u@nV$8YZ#A}0=yEuO1-+gro8sNZoCP-IlS+9 zn|OP8M|$UaH+v6xuX~^0!@S3EPwbw~J;!??_tNgw+``#wWlh z(WlI(+h^M6z~|PN#Fxug!PngPo^OnAk#C3ZxbKedwI9A8o1d(ov7d)uq+gz2i{G%{ z2fr(S9Df#nX@5h1H~&ZeIsQ%lL;majmjT!TOaYPs`T?#15dql&jR8Xe>j4+{vFlgL#8hf^C8Wf|G(Pg8PFP zf=@zVA=DwlAzC30A)z4|A@w1HA!{M$p;)0zp;DoSq3)rPq4}Y0q2r;up*LZ~VccO# zVOC-OVToboVf|qXVJG46aGG$@aGh|c@bK`g@TTy0;UB`kKg55?{!s3r`9q(FaSux$ z_B@<>_$dM!K^-9+p&j8E5gw5h(G>A6Vl(3VBZ5a9j}#tRJo0;#@TmMz|D%ORpC2P0 z(>)e{toPXU@#DvNkJ}!PKi+-(E0Q#lFH$wqHZmwOEwV0hAo6|WWfX1{Ta;Xsd6Z97 zd{kLfU(`a>=O<`S=$}YDF?izsBqP3!(q8~=*M7KnbM(;%5 z#E{1D#i+#~V}fHcVj5zGVm`!N#}dYJ#VW_z#6E~kiLH$th+U7pio=WJh*OBOiVKKK zj;oG)9k&*D5sw?s7B3%f5$_+L6kiqpI({|&A^|6XEkQoPBEdf)IiV`yb;4T0MIvq@ zd!l@zWnw_$)5Pk;H;L~PuafYSIFl5Utdkxjr6$!Sy-oU%be&9?%$=-~Y?~aMoRQp^ zJe<6peDjp_DgRTArw&iUpXNSodphy-AO)O4l_HX&o8p!dl~R<_l`@-hl8TnfkSdjG zl6o&SKD8qCW$H@mc^YmSdzxaJb=rfpw6yxPcWGN`KhsIm`O`Ji9n&My^U^!gr_zry zU>S57k{L!B-WhQjCmDVRT_hVSnLD;YAUC5m%9FkzG-EQC?9;(M-|F zGxTT7&*Yw2K6~&i{aMqq(P#U`kYd_miDKhopW>wAn&P*`o5eRJn>X;J1fU2=O|Yxw<`}X z&nxdNpDRDDz^Y)cP^z%42&>4g=%|>j_*{uu$yTXYdABmOGN-bma;EZg6=oG%m131` zRcKXiRY%oq)#qxgYW8ZSYGid-bzXI6^<4Fr8k`!A8kHLRnuj$7HQhCfHD7D-YPoCG zYn^Hz*FLN5t6izRsw1l7tJA7;t&6TJt9w`*a&ZAY`oKG-5A`M-PqnZ+j!c9-NezP+T_smsHv!_uW6;}s+qW1 zpjo%sqdBg*s(G+^y9H>WX_0I(YYAvcZ)t9sZ28oR(aPGY)QW6<*jm`y)4JSx*+$eR z(5BPo(H7rU)%Lb+rybl*+b-R1(H_{I+1}PZ(|+24)4|oD*5T9<)lu5CEEx+c1gyD_`j zyH&a!yCb_xx?gs0bl>z)_DJ-Y_5}1~^tAR&_nh|P^m6xV^t$%O^j7o^_HOrq`{?>) z`>gsx`ttg^`j+}G`-%Gn`}Op1iAgH~4OM7&go_tT=2x z{CK!@_|5Rv2zZ2HL~g`(Bx0m^x{~b^GwW4^~~_h$61V7 z&RNY__u0hR`q_!ulR4ZuzB%2wdvmFCEpxMT=krAK!t=)S_vf?bJLi|@uNNp5Bo{0f zLKg}bUMy@Z0*myE@{4whk&ESvZx{EM(3aSj)R)|r5|-+hCYC-g<1Oo5B*r!TiJ zFD!psAzzVLu~-RNDO`E6@?jOU%CM@q>ahA`wQ6;E_2U}m8uyy^n%7#&TFctp+Qoa4 z_hRqO-Uq+Wf8YOpV;!{4u&%i7upYf$wLY@`X#;zMcSCo>XCr;1ePeOs`v-~-QXi~8 zgnuah@aDtrCVZ1^Q+?BYGjX$Vb9(dZ7V(zomf2R&R{mE1)`xBIHq*B9w)1w}cHQ>G z_UR76j?j+r&V!xYo!*`GUC=J$uF|g4ZtQOD?)dKM9>Jc_p7CDbUfy2c-o`$7pJ`ut z-(^33zkYve|LlP1K=i=uAo!s0;N`*gA?%RtQ2o&3F!`|MaPIKxBl$Fk*3SoGNZIQ010@tfn_6SNb~ z6YZ0GC+R28PgYKDKGS_x`0V&O_H*6m$b1y`s>Ko-ZnQzE%PrlWB zoA~zSJMnk%?^fRT?pJ+e1 ze(L`8|C#f%@8{+X?1ueD>&E9M^QQY|{TKKb>o1L8Ucb_Rb^cnr1#X#d)owj*Q*S$N zS8s3sJXeA`1pxVd6rgkw01QI_Kyw@ba&iHH#R+we!18t#_2eE7g~4G^I2;B?AmC^i zco-Py=omyexLA0kL}X;7L?k2>)XcOLl#Em)By?PKj4Z6|9PH$@+X+ z5C{b7kqaRP1|b_NWy1Htxow18)*9?d6%`W#EPEBlHQi~#cbM@4 zw+ViDQ820Wc^Dq~WthO*V`4vO5q@24_!4|nbl@}sI(R7c`DpP$-^Jv);4XF0XVU(z zUr$1w(ZoO|e)Zjt->|#|6lC=Nf7)MG_jAXW;sLjrdF>u0J#Syrs(zwr;9Lyf|LyvF znKS2~mYzJuQ=|Oih7}TpML(Wiwcqzpn(N{iq5EInQZU~O%;id}c1n3#QekHn)80%2 zYOT?P*skiC+G;^VNc@++n$T6f&dw0a`DZ!EGc!$pVUc?&d`okOMsqne20vJxxM9Z@ z=+)QhbEb(Q+5$mg49G;KrG<(y@3}-R)%Ke^$aFs)T>u$50=XU&M<0C&Zyb$br z@V&s5JH2?i+UJZwXxK0U*3H&TFMJYk;hVv4WY9Mk=j2<~`@RU$jUiMsmo`4Ur&FcG zl`3JST5(@OV|@9P`Y%HA+4p_c0r#PZnU6|>T{G66lMnwQBHlyti||`%5E|7)6Z>j` zJu;BL2!tPwPl)o^18SZ!1IYsBy-(k8{vxQS#D~97@_+E_PSHH^%gSs0An_M*|IYs> zMZw#>crFv&oRiZ++R()-kcWZUd?^i2PC`W5eRTr6AP$moZDp0{LesJOkqe{dL`ja; zQ}5ebknLaWInH=hpOz|E>1gK9FYVR%9Vv}tcHLWS*Xhj_B_)l|Xd@WYHeyezWSJ14 zku>jP>&{}f(*IJYB(XYetnW`iv?gSfnX5QBRq)w$ukfr=^JSZ;hkN#3KUb8s(zW-W zjN_Zf4M(M&yNbhJH=Eihu$C=ce0(9q`8*)?d8S)QkSW^h?a!`7fkGZ=`Ihz1GLb&j zn*NeJ0yLM6>OAGc#yZSNeE+iwKShspyDcA;|K}TmmQ!h4+B9H%#zOXQZFGEL|HUbUO(*^g5uuDSxJ=Q7FJt?3e>1*I=5^yx&PWkj#= zMY?=_vxF_@h5_AOR*_xSJckHo;#2?vzw@_sAI(+L8&rQKOhd=N`w}@2q=4*OLK)t6 z1GS^)4wN@_L6N*K=*eYgJj*?dTPE@?PE-ayzNS#y@p?J68l1@-mf;lt<7_(bSK9rI z?8l;f}YsGV+Ro7?{{jSMg)<Rl2c3djcL|F@; z{kd3(VXqsmcE`CJ#wc84@<&x+vL;LT!GQE3LIi<$hY$hndBWlzmyvBF7Cj zDJRw6sjXh;j;^!_;uz5`kHYPJV570PJy|Hv-PK-p%{;Fa|t3csDKq{7xH)2${I z;P6(~m$2MK-?3W9y}htaw8!1ChFH9+(QS)yzjBL(ZD2T2D|@q=A~!`mDzkOr$(2X? zynLlF@o|V^$fuu*gJe1U)vZ**j0XCw{BG{MI7Lp*r|ju5*b(e7K1Hnt%eCEc6JfgM z5G!*Y*UZ*%-Y$9v`y=VD^N_*(;@MBfG%$e_o_~S50TW0eJ%2U5&?6I?ZmbGmk^g<2 z2#(HUF@QSokUj8F?5ve<>6_kWH{rCNh&Z2(8R;6gC#U_#O!=}4^C%q2%{MbE2NLRq z(WqzDO(vMb`SJI!_BoyDgx6C26B5bmZvuF2iTi1WG~PsTMjPB1a##ek=YF;^Tpsf0 zan-9`Y6~4}-q8rV$WFs9T^jM7XLY-`w6r2=hR`CM>3>qq)*oh+K3^pvDNZ1_yξ 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 sDu2|Dj-H;_j_xjpil(4%Cd&aq46nR Date: Sat, 24 Feb 2024 10:34:01 +0100 Subject: [PATCH 3/8] Update dynsec-setup.sh in eclipse-mosquitto app https://github.com/runtipi/runtipi-appstore/pull/2549#discussion_r1501006295 suggestion resolved by uncomment the echo command --- apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh b/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh index 378a6d3f..cea56d77 100644 --- a/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh +++ b/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh @@ -23,7 +23,7 @@ DYNSEC_FILE_PATH=/mosquitto/config/dynamic-security.json MQTT_DYNSEC_ADMIN_USER=${MQTT_DYNSEC_ADMIN_USER:-DEFAULT_DYNSEC_ADMIN} MQTT_DYNSEC_ADMIN_PASSWORD=${MQTT_DYNSEC_ADMIN_PASSWORD:-DEFAULT_DYNSEC_PASSWORD} -echo "Admin/Pass: ${MQTT_DYNSEC_ADMIN_USER}/${MQTT_DYNSEC_ADMIN_PASSWORD}" ## DEBUG +# echo "Admin/Pass: ${MQTT_DYNSEC_ADMIN_USER}/${MQTT_DYNSEC_ADMIN_PASSWORD}" ## DEBUG # Set the Admin Credentials for RBAC control via Dyamic Security Plugin mosquitto_ctrl dynsec init ${DYNSEC_FILE_PATH} ${MQTT_DYNSEC_ADMIN_USER} ${MQTT_DYNSEC_ADMIN_PASSWORD} @@ -31,4 +31,4 @@ mosquitto_ctrl dynsec init ${DYNSEC_FILE_PATH} ${MQTT_DYNSEC_ADMIN_USER} ${MQTT_ chmod 700 ${DYNSEC_FILE_PATH} chown 1883:1883 ${DYNSEC_FILE_PATH} -exec "$@" \ No newline at end of file +exec "$@" From 7275eac2422ed310523a92733b16cb90d741ccd5 Mon Sep 17 00:00:00 2001 From: Tommy Hartmann Date: Sat, 24 Feb 2024 10:39:09 +0100 Subject: [PATCH 4/8] Update apps/eclipse-mosquitto/metadata/description.md https://github.com/runtipi/runtipi-appstore/pull/2549#discussion_r1501006300 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/eclipse-mosquitto/metadata/description.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/eclipse-mosquitto/metadata/description.md b/apps/eclipse-mosquitto/metadata/description.md index 1b81b65a..4ae07231 100755 --- a/apps/eclipse-mosquitto/metadata/description.md +++ b/apps/eclipse-mosquitto/metadata/description.md @@ -19,7 +19,7 @@ protocol websockets ## Cedalo Management Center -[Caledo Management Center](https://github.com/cedalo/management-center) allows to easily manage, monitor and inspect instances of Eclipse Mosquitto. There are some pro features that can only be activated by getting a license from cedalo. +[Cedalo Management Center](https://github.com/cedalo/management-center) allows to easily manage, monitor and inspect instances of Eclipse Mosquitto. There are some pro features that can only be activated by getting a license from cedalo. ![caledo_mgm_center.png](caledo_mgm_center.png) From 1e074593c2c6abf239743354658a9d682e1bb811 Mon Sep 17 00:00:00 2001 From: Tommy Hartmann Date: Sat, 24 Feb 2024 10:48:51 +0100 Subject: [PATCH 5/8] Update apps/eclipse-mosquitto/metadata/description.md added the suggested note about securing websockets --- apps/eclipse-mosquitto/metadata/description.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/eclipse-mosquitto/metadata/description.md b/apps/eclipse-mosquitto/metadata/description.md index 4ae07231..71db6cff 100755 --- a/apps/eclipse-mosquitto/metadata/description.md +++ b/apps/eclipse-mosquitto/metadata/description.md @@ -3,6 +3,7 @@ this app consists of two images providing an mqtt broker and an UI for managing access to the broker. The configuration is adapted from the github repo: [shantanoo-desai/mqtt-rbac-docker-init](https://github.com/shantanoo-desai/mqtt-rbac-docker-init) + ## Eclipse Mosquitto [Eclipse Mosquitto](https://mosquitto.org/) is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. Mosquitto is lightweight and is suitable for use on all devices from low power single board computers to full servers. @@ -17,6 +18,11 @@ listener 9001 protocol websockets ``` +**Note** +WebSockets, while powerful, can introduce vulnerabilities if left unsecured. They should be secured using TLS/encryption. +For more detailed information the [mosquitto documentation](https://mosquitto.org/man/mosquitto-conf-5.html). + + ## Cedalo Management Center [Cedalo Management Center](https://github.com/cedalo/management-center) allows to easily manage, monitor and inspect instances of Eclipse Mosquitto. There are some pro features that can only be activated by getting a license from cedalo. @@ -35,7 +41,6 @@ By default the following features are provided: The access to the broker is handled by the [dynamic-security plugin](https://mosquitto.org/documentation/dynamic-security/) in the mosquitto broker. The configuration is stored in the file `/runtipi/app-date/eclipse-mosquitto/data/config/dynamic-security.json`. This file is generated during the first launch of the the mosquitto image. - ## Links ### See the following links for more information on MQTT: From 4a43b92493d5dee357c39cf180c0b290527f3d5f Mon Sep 17 00:00:00 2001 From: Tommy Hartmann Date: Sat, 24 Feb 2024 10:55:27 +0100 Subject: [PATCH 6/8] Update apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh https://github.com/runtipi/runtipi-appstore/pull/2549#discussion_r1501006292 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh b/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh index cea56d77..1333a6fe 100644 --- a/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh +++ b/apps/eclipse-mosquitto/data/scripts/dynsec-setup.sh @@ -20,8 +20,8 @@ DEFAULT_DYNSEC_PASSWORD=securePassword DYNSEC_FILE_PATH=/mosquitto/config/dynamic-security.json # Set values if provided via Environment Variables in the Docker Init Container -MQTT_DYNSEC_ADMIN_USER=${MQTT_DYNSEC_ADMIN_USER:-DEFAULT_DYNSEC_ADMIN} -MQTT_DYNSEC_ADMIN_PASSWORD=${MQTT_DYNSEC_ADMIN_PASSWORD:-DEFAULT_DYNSEC_PASSWORD} +MQTT_DYNSEC_ADMIN_USER=${MQTT_DYNSEC_ADMIN_USER:-$DEFAULT_DYNSEC_ADMIN} +MQTT_DYNSEC_ADMIN_PASSWORD=${MQTT_DYNSEC_ADMIN_PASSWORD:-$DEFAULT_DYNSEC_PASSWORD} # echo "Admin/Pass: ${MQTT_DYNSEC_ADMIN_USER}/${MQTT_DYNSEC_ADMIN_PASSWORD}" ## DEBUG From 02ef121e3f43dc9a0935e1482c9efc2dddc0df95 Mon Sep 17 00:00:00 2001 From: Tommy Hartmann Date: Sat, 24 Feb 2024 11:23:39 +0100 Subject: [PATCH 7/8] updated apps/eclipse-mosquitto/data/config/mosquitto.conf removed reference to the init container because the init container does not exist and the creation of the file will be handled in the mosquitto-broker container --- apps/eclipse-mosquitto/data/config/mosquitto.conf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/eclipse-mosquitto/data/config/mosquitto.conf b/apps/eclipse-mosquitto/data/config/mosquitto.conf index 28c1794b..377870e7 100755 --- a/apps/eclipse-mosquitto/data/config/mosquitto.conf +++ b/apps/eclipse-mosquitto/data/config/mosquitto.conf @@ -19,8 +19,7 @@ listener 1883 # Dynamic Security Plugin plugin /usr/lib/mosquitto_dynamic_security.so -# Path to the Dynamic Security JSON file -# WILL BE GENERATED THROUGH INIT CONTAINER +# Path to the Dynamic Security JSON file, will be generated on first launch plugin_opt_config_file /mosquitto/config/dynamic-security.json # Ever User / Client should follow the given RBAC rules From f49d02f2698e0d2bdd1c0fc6046ef9ded7544b82 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Sun, 25 Feb 2024 11:44:47 +0100 Subject: [PATCH 8/8] fix:(mosquitto): configs --- apps/eclipse-mosquitto/docker-compose.yml | 41 +++++++++++----------- apps/zigbee2mqtt/config.json | 14 +++----- apps/zigbee2mqtt/docker-compose.yml | 9 ++--- apps/zigbee2mqtt/metadata/logo.jpg | Bin 29833 -> 25003 bytes 4 files changed, 30 insertions(+), 34 deletions(-) diff --git a/apps/eclipse-mosquitto/docker-compose.yml b/apps/eclipse-mosquitto/docker-compose.yml index 8fae829a..925014ae 100755 --- a/apps/eclipse-mosquitto/docker-compose.yml +++ b/apps/eclipse-mosquitto/docker-compose.yml @@ -1,6 +1,26 @@ version: '3.7' services: + eclipse-mosquitto: + image: eclipse-mosquitto:2.0.18 + container_name: eclipse-mosquitto + environment: + - TZ=${TZ} + - MQTT_DYNSEC_ADMIN_USER=admin + - MQTT_DYNSEC_ADMIN_PASSWORD=${MQTT_ADMIN_PASSWORD} + ports: + - 1883:1883 + command: ['/dynsec-setup.sh', '/usr/sbin/mosquitto', '-c', '/mosquitto/config/mosquitto.conf'] + expose: + - 1883 + volumes: + - ${APP_DATA_DIR}/data/data:/mosquitto/data + - ${APP_DATA_DIR}/data/config:/mosquitto/config + - ${APP_DATA_DIR}/data/scripts/dynsec-setup.sh:/dynsec-setup.sh + restart: unless-stopped + networks: + - tipi_main_network + mosquitto-management-center: image: cedalo/management-center:dev container_name: mosquitto-management-center @@ -18,7 +38,7 @@ services: expose: - 8088 depends_on: - - mosquitto-broker + - eclipse-mosquitto networks: - tipi_main_network restart: unless-stopped @@ -47,22 +67,3 @@ services: traefik.http.routers.mosquitto-local.entrypoints: websecure traefik.http.routers.mosquitto-local.service: mosquitto-web traefik.http.routers.mosquitto-local.tls: true - mosquitto-broker: - image: eclipse-mosquitto:2.0.18 - container_name: mosquitto-broker - environment: - - TZ=${TZ} - - MQTT_DYNSEC_ADMIN_USER=admin - - MQTT_DYNSEC_ADMIN_PASSWORD=${MQTT_ADMIN_PASSWORD} - ports: - - 1883:1883 - command: ["/dynsec-setup.sh", "/usr/sbin/mosquitto", "-c", "/mosquitto/config/mosquitto.conf"] - expose: - - 1883 - volumes: - - ${APP_DATA_DIR}/data/data:/mosquitto/data - - ${APP_DATA_DIR}/data/config:/mosquitto/config - - ${APP_DATA_DIR}/data/scripts/dynsec-setup.sh:/dynsec-setup.sh - restart: unless-stopped - networks: - - tipi_main_network diff --git a/apps/zigbee2mqtt/config.json b/apps/zigbee2mqtt/config.json index 658e580f..57f91f81 100755 --- a/apps/zigbee2mqtt/config.json +++ b/apps/zigbee2mqtt/config.json @@ -6,11 +6,8 @@ "exposable": true, "id": "zigbee2mqtt", "tipi_version": 1, - "version": "1.35", - "categories": [ - "utilities", - "automation" - ], + "version": "1.35.3", + "categories": ["utilities", "automation"], "description": "Zigbee to MQTT bridge, get rid of your proprietary Zigbee bridges", "short_desc": "Zigbee to MQTT bridge", "author": "@Koenkk", @@ -25,8 +22,5 @@ "env_variable": "Z2M_DEVICE" } ], - "supported_architectures": [ - "arm64", - "amd64" - ] -} \ No newline at end of file + "supported_architectures": ["arm64", "amd64"] +} diff --git a/apps/zigbee2mqtt/docker-compose.yml b/apps/zigbee2mqtt/docker-compose.yml index 83d14c26..23d995cb 100644 --- a/apps/zigbee2mqtt/docker-compose.yml +++ b/apps/zigbee2mqtt/docker-compose.yml @@ -1,21 +1,22 @@ -version: "3.7" +version: '3.7' services: - zigbee2mqtt: container_name: zigbee2mqtt - image: koenkk/zigbee2mqtt:1.35 + image: koenkk/zigbee2mqtt:1.35.3 environment: - TZ=${TZ} volumes: - ${APP_DATA_DIR}/data/:/app/data devices: - ${Z2M_DEVICE}:/dev/ttyACM0 - ports: + ports: - ${APP_PORT}:8080 expose: - 8080 restart: unless-stopped + networks: + - tipi_main_network labels: # Main traefik.enable: true diff --git a/apps/zigbee2mqtt/metadata/logo.jpg b/apps/zigbee2mqtt/metadata/logo.jpg index 0f9621f613ee4a53b28eac9830af43ccf944153f..b0e0de262ec63d5964bbf40ceaabf22766c94203 100644 GIT binary patch literal 25003 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ξ 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 sDu2|Dj-H;_j_xjpil(4%Cd&aq46nR