Containers Docker

Bonjour à tous :wave:

Petit sujet pour rassembler ici vos containers et compose de ceux que vous utilisez en corrélations avec Home Assistant.

Je vais moi-même l’alimenter dès que j’ai un moment. :+1:

Pour en citer quelques-uns (les compose suivront) :

  • Home Assistant (et oui :wink:)
  homeassistant:
    container_name: homeassistant
    image: homeassistant/raspberrypi4-homeassistant:2021.7.1
    volumes:
      - /home/homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
      - /media/nas:/media
    restart: unless-stopped
    network_mode: host
  • Nginx proxy manager
##################################################
  # NGINX PROXY MANAGER
##################################################
  npm:
    image: 'jc21/nginx-proxy-manager:2.9.2'
    restart: always
    ports:
      # Public HTTP Port:
      - '80:80'
      # Public HTTPS Port:
      - '443:443'
      # Admin Web Port:
      - '81:81'
    environment:
      # These are the settings to access your db
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "nginx"
      DB_MYSQL_PASSWORD: "nginx"
      DB_MYSQL_NAME: "nginx"
      # If you would rather use Sqlite uncomment this
      # and remove all DB_MYSQL_* lines above
      # DB_SQLITE_FILE: "/data/database.sqlite"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./docker/npm/data:/data
      - ./docker/npm/data/letsencrypt:/etc/letsencrypt
    depends_on:
      - db
################################################
  # MARIA-DB (DEPENDANCE DE NGINX-PROXY-MANAGER
################################################
  db:
    image: 'jc21/mariadb-aria:10.4.15'
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'nginx'
      MYSQL_DATABASE: 'nginx'
      MYSQL_USER: 'nginx'
      MYSQL_PASSWORD: 'nginx'
    volumes:
      - ./docker/npm/mysql:/var/lib/mysql

  • File Editor
################################################
  # Configurator
################################################
  hass-configurator:
    image: "causticlab/hass-configurator-docker:arm" 
    restart: always
    ports:
      - "3218:3218/tcp" 
  # networks:
    #  - host
    volumes:
      - "./docker/fileditor/configurator-config:/config"
      - "/home/homeassistant/config:/hass-config"
    environment:
      - HC_BASEPATH=/hass-config
      - HC_ENFORCE_BASEPATH=true
      - HC_DIRSFIRST=true
  • DuckDNS
################################################
  # DuckDNS - Update IP to DNS
################################################
  duckdns:
    #image: linuxserver/duckdns:ce996582-ls65
    image: linuxserver/duckdns:latest
    container_name: duckdns
    environment:
      #- PUID=1000
      #- PGID=1000
      - TZ=Europe/Paris
      - SUBDOMAINS=<ndd1>,<ndd2> #mise a jour de ndd1.duckdns.org  et ndd2.duckdns.org
      - TOKEN=<TOKEN>

Hâte de vous lire :+1:

1 « J'aime »

Hello
De mon côté :
Hardware: NUC6CAYS avec 6 Go de Ram.
SSD: 240 Go
Linux Ubuntu
Quasi tout est en docker.
En tout 23 dockers tournent sans aucune contrainte pour ni la RAM ni la charge CPU.
Le seul utilitaire qui n’est pas en docker et qui est lié directement avec Home Assistant est NGINX pour le reverse proxy.

Liste des dockers liés à Home Assistant:

image: mariadb/server:latest (pour remplacer la base standard)
image: nodered/node-red:latest
image: ghcr.io/linuxserver/duckdns:latest
image: « infinityofspace/certbot_dns_duckdns:latest ». ( certificats let’s encrypt duckdns en dns-01’
image: influxdb:latest ( en version 2.0)
image: telegraf:latest
image: grafana/grafana:latest
image: grafana/grafana-image-renderer:latest
image: eclipse-mosquitto:latest
image: phpmyadmin:latest
image: pbranly/pygazpar_test:0.02.01 ( pour récupérer ma conso gaz vers InfluxDB )
image: esphome/esphome:latest

Plus bien d’autres sans relation avec HA

Phil

édit: ajout matériel.
edit: ajout docker-compose:

version: "3.8"
services:

# Define a home assistant service

  homeassistant:
    container_name: home-assistant
    image: homeassistant/home-assistant:latest
#    image: homeassistant/home-assistant:rc
    environment:
      - TZ=Europe/Paris
    volumes:
      - ./homeassistant:/config
      - /etc/localtime:/etc/localtime:ro
    entrypoint: /bin/bash -c "apk add firefox && python -m homeassistant --config /config"
    network_mode: host
    restart: unless-stopped

    depends_on:
    # MariaDB is optional (only if you would like to use a different database for HA).
     - mariadb
     - influxdb2
    # Deconz is optional (only if you use the deconz Zigbee hub).
#    - deconz
#    user: "${LOCAL_USER}:${LOCAL_USER}"
  
#--------------------------------------------------------------

# Define a mariadb service

  mariadb:
   image: mariadb/server:latest
   container_name: mariadb
   restart: always
   environment:
     MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
     MYSQL_DATABASE: ha_db
     MYSQL_USER: homeassistant
     MYSQL_PASSWORD: "${HA_MYSQL_PASSWORD}"
#   user: "${LOCAL_USER}:${LOCAL_USER}"

   volumes:
    # Local path where the database will be stored.
     - ./mariadb:/var/lib/mysql     
   ports:
     - "3306:3306"
     
#-------------------------------------------------------

# Define a portainer service

  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    environment:
      - TZ=Europe/Paris
    restart: always
    ports:
      - 9002:9000
      - 8000:8000
    command: -H unix:///var/run/docker.sock
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./portainer:/data

#--------------------------------------------------------------

# Define a node-red service

  node-red:
    image: nodered/node-red:latest
    container_name: nodered
    environment:
      - TZ=Europe/Paris
    depends_on: 
     - homeassistant
    ports:
      - "1880:1880"
#    networks:
#      - node-red-net
    volumes:
      - ./nodered:/data
    restart: always
      
#-----------------------------------------------------------

# Define a watchtower service

  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    environment:
      - TZ=Europe/Paris

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 82800
    restart: always

#-----------------------------------------------------------

# Define a duckdns  service

  duckdns:
    image: ghcr.io/linuxserver/duckdns:latest
    container_name: duckdns
    environment:
      - PUID=1000 #optional
      - PGID=1000 #optional
      - TZ=Europe/Paris
      - SUBDOMAINS=xxxxxxxxx    #<--------------------- a modifier
      - TOKEN=xxxxxxxxxxxxxxxxxxxxx    #<--------------------- a modifier
      - LOG_FILE=true #optional
    volumes:
      - ./duckdns/config:/config #optional
    restart: always

#----------------------------------------------------------

# Define a certbot duckdns service

  certbot:
    image: "infinityofspace/certbot_dns_duckdns:latest"
    container_name: "certbot_dns_duckdns"
    command: certonly
      --non-interactive
      --agree-tos
      --email ${EMAIL_certbot}
      --preferred-challenges dns
      --authenticator dns-duckdns
      --dns-duckdns-token ${TOKEN_duckdns}
      --dns-duckdns-propagation-seconds 30
      -d ${DOMAIN_certbot}
    volumes:
      - "/etc/letsencrypt:/etc/letsencrypt"
      - "./certbot:/var/log/letsencrypt"
# nota : add the following line in the cron ( except if using certbot cron service): docker run --rm -v "/etc/letsencrypt:/etc/letsencrypt" -v "/home/docker/certbot:/var/log/letsencrypt" infinityofspace/certbot_dns_duckdns:latest certbot renew

# Define a certbot cron service ( only if previous cron is not used)
  certbot_cron:
    build: /home/docker/certbot/cron
    container_name: "certbot_cron"
    restart: unless-stopped
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - CERTBOT_CONTAINER_NAME=certbot_dns_duckdns
      
#-----------------------------------------------------------



# Define a influxdb2 service

  influxdb2:
    image: influxdb:latest
    container_name: influxdb2
    ports:
       - '8087:8086'
    volumes:
      - ./influxdb2/data:/var/lib/influxdb2
      - ./influxdb2/config:/etc/influxdb2
    environment:
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=${INFLUXDB_ADMIN_USER}
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_ADMIN_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=home
      - DOCKER_INFLUXDB_INIT_BUCKET=bucket0
      - DOCKER_INFLUXDB_INIT_RETENTION=1w
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUXDB_INIT_ADMIN_TOKEN}
      - TZ=Europe/Paris
    restart: always
    networks:
      - monitoring_network

#-------------------------------------------------------

# Define a telegraf  service

  telegraf:
    image: telegraf:latest
    container_name: telegraf
    environment:
       - TZ=Europe/Paris
    ports:
      - 6514:6514
    depends_on:
      - influxdb2
    networks:
      - monitoring_network
    links:
      - influxdb2
    environment:
      HOST_PROC: /rootfs/proc
      HOST_SYS: /rootfs/sys
      HOST_ETC: /rootfs/etc
    volumes:
      - ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
      - /var/run/docker.sock:/var/run/docker.sock  # nécessaire pour remonter les données du démon Docker
      - /sys:/rootfs/sys:ro
      - /proc:/rootfs/proc:ro
      - /etc:/rootfs/etc:ro

    restart: always
#
# to get the telegraf.conf use the following command : docker run --rm telegraf telegraf config > telegraf/telegraf.conf

#-------------------------------------------------------

# Define a grafana service

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: always
    user: "0"
    ports:
      - 3000:3000
    networks:
      - monitoring_network
    links:
      - influxdb2:influxdb2
    environment:
      - GF_RENDERING_SERVER_URL= "http://renderer:8081/render"
      - GF_RENDERING_CALLBACK_URL=http://grafana:3000
      - GF_LOG_FILTERS= "rendering=debug"
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-influxdb-08-datasource,grafana-kairosdb-datasource,grafana-piechart-panel,grafana-simple-json-datasource,grafana-worldmap-panel,farski-blendstat-panel,blackmirror1-singlestat-math-panel,yesoreyeram-boomtable-panel,pr0ps-trackmap-panel
      - GF_SECURITY_ALLOW_EMBEDDING=true
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - TZ=Europe/Paris
    volumes:
      - ./grafana:/var/lib/grafana
      - ./grafana/log:/var/log/grafana
      - ./grafana/config/custom.ini:/etc/grafana/grafana.ini

    depends_on:
      - renderer
      - influxdb2

# nota: cd to /home/docker then 
# docker run --rm --entrypoint /bin/bash grafana/grafana:latest -c 'cat $GF_PATHS_CONFIG' > grafana.ini
# copy in /home/grafana/config as custom.ini

#------------------------------------------

# Define a renderer service

  renderer:
    image: grafana/grafana-image-renderer:latest
    container_name: renderer
    restart: always
    ports:
      - 8081:8081
    networks:
      - monitoring_network
 #. volumes:
 #     - /home/docker/renderer/config.json:/usr/src/app/config.json

    environment:
      ENABLE_METRICS: 'true'
      
#------------------------------------------------------

# Define a mqtt service

  mqtt:
    container_name: mosquitto
    image: eclipse-mosquitto:latest 
    environment:
      - TZ=Europe/Paris
    restart: always   
    ports:
      - "1883:1883"
      - "9003:9001"
    volumes:
       - ./mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf
       - ./mosquitto/log:/mosquitto/log
       - ./mosquitto/data:/mosquitto/data
 
#-----------------------------------------------------------


      
# Define a phpmyadmin service

  phpmyadmin:
    container_name: phpmyadmin
    image: phpmyadmin:latest
    restart: always
    ports:
      - 8085:80
    environment:
      - PMA_ARBITRARY=1
      - TZ=Europe/Paris

    volumes:
      - ./phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php


#---------------------------------------

#define a pygazpar2 service

  pygazpar2:
    container_name: pygazpar2
    image: pbranly/pygazpar_test:0.02.01
    command: pygazpar_to_influxdb.py --influxdb2-host 192.168.1.8:8087  --influxdb2-token xxxxxxxxxxxxxxxxxx  --influxdb2-bucket home_assistant  --influxdb2-org home  --pygazpar-login 'xxxxx@xxxxx.fr' --pygazpar-password 'xxxxxxxxxxxxx' -vvv
    depends_on:
      - influxdb2
      
      
#------------------------------------------


# define a esphome service

  esphome:
    container_name: ESPHome
    environment:
      - TZ=Europe/Paris
    volumes:
      - './esphome:/config'
    restart: always
    network_mode: host
    image: esphome/esphome:latest
#    devices:
#      - /dev/ttyUSB0:/dev/ttyUSB0

    
#---------------------------------

# define a dashy service


  dashy:
    image: lissy93/dashy:latest
    container_name: Dashy
    # Pass in your config file below, by specifying the path on your host machine
    volumes:
      - ./dashy/my-config.yml:/app/public/conf.yml
      - ./dashy/icons/:/app/public/item-icons/
    ports:
      - 4000:80
    # Set any environmental variables
    environment:
      - NODE_ENV=production
    # Specify your user ID and group ID. You can find this by running `id -u` and `id -g`
      - UID=0
      - GID=0
    # Specify restart policy
    restart: unless-stopped
    # Configure healthchecks
    healthcheck:
      test: ['CMD', 'node', '/app/services/healthcheck']
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s
      
#---------------------------------------------



        
networks:
#  node-red-net:
  monitoring_network:
1 « J'aime »

Je créerai un sujet dédié mais tu peux ajouter en éditant ton post ton matériel ?

Belle liste :+1:

Je reviendrais à la charge pour les compose… :innocent:

Fait !
Oui ce sera intéressant de donner ses compose.
Avec un minimum d’explications
Phil

1 « J'aime »

Chuwi Herobox : Celeron N4100 / 8 Go RAM / 256 SSD
OS : Debian 10.9

Tout est en docker avec :
Home Assistant
grafana
mosquitto
Deconz
VSCode
InfluxDB
Nginx (en mode reverse proxy)
ZWave_JS

2 « J'aime »

Depuis que j’ai gouté à Docker je ne peux plus m’en passer. Du coup tout est dans des conteneurs ici sur un petit serveur NUC sous Ubuntu 20.04 LTS :

Home Assistant
Deconz pour le protocole ZigBee
Mosquitto pour MQTT
Zwavejs2mqtt pour le protocole Zwave
NodeRed mais sans l’utiliser réellement
InfluxDB pour stocker les données dans une base de données indépendantes
Grafana en prévision de faire quelques tableaux de bord
Iobroker pour remonter les informations de mes caméras Eufy
VSCode

Peut-être pas forcément en rapport avec Home Assistant mais je remonte des infos de ces conteneurs dedans quand même :
AdGuard pour le blocage de pub
Unifi Controller pour gérer une partie du réseau

Les conteneurs très utiles :
Portainer pour la gestion de ces conteneurs justement
Traefik pour le reverse proxy
Heimdall qui permet de se faire un joli portail perso avec les liens vers les applis importantes.

2 « J'aime »

Bonjour à tous,

Sur un NUC avec l’image HASSIO.

  • Home Assistant
    → Zigbee2mqtt
    → MariaDB
    → Mosquitto Broker.

Sur une VM Proxmox
→ Docker Compose
Portainer.io
Avec :

image

Voilou :slight_smile:

1 « J'aime »

Étant sur Unraid je ne pourrai pas donner mes compose ;).
Je ne vois qu’un container que j’utilise pour home assistant non listé : frigate.

1 « J'aime »

Dans ce cas, voilà le compose de frigate chez moi
Encore en phase d’optimisation pour l’accélération hw pi4 qui marche pas !!

version: "3.9"

networks:
  nvr:
    name: nvr

services:
  frigate:
    image: blakeblackshear/frigate:0.9.0-rc2-aarch64
    container_name: frigate
    hostname: frigate
    privileged: true # this may not be necessary for all setups
    restart: unless-stopped
    shm_size: '1gb'
    devices:
      - /dev/bus/usb:/dev/bus/usb
      # VAAPI Devices
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
      # RPi 4
      - /dev/vchiq:/dev/vchiq
    environment:
      - TIMEZONE=Europe/Paris
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /dev/shm:/config/data/transcoding-temp/transcodes
      - /opt/vc/lib:/opt/vc/lib   ## OpenMax Libraries
      - ./config/frigate.yml:/config/config.yml:ro
      - ./media/:/media/frigate
      - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "5000:5000"
      - "1935:1935" # RTMP feeds
    environment:
      FRIGATE_RTSP_PASSWORD: "password"
    networks: 
      - nvr

et le frigate.yaml aussi en cours de tests/évolution

# frigate.yml
detectors:
  coral:
    type: edgetpu
    device: usb
  # cpu1:
  #   type: cpu

ffmpeg:
  global_args:
    - '-loglevel'
    - debug
  input_args: 
    - '-rtsp_transport'
    - tcp
  hwaccel_args:
    - '-hwaccel_output_format'
    - yuv420p
    - '-c:v' #codec video
    - h264_v4l2m2m

    # - '-codec:v:0'
    # - h264_v4l2m2m
    # - '-init_hw_device'
    # - '-hwaccel_device'
    # - /dev/dri/card0
    # - hw 
    # - -hwaccel
    # - qsv

    # - h264_qsv
    # - h264_v4l2h264dec 
    # - h264_omx
    # - h264_mmal
    # - h264_qsv
    # - h264_cuvid
    # - /dev/dri/renderD128
    # - cuda
    # - auto
    # - '-qsv_device'

    # - /dev/video10



mqtt:
  host: 192.168.1.69
  port: 1883
  topic_prefix: frigate
  client_id: frigate
  user: user
  password: password
  stats_interval: 60

birdseye:
  enabled: False

cameras:
  # usb:
  #   ffmpeg:
  #     inputs:
  #     - path: /dev/video0
  #       roles:
  #       - clips
  #       - detect
  #   input_args: -f video4linux2 -avoid_negative_ts make_zero -fflags +genpts+discardcorrupt -use_wallclock_as_timestamps 1  -f yuyv422
  #   output_args:
  #     clips: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -f yuyv422 -an
  #   detect:                                                                       
  #     enabled: false                                                               
  #     max_disappeared: 15
  #     width: 1280
  #     height: 720
  #     fps: 5


  contre-allee:
    ffmpeg:
      inputs:
        - path: rtsp://192.168.1.60:554/h264D1?username=admin&password=password
          roles:
            - rtmp
            - record
        #- path: rtsp://192.168.1.60:554/h264CIF?username=admin&password=password
        - path: rtsp://192.168.1.60:554/h264?username=admin&password=password
          roles:
            - detect
    best_image_timeout: 15                                                        
    detect:                                                                       
      enabled: True                                                               
      max_disappeared: 15
      width: 2592
      height: 1944
      fps: 5
    objects:
      track:
        - airplane
        - bicycle
        - bird
        # - bus
        - car
        - cat
        - dog
        - motorcycle
        - person
        # - truck
      filters:
        airplane:
          mask:
            - 0,1944,2592,1944,2568,1404,2008,1006,1600,1366,1135,1334,1003,1241,1013,1032,0,932
        person:
          mask:
            - 2592,0,2592,1318,0,1213,0,0
        bicycle:
          mask:
            - 2592,0,2592,1318,0,1213,0,0
        truck:
          mask:
            - 2592,0,2592,1318,0,1213,0,0
        motorcycle:
          mask:
            - 2592,0,2592,1318,0,1213,0,0
        cat:
          mask:
            - 2592,0,2592,1318,0,1213,0,0
        dog:
          mask:
            - 2592,0,2592,1318,0,1213,0,0
        car:
          mask:
            - 2592,0,2592,1318,0,1213,0,0
            - 1634,1944,1523,1802,857,1757,684,1944
    motion:
      threshold: 50
    snapshots:
      enabled: true
      clean_copy: True
      timestamp: True
      bounding_box: True
      crop: False
      retain:
        default: 2
      objects:
        - airplane
        - bicycle
        - bird
        # - bus
        - car
        - cat
        - dog
        - motorcycle
        - person
        # - truck
    record:
      enabled: True
      retain_days: 2
      events:
        enabled: False
        max_seconds: 300
        pre_capture: 10
        post_capture: 5
        objects:
          - airplane
          - bicycle
          - bird
          # - bus
          - car
          - cat
          - dog
          - motorcycle
          - person
        # - truck

logger:
  default: debug
  logs:
    frigate.video: debug

Salut à tous,

Pour ma part, je me suis mis à docker il y a 3 semaines. Je suis un « vieux de la vieille » et j’utilisais essentiellement des containers LCX.
A ce jour, j’ai migré tout ce qui n’est pas « vitale » à la domotique (supervision, DB long terme, …)

grafana/grafana             
influxdb                    
chronograf                  
jlesage/nginx-proxy-manager          
nuntz/telegraf-snmp              
deetoreu/nut-http             

J’ai un docker pour mosquitto (qui fonctionne parfaitement) par ex, mais j’utilise encore le LCX…
Ce qui m’inquiète un peu avec Docker, c’est que si l’os crash, c’est un paquet de service qui tombent c’est pour ça que j’ai gardé pour habitude l’utilisation des CT dans Proxmox. A tord certainement mais les habitudes…

En fonctionnement, c’est pareil… Proxmox se banane, et tes CT ne seront pas plus opérationnels.
Pour docker, l’isolation est similaire à celle de LXC.
La grosse différence, c’est que LXC c’est de la virtualisation d’OS… Docker de la virtualisation d’appli…

Mais le serveur Docker est virtualité chez moi. Donc, si Proxmox se banane, plus de docker non plus ! Disons que Host->Proxmox->CT->Service me semble plus fiable que Host->Proxmox->VM->Docker->Service
Et puis, les backups et Snap des CT avant bidouille ne sont pas pour me déplaire :smiley:

Mais j’apprécie la facilité de déployer un service/appli sous docker… pas de dépendance, etc

Et backup et snapshot disponible également… :innocent: :blush:

1 « J'aime »

Tu as reçu ta clef coral :grin:
J’ai recu mon coral en m.2 aujourd’hui ca marche super plus de charge cpu et une inférence de 6 ms

Oui clé reçue depuis 1 semaine… Niveau perf sur le pi4 c’est pas terrible : 45ms et 35%…
C’est mieux que les 100% sans rien … mais si j’arrive pas à faire un truc meilleur ça va se terminer au dos du nuc, direct dans une VM

A la demande de @clemalex, je bouge mes docker compose Ici…

Docker compose de HA

version: '3.3'
services:
    homeassistant:
        container_name: homeassistant
        environment:
            - TZ=Europe/Paris
        volumes:
            - '/home/data/homeassistant/config:/config'
        network_mode: host
        image: 'homeassistant/home-assistant:2021.9.2'
        labels:
          - wud.tag.include=^\d+\.\d+\.\d+$
          - wud.watch=true

zigbee2mqtt:

  version: '3'
  services:
    zigbee2mqtt:
      container_name: zigbee2mqtt
      image: koenkk/zigbee2mqtt:1.21.1
      volumes:
        - /home/data/zigbee2mqtt/data:/app/data
        - /run/udev:/run/udev:ro
      devices:
        - /dev/ttyACM0:/dev/ttyACM0
      restart: always
      ports:
        - 8080:8080
      privileged: true
      environment:
        - TZ=Europe/Paris
      network_mode: bridge
      labels:
        - wud.tag.include=^\d+\.\d+\.\d+$
        - wud.watch=true

NodeRed:

version: "3.7"

services:
  nodered:
    container_name: nodered
    image: nodered/node-red:2.0.6
    environment:
      - TZ=Europe/Paris
    ports:
      - "1880:1880"
    volumes:
      - /home/data/nodered:/data
    restart: unless-stopped
    network_mode: bridge
    labels:
      - wud.tag.include=^\d+\.\d+\.\d+$
      - wud.watch=true

Samba

version: '3.3'
services:
    samba:
        command: '-s "data:/data:rw:moi" -u "1000:998:moi:docker:password"'
        container_name: samba
        ports:
            - '139:139'
            - '445:445'
        environment:
            - USERID=1000
            - GROUPID=998
        volumes:
            - '/home/data:/data'
        image: elswork/samba:3.2.7
        restart: unless-stopped
        network_mode: bridge
        labels:
          - wud.tag.include=^\d+\.\d+\.\d+.*$$
          - wud.watch=true

Les lignes « wud » c’est pour What’s up Docker?
Je l’utilise à la place de watchtower. Comme j’ai plusieurs environnement docker, je peux utiliser l’api pour portainer et wud pour « voir » tous mes dockers…

Mise a jour des composes du 1er post…

Car ça la fout mal de demander les compose sans donner les siens… :innocent:

Voila, j’ai édité mon post avec un extrait de mon docker-compose directement lié à home assistant.
Il y a une autre dizaine de dockers dans mon « compose » mais non liés a HA

Tu veux créer un sujet dédié ? Ça peut être intéressant ! :wink:

Du genre

Vos containers non liés à HA

:smiling_face_with_three_hearts:

Merci pour le partage. Je crois que je vais copier ton samba :slight_smile:

Si je comprends bien tu as un docker compose par conteneur ?
Je suis encore en train de chercher la méthode l plus simple mais surtout la plus sûr pour mettre à jour les conteneurs sans forcément impacter les autres… J’ai commencé avec des docker run, puis avec un docker compose global, là je teste en faisant plusieurs stack sous Portainer mais je cela ne me convainc pas non plus.