Containers Docker

Ca date un peu !!!
Pourquoi monter une image de juillet 2021?
Essayes avec l’exemple contenu dans la doc officielle.

salut , j’ai teste les choses, j’ai proxmox avec une vm avec ha de prod

Regarde par là.

La version de compose que j’utilise est la 3.

Sinon, regarde la documentation :

Désolé mais rien compris à ta réponse.

je te disais que je test docker sur rpi

Je te montre un fichier docker-compose fonctionnel :

version: "2.1"
services:
  duplicati:
    image: lscr.io/linuxserver/duplicati:latest
    container_name: duplicati
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - CLI_ARGS= #optional
    volumes:
      - </path/to/appdata/config>:/config
      - </path/to/backups>:/backups
      - </path/to/source>:/source
    ports:
      - 8200:8200

Il te manque deux variables pour que le fichier fonctionne correctement : le numéro de version du fichier docker-compose utilisé, et la ligne service.

salut dans t’est docker compose tu a un ligle Labels: ca veut dire quoi et ca ser a quoi?

J’utilise le label principalement pour traefik.

Bonjour à tous,

Depuis que mon RPi a détesté une disjonction, j’essaie de passer mon installation de HA sur un Docker hébergé sur une machine plus puissante.
Lorsque je lance les 2 briques z2m et mosquitto, suite à un appairage, j’arrive à piloter mes lampes Traedfri mais dés que j’ajoute HA et la modification dans la config de z2m, impossible de piloter mes lampes.

Voici les 3 docker compose :

Le broker Mosquitto
version: "3.9"
# https://hub.docker.com/_/eclipse-mosquitto
services:
  broker:
    image: eclipse-mosquitto:latest
    container_name: broker
    user: 0:0
    environment:
      - TZ=Europe/Paris
    ports:
      - 1883:1883
      - 9001:9001
    volumes:
       - '/home/.../domotic/broker/config:/mosquitto/config'
       - '/home/.../domotic/broker/data:/mosquitto/data'
       - '/home/.../domotic/broker/log:/mosquitto/log'
    networks:
      - domotic-network
networks:
  domotic-network:
    external: true
zigbee2mqtt
version: "3.9"
services:
  zigbee2mqtt:
    image: koenkk/zigbee2mqtt:1.28.0
    container_name: zigbee2mqtt
    user: 0:0
    environment:
      - TZ=Europe/Paris
    ports:
      - 8080:8080
    volumes:
       - '/home/.../domotic/zigbee2mqtt/data:/app/data'
    devices:
    - /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_...-port0:/dev/ttyACM0
    networks:
      - domotic-network
networks:
  domotic-network:
    external: true
Home Assistant
version: "3.9"
services:
  homeassistant:
    image: homeassistant/home-assistant:2022.10.3
    container_name: homeassistant
    environment:
      - TZ=Europe/Paris
    ports:
      - 8123:8123
    volumes:
       - '/home/sylvain/Docker/domotic/homeassistant/config:/config'
    networks:
      - domotic-network
networks:
  domotic-network:
    external: true
Et la configuration de zigbee2mqtt
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://broker:1883
  user: '!secret user'
  password: '!secret password'
  discovery_prefix: homeassistant
serial:
  port: /dev/ttyACM0
frontend:
  port: 8080
devices: devices.yaml
advanced:
  log_level: debug
homeassistant:
  status_topic: homeassistant/status

Et voici les logs de z2m :

Zigbee2MQTT:debug 2022-10-15 19:18:20: Received MQTT message on 'zigbee2mqtt/ikea_400lm_cellier_porte/set' with data '{"state":"OFF"}'
Zigbee2MQTT:debug 2022-10-15 19:18:20: Publishing 'set' 'state' to 'ikea_400lm_cellier_porte'
Zigbee2MQTT:error 2022-10-15 19:18:37: Publish 'set' 'state' to 'ikea_400lm_cellier_porte' failed: 'Error: Command 0xbc33acfffed4f228/1 genOnOff.off({}, {"sendWhen":"immediate","timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":false,"direction":0,"srcEndpoint":null,"reservedBits":0,"manufacturerCode":null,"transactionSequenceNumber":null,"writeUndiv":false}) failed (Data request failed with error: 'MAC no ack' (233))'
Zigbee2MQTT:debug 2022-10-15 19:18:37: Error: Command 0xbc33acfffed4f228/1 genOnOff.off({}, {"sendWhen":"immediate","timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":false,"direction":0,"srcEndpoint":null,"reservedBits":0,"manufacturerCode":null,"transactionSequenceNumber":null,"writeUndiv":false}) failed (Data request failed with error: 'MAC no ack' (233))
    at ZStackAdapter.sendZclFrameToEndpointInternal (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/zStackAdapter.ts:415:23)
    at Queue.executeNext (/app/node_modules/zigbee-herdsman/src/utils/queue.ts:32:32)
Zigbee2MQTT:info  2022-10-15 19:18:37: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":"Publish 'set' 'state' to 'ikea_400lm_cellier_porte' failed: 'Error: Command 0xbc33acfffed4f228/1 genOnOff.off({}, {\"sendWhen\":\"immediate\",\"timeout\":10000,\"disableResponse\":false,\"disableRecovery\":false,\"disableDefaultResponse\":false,\"direction\":0,\"srcEndpoint\":null,\"reservedBits\":0,\"manufacturerCode\":null,\"transactionSequenceNumber\":null,\"writeUndiv\":false}) failed (Data request failed with error: 'MAC no ack' (233))'","meta":{"friendly_name":"ikea_400lm_cellier_porte"},"type":"zigbee_publish_error"}'

J’ai l’impression que les topics entre Z2M et HA ne sont pas corrects … :thinking:

edit :

Voici la configuration de zigbee2mqtt qui fonctionne :

la nouvelle configuration de zigbee2mqtt
permit_join: true
mqtt:
  server: mqtt://broker:1883
  user: '!secret user'
  password: '!secret password'
serial:
  port: /dev/ttyACM0
frontend:
  port: 8080
devices: devices.yaml
advanced:
  log_level: debug
homeassistant: true

Il fallait apparemment laisser z2m géré les topics via l’attribut homeassistant: true

Si ça peut aider !!

11 messages ont été scindés en un nouveau sujet : Problème de compréhension dans l’utilisation de Docker

Après quelques jours de productions et quelques nuits blanches de plus :
voici la mise à jour de mes dockers.

Portainer
  portainer:
    container_name: portainer
    image: portainer/portainer-ce:latest
    environment:
      - TZ=Europe/Paris
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./portainer:/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "9000:9000/tcp"
      - "9443:9443/tcp"
    restart: unless-stopped
Docker Proxy
  dockerproxy:
    container_name: dockerproxy
    image: tecnativa/docker-socket-proxy:latest
    environment:
      - TZ=Europe/Paris
      - BUILD=1
      - COMMIT=1
      - CONFIGS=1
      - CONTAINERS=1
      - DISTRIBUTION=1
      - EXEC=1
      - IMAGES=1
      - INFO=1
      - NETWORKS=1
      - NODES=1
      - PLUGINS=1
      - SERVICES=1
      - SESSSION=1
      - SWARM=1
      - SYSTEM=1
      - TASKS=1
      - VOLUMES=1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "2375:2375/tcp"
    privileged: true
    restart: unless-stopped
Home Assitant
  homeassistant:
    container_name: homeassistant
    image: homeassistant/home-assistant:latest
    environment:
      - TZ=Europe/Paris
    volumes:
      - ./homeassistant:/config:rw
      - /etc/localtime:/etc/localtime:ro
      - /media:/media:rw
      # - /run/dbus:/run/dbus:ro # <-- Bluetooth adapter
    ports:
      - "8123:8123/tcp"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://${SERVER_IP}:8123/"]
      interval: 25s
      timeout: 3s
      start_period: 30s
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
    privileged: true
    network_mode: host
    restart: unless-stopped
    depends_on:
      - mariadb
      - influxdb
      - mosquitto
    labels:
        - "com.centurylinklabs.watchtower.enable=false"
  • Pour un adaptateur Bluetooth
    Install DBus-broker package sudo apt install dbus-broker
    Enable system service sudo systemctl enable dbus-broker.service
    Install BlueZ package sudo apt install bluez
DuckDNS - Update IP to DNS
  duckdns:
    image: linuxserver/duckdns:latest
    container_name: duckdns
    environment:
      - TZ=Europe/Paris
      - SUBDOMAINS=${DUCKDNS_DOMAIN}
      - TOKEN=${DUCKDNS_TOKEN}

- Me reste à mettre au point le « Cerbot DNS DuckDNS » → Pas besoin Cf Message suivant !

Nginx Proxy Manager
  nginx:
    container_name: nginx
    image: 'jc21/nginx-proxy-manager:latest'
    environment:
      DB_MYSQL_HOST: ${SERVER_IP}
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: ${MYSQL_HA_USER}
      DB_MYSQL_PASSWORD: ${MYSQL_HA_PASSWORD}
      DB_MYSQL_NAME: ${MYSQL_NGINX_DATABASE}
      DISABLE_IPV6: true
    volumes:
      - ./nginx/data:/data
      - ./nginx/letsencrypt:/etc/letsencrypt
      - ./nginx/config:/app/config
      # - ./nginx/log:/var/log/nginx
      # - ./nginx/custom:/data/nginx/custom
    ports:
      - "80:80/tcp" # Public HTTP Port
      - "443:443/tcp" # Public HTTPS Port
      - "81:81/tcp" # Admin Web Port
      # - "21:21/tcp" # FTP
    healthcheck:
      test: ["CMD", "/bin/check-health"]
      interval: 10s
      timeout: 3s
    restart: unless-stopped
    depends_on:
      - mariadb
MariaDB
  mariadb:
    container_name: mariadb
    image: jc21/mariadb-aria:latest
    environment:
      - TZ=Europe/Paris 
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_HA_DATABASE}
      - MYSQL_USER=${MYSQL_HA_USER}
      - MYSQL_PASSWORD=${MYSQL_HA_PASSWORD}
    volumes:
      - ./mariadb/data:/var/lib/mysql:rw
      - ./mariadb/config:/etc/mysql:rw
    ports:
      - "3306:3306/tcp"
    restart: unless-stopped
    labels:
        - "com.centurylinklabs.watchtower.enable=false"
PHP MyAdmin
  phpmyadmin:
    container_name: phpmyadmin
    image: phpmyadmin:latest
    environment:
     - PMA_ARBITRARY=1
     - PMA_HOST=${SERVER_IP}
     - PMA_USER=${MYSQL_HA_USER}
     - PMA_PASSWORD=${MYSQL_HA_PASSWORD}
    volumes:
     - /sessions
    ports:
      - "8080:80/tcp"
    restart: unless-stopped
    depends_on:
      - mariadb
InfluxDB V2
  influxdb:
    container_name: influxdb
    image: influxdb:latest
    environment:
      - TZ=Europe/Paris     
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUX_ADMIN_TOKEN}
      - DOCKER_INFLUXDB_INIT_USERNAME=${INFLUXDB_USER}
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=${INFLUXDB_ORG}
      - DOCKER_INFLUXDB_INIT_BUCKET=${INFLUXDB_BUCKET}
      - DOCKER_INFLUXDB_INIT_RETENTION=0s
    volumes:
      - ./influxdb2/data:/var/lib/influxdb2
      - ./influxdb2/config/config.yml:/etc/influxdb2/config.yml:rw
      # - ./influxdb2/scripts:/docker-entrypoint-initdb.d
    ports:
       - "8086:8086/tcp"
    restart: unless-stopped 
  • Pour créer le fichier de configuration
    docker run --rm influxdb influxd print-config > influxdb/config.yml
Telegraf
  telegraf:
    container_name: telegraf
    image: telegraf
    environment:
      - TZ=Europe/Paris
      # - HOST_PROC=/rootfs/proc
      # - HOST_SYS=/rootfs/sys
      # - HOST_ETC=/rootfs/etc           
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:rw 
      - ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:rw
    ports:
      - "6514:6514/tcp"
    restart: unless-stopped
    tty: true
    links:
      - influxdb:influxdb
    depends_on:
      - influxdb```
  • Pour créer le fichier de configuration
    docker run --rm telegraf telegraf config > telegraf/telegraf.conf
Grafana
  grafana:
    container_name: grafana
    image: grafana/grafana:latest
    environment:
      - TZ=Europe/Paris
      - GF_RENDERING_SERVER_URL=http://${SERVER_IP}:8081/render
      - GF_RENDERING_CALLBACK_URL=http://${SERVER_IP}:3000
      - GF_LOG_FILTERS="rendering=debug"
      - GF_SECURITY_ADMIN_USER=${GRAFANA_USER} 
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
    ports:
      - "3000:3000/tcp"  
    restart: unless-stopped
     links:
        - influxdb:influxdb
     depends_on:
         - influxdb
         - renderer  
Renderer
  renderer:
    container_name: renderer
    image: grafana/grafana-image-renderer:latest
    environment:
      ENABLE_METRICS: 'true'
    ports:
      - "8081:8081/tcp"
    restart: unless-stopped
Mosquitto
  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto:latest
    environment:
      - TZ=Europe/Paris  
    volumes:
      - ./mosquitto/config:/mosquitto/config:rw
      - ./mosquitto/data:/mosquitto/data:rw
      - ./mosquitto/log:/mosquitto/log:rw
    ports:
      - "1883:1883/tcp"
    restart: unless-stopped
    stdin_open: true
    tty: true
ESPHome
  esphome:
    container_name: esphome
    image: esphome/esphome:latest
    environment:
      - TZ=Europe/Paris  
    volumes:
      - ./esphome:/config:rw
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "6052:6052/tcp"
    #devices:
      # - /dev/ttyUSB1:/dev/ttyUSB1
    restart: unless-stopped
    network_mode: host
Samba Share
  samba:
    container_name: samba
    image: elswork/samba:latest
    command: '-s "<rep mappé>:/<rep mappé>rw:<user>" -u "1000:1000:<user>:<group>:<mdp>"'
    environment:
      - TZ="Europe/Paris"
    volumes:
      - /<rep des docker>:/<rep mappé>
    ports:
      - "139:139/tcp"
      - "445:445/tcp"
    restart: unless-stopped
MyElectricalData
  myelectricaldata:
    container_name: myelectricaldata
    image:  m4dm4rtig4n/myelectricaldata:latest
    environment:
      TZ: Europe/Paris
    volumes:
      - ./myelectricaldata:/data:rw
    ports:
      - "5000:5000/tcp"
    restart: unless-stopped
    links:
      - influxdb
      - mosquitto
VsCode
  vscode:
    container_name: vscode
    image: codercom/code-server:latest
    environment:
      TZ: Europe/Paris
      PASSWORD: ${VSCODE_PASSWORD}
    volumes:
      -<rep des docker>:/<rep mappé>
      - ./vscode:/home/coder/.local/share/code-server
    ports:
      - "8443:8443/tcp"
    command: code-server --auth none --disable-telemetry /home/coder/project
    restart: unless-stopped
Watchower

watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
environment:
- TZ=Europe/Paris
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_LOG_LEVEL=trace
- WATCHTOWER_TIMEOUT=30s
- WATCHTOWER_ROLLING_RESTART=true
- WATCHTOWER_SCHEDULE=0 0 5 * * *
volumes:
- /var/run/docker.sock:/var/run/docker.sock
labels:
- « com.centurylinklabs.watchtower.enable=true »
restart: unless-stopped

  • Rajouter dans les dockers à ne pas mettre à jour automatiquement :
    labels:
    - « com.centurylinklabs.watchtower.enable=false »

Mise à jour des composes dans le message précédant

Je n’arrive pas à trouver l’information sur le net, mais faut il un cert_bot avec Nginx pour renouveler les certificats ?
si oui, auriez vous un exemple de compose pour se faire ?

J’ai trouvé la réponse pour les curieux c’est :

Free SSL

Built in Let’s Encrypt support allows you to secure your Web services at no cost to you. The certificates even renew themselves!

Une solution parmi plusieurs. Tu peux tout à fait te limiter à avoir un simple container certbot et un tout aussi simple container ngnix. Il y a aussi d,autres solutions tout en une comme traefik.
Par ailleurs Npm a également besoin, en plus, d’une base mariadb

pas forcément besoin d’une BDD mariadb. Il existe une install sans BDD.

1 « J'aime »

Bjr Stef , par contre si tu a un exemple concret à me fournir je suis trop en galère avec nginx.
Merci

Salut @Ricou , tu peux créer un nouveau sujet pour éviter de s’écarter du sujet de base.

3 « J'aime »

Tu as un exemple de docker NGINX dans plusieurs post de ce thread.
Donne le lien de ton nouveau sujet .
Merci

1 « J'aime »

Bonne année 2023 à vous tous et à vos familles respectives !!

Je suis en train de configurer mes docker-compose pour que Watchtower puisse en mettre certains à jour automatiquement et que je puisse recevoir des notifications pour d’autres.

Ce qui fonctionne actuellement :
j’arrive à mettre à jour les containers dans lesquels j’ai spécifié la mise à jour via le label :

...
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
...

et je reçois bien une notification par mail de sa mise à jour.

Ce qui ne fonctionne pas :
je n’arrive pas à voir dans les logs ni recevoir de notifications par mail d’une nouvelle version d’un containers qui a son docker-compose comme ceci :

...
    labels:
      - "com.centurylinklabs.watchtower.monitor-only=true"
...

Je me pose la question (et la doc de Watchtower à ce sujet n’est pas très claire :thinking:) s’il est nécessaire d’ajouter le label - "com.centurylinklabs.watchtower.enable=true" en plus du "com.centurylinklabs.watchtower.monitor-only=true" pour uniquement monitorer ce container ?

Mon but est de mettre à jour manuellement uniquement certaines application qui peuvent poser problème, par exemple, HA, suite à la lecture de leur changelog.

Voici mon docker-compose de Watchtower :
version: "3.9"
# https://containrrr.dev/watchtower/
# https://www.nas-forum.com/forum/topic/63740-tuto-mise-%C3%A0-jour-automatique-des-images-et-conteneurs-docker/
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    user: 0:0
    environment:
      - TZ=Europe/Paris
      - WATCHTOWER_LABEL_ENABLE=true
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_SCHEDULE=0 7 2 * * *
      - WATCHTOWER_NOTIFICATIONS=email
      - WATCHTOWER_NOTIFICATION_EMAIL_FROM=xxxxxxxx@xxxxx.xxx
      - WATCHTOWER_NOTIFICATION_EMAIL_TO=xxxxxxxx@xxxxx.xxx
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.xxxxx.xxx
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=xxx
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=xxxxxxxx@xxxxx.xxx
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=xxxxxxxx
      - WATCHTOWER_NOTIFICATION_EMAIL_DELAY=2
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/xxx/Docker/watchtower/config/config.json:/config.json