argh no es genial 
Para evitar todos estos inconvenientes, paso por docker compose y portainer.
Docker compose me permite poner lo que quiero y fijar las versiones, y portainer me permite gestionar todo eso con una interfaz gráfica agradable (con acceso a los registros, estadísticas de cpu/ram/disco, etc.).
Crea una vez el repositorio para portainer:
docker volume create portainer_data
Y el docker run que lanzas es:
docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Luego puedes conectarte a http://monipdemachine:9000
He creado una Stack llamada gladys-assistant donde he puesto dentro el docker compose:
version: "3"
services:
gladys:
image: gladysassistant/gladys:v4
container_name: gladys
restart: always
privileged: true
network_mode: host
cgroup: host
logging:
driver: "json-file"
options:
max-size: 10m
environment:
NODE_ENV: production
SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
SERVER_PORT: 80
TZ: Europe/Paris
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/gladysassistant:/var/lib/gladysassistant
- /dev:/dev
- /run/udev:/run/udev:ro
watchtower:
image: containrrr/watchtower
restart: always
container_name: watchtower
command: --cleanup --include-restarting
volumes:
- /var/run/docker.sock:/var/run/docker.sock
et a esto puedes añadir tu Matterbridge, tu z2m dedicado, tu broker MQTT, tu zwavejs-ui, node-red, etc. si bien, por supuesto, quieres gestionarlo en lugar de Gladys.
matterbridge:
container_name: matterbridge
image: luligu/matterbridge:latest # Matterbridge image with the latest tag
network_mode: host # Ensures the Matter mdns works
restart: always # Ensures the container always restarts automatically
volumes:
- "${HOME}/Matterbridge:/root/Matterbridge" # Mounts the Matterbridge plugin directory
- "${HOME}/.matterbridge:/root/.matterbridge" # Mounts the Matterbridge storage directory
zigbee2mqtt:
image: koenkk/zigbee2mqtt:2.2.1
# image: koenkk/zigbee2mqtt:1.42.0
container_name: zigbee2mqtt
restart: unless-stopped
environment:
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- NODE_ENV=production
- TZ=Europe/Berlin
volumes:
- ./data:/app/data:rw
- /run/udev:/run/udev:ro
ports:
- 12000:12000
network_mode: host
devices:
# Make sure this matched your adapter location
- /dev/serial/by-id/usb-Txxxxxxxyyyyyyyy:/dev/ttyACM0
# run a rootless container with Docker Compose by adding the following attributes
# group_add:
# - dialout
# user: 1000:1000
Estos son ejemplos que debemos ajustar a nuestra configuración y, en particular, en la creación de estos directorios.
En cualquier caso, es lo que hago y funciona bastante bien en mi casa, puedo « jugar » con las diferentes versiones, siempre haciendo una copia de seguridad antes.
Con este método también puedo crear un gladys de prueba, por ejemplo:
version: '3'
services:
gladys:
# image: cicoub13/gladys:tuya-rain
image: gladysassistant/gladys:matter-integration
# image: sescandell/gladys-test:zjs-battery
# image: sescandell/gladys-test:pr-zwaveJsMeter
# image: gladysassistant/gladys:zigbee2mqtt-tuya-me201wz
# image: gladysassistant/gladys:dashboad-add-other-aggregate-functions
container_name: gladys-test
restart: always
privileged: true
network_mode: host
logging:
driver: "json-file"
options:
max-size: 10m
environment:
NODE_ENV: production
SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
SERVER_PORT: 8001
TZ: Europe/Paris
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./gladysassistant-test:/var/lib/gladysassistant
- /dev:/dev
- /run/udev:/run/udev:ro
mosquitto:
image: eclipse-mosquitto:2.0.20
container_name: gladys-test-mqtt
restart: unless-stopped
# command: mosquitto -c /mosquitto-no-auth.conf
environment:
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- VERSION=2.0.20
- DOWNLOAD_SHA256=azszderzbenrac6
- GPG_KEYS=azszderzbenr
- LWS_VERSION=4.2.1
- LWS_SHA256=azszderzbenr
volumes:
- ./mqtt-test/config:/mosquitto/config:rw
- ./mqtt-test/data:/mosquitto/data:rw
- ./mqtt-test/log:/mosquitto/log:rw
ports:
- 1888:1888
network_mode: host
matterbridge:
image: luligu/matterbridge:latest
container_name: gladys-test-matterbridge
restart: always
network_mode: host
volumes:
- ./matterbridge-test/Matterbridge:/root/Matterbridge
- ./matterbridge-test/.matterbridge:/root/.matterbridge
Para tu caso, creo que sería bueno gestionar z2m desde allí.
Sin embargo, debes desactivar la gestión de z2m por Gladys, luego haces tu portainer, inicias una pila (con z2m con 2.3.0 para la versión, por ejemplo) y la lanzas. Luego vuelves a Gladys y añades tu docker externo z2m:
Espero que recuperes todos tus pequeños.