Containers Docker

Bonsoir a tous,

J’utilise également les containers pour faire tourner tout ce que je trouve d’utile :slight_smile:
En gros mes principaux containers sont :

HomeAssistant :

version: '3'
services:
  homeassistant:
    container_name: Homeassistant
    image: homeassistant/home-assistant
    volumes:
      - /sharedfolders/AppData/HomeAssistant:/config
      - /sharedfolders/AppData/HomeAssistant/data:/data
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    privileged: true
    network_mode: host

Portainer :

version: '3.7'

services:
  Portainer:
        restart: unless-stopped
        container_name: Portainer
        image: portainer/portainer-ce:latest
        ports:
        - "9000:9000"                
        environment:
        - PUID=1000
        - PGID=100
        - TZ=Europe/Paris        
        volumes:
        - /var/run/docker.sock:/var/run/docker.sock
        - ./:/data                        
        networks:
            - traefik_proxy
        labels:                        
            ##Pour autoriser l'accès via Traefik depuis l'extérieur##
            - "traefik.enable=true"
            - "traefik.docker.network=traefik_proxy"
            - "traefik.port=9000"
            - "traefik.backend=Portainer"
            - "traefik.entryPoint=https"
            - "traefik.frontend.rule=Host:mondomaine.com"
            #########################################################
            ##Authentification 2FA avec google OAuth2 ###############################
            - "traefik.frontend.auth.forward.address=http://oauth:4181"
            - "traefik.frontend.auth.forward.authResponseHeaders: X-Forwarded-User"
            - "traefik.frontend.auth.forward.trustForwardHeader=true"
            #########################################################################
            ###Autoriser les MAJ auto via watchtower ###
            - "com.centurylinklabs.watchtower.enable=true"            
networks:
    traefik_proxy:
         external: true

Le container VPN (stack sous portainer) et quelques autres qui passent par le VPN :

version: "2"

services:
  vpn:
    image: qmcgaw/gluetun:latest
    container_name: Gluetun
    networks :
      - VPN_Gluetun
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    labels:
      com.centurylinklabs.watchtower.enable: true #MAJ auto via watchtower
    ports:
      - 8889:8888/tcp # HTTP proxy
      - 8388:8388/tcp # Shadowsocks
      - 8388:8388/udp # Shadowsocks
      - 6595:6595 #Deemix
      - 8998:17442 #YoutubeDL
      - 8081:80 #Rutorrent
      - 45000:45000 #Rutorrent Data
    environment:
      - TZ=Europe/Paris
      - VPNSP=surfshark
      - VPN_TYPE=openvpn
      - SERVER_HOSTNAME=fr-bod.prod.surfshark.com
      - PUID=1000
      - PGID=100
      - OPENVPN_USER=User_VPN
      - OPENVPN_PASSWORD=Mdp_VPN
    volumes:
      - /sharedfolders/AppData/Gluetun:/gluetun
    restart: unless-stopped
        
  rutorrent:
    network_mode: service:vpn
    depends_on:
      - vpn
    image: linuxserver/rutorrent:latest
    container_name: Rutorrent
    volumes:
      - /sharedfolders/SSD:/downloads
      - /sharedfolders/AppData/Rutorrent:/config
      - /sharedfolders/ZFS:/ZFS
    labels:
      com.centurylinklabs.watchtower.enable: true #MAJ auto via watchtower      
    environment:
      - PUID=1000
      - PGID=100
      - TZ=Europe/Paris
    restart: unless-stopped

  deemix:
    network_mode: service:vpn
    depends_on:
      - vpn
    image: registry.gitlab.com/bockiii/deemix-docker
    container_name: Deemix
    volumes:
      - /sharedfolders/SSD:/downloads
      - /sharedfolders/AppData/Deemix:/config
    labels:
      com.centurylinklabs.watchtower.enable: true #MAJ auto via watchtower    
    environment:
      - PUID=1000
      - PGID=100
      - ARL=Mon_ID
      - UMASK_SET=022
      - DEEZUI=false
      - TZ=Europe/Paris
    restart: unless-stopped

  Youtube_DL:
    container_name: YoutubeDL
    environment:
      - PUID=1000
      - PGID=100
      - TZ=Europe/Paris
      - ALLOW_CONFIG_MUTATIONS=true
    restart: unless-stopped
    network_mode: service:vpn
    depends_on:
        - vpn
    labels:
      com.centurylinklabs.watchtower.enable: true #MAJ auto via watchtower
    volumes:
      - /sharedfolders/AppData/Youtube_DL:/app/appdata
      - /sharedfolders/SSD/Youtube_DL:/app/audio
      - /sharedfolders/SSD/Youtube_DL:/app/video
      - /sharedfolders/AppData/Youtube_DL/subscriptions:/app/subscriptions
      - /sharedfolders/AppData/Youtube_DL/users:/app/users
    image: tzahi12345/youtubedl-material:latest

networks :
  VPN_Gluetun :
    external: true

Traefik pour la partie revers proxy :

version: "3"
services:
  Traefik:
    container_name: Traefik
    domainname: mondomaine.com
    entrypoint:
      - /traefik
    environment:
      - CF_API_EMAIL=monmail@mail.com
      - CF_API_KEY=Mon_API_KEY
      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    hostname: Traefik
    image: traefik:v1.7.21
    ipc: shareable
    labels:
      com.docker.compose.oneoff: False
      com.docker.compose.project: traefik
      com.docker.compose.project.config_files: docker-compose.yml
      com.docker.compose.project.working_dir: /sharedfolders/AppData/Traefik
      com.docker.compose.service: traefik
      com.docker.compose.version: 1.25.4
      org.opencontainers.image.description: 'A modern reverse-proxy'
      org.opencontainers.image.documentation: https://docs.traefik.io
      org.opencontainers.image.title: Traefik
      org.opencontainers.image.url: https://traefik.io
      org.opencontainers.image.vendor: Containous
      org.opencontainers.image.version: v1.7.21
      traefik.backend: traefik
      traefik.docker.network: traefik_proxy
      traefik.enable: true
      traefik.frontend.auth.forward.address: http://oauth:4181
      'traefik.frontend.auth.forward.authResponseHeaders: X-Forwarded-User': ""
      traefik.frontend.auth.forward.trustForwardHeader: true
      traefik.frontend.headers.SSLHost: mondomaine.com
      traefik.frontend.headers.SSLRedirect: true
      traefik.frontend.headers.STSIncludeSubdomains: true
      traefik.frontend.headers.STSPreload: true
      traefik.frontend.headers.STSSeconds: 315360000
      traefik.frontend.headers.browserXSSFilter: true
      traefik.frontend.headers.contentTypeNosniff: true
      'traefik.frontend.headers.customFrameOptionsValue: allow-from https:modom.com': ""
      traefik.frontend.headers.forceSTSHeader: true
      traefik.frontend.rule: Host:mondomaine.com
      traefik.port: 8080
    logging:
      driver: json-file
      options: {}
    networks:
      - traefik_proxy
    ports:
      - 8443:443/tcp
      - 88:80/tcp
      - 8888:8080/tcp
    restart: unless-stopped
    volumes:
      - /sharedfolders/AppData/Traefik/services.toml:/etc/traefik/services.toml:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /sharedfolders/AppData/Traefik/traefik.toml:/etc/traefik/traefik.toml:rw
      - /sharedfolders/AppData/Traefik/acme.json:/etc/traefik/acme.json:rw
networks:
  traefik_proxy:
    external: true

OAuth pour faire une authentification 2FA chez Google :

version: "3"
services:
  oauth:
    container_name: oauth
    entrypoint:
      - ./traefik-forward-auth
    environment:
      - PROVIDERS_GOOGLE_CLIENT_ID=Is_Account
      - PROVIDERS_GOOGLE_CLIENT_SECRET=Google_Secret
      - SECRET=MonSecret
      - COOKIE_DOMAIN=mondomaine.com
      - INSECURE_COOKIE=false
      - AUTH_HOST=oauth.mondomaine.com
      - URL_PATH=/_oauth
      - WHITELIST=monmail@mail.com
      - LOG_LEVEL=info
      - LIFETIME=2592000
      - TZ=Europe/Paris
      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    hostname: oauth
    image: thomseddon/traefik-forward-auth
    ipc: shareable
    labels:
      com.docker.compose.container-number: 1
      com.docker.compose.oneoff: False
      com.docker.compose.project: oauth
      com.docker.compose.project.config_files: docker-compose.yml
      com.docker.compose.project.working_dir: /sharedfolders/AppData/OAuth
      com.docker.compose.service: oauth
      com.docker.compose.version: 1.25.4
      traefik.backend: oauth
      traefik.docker.network: traefik_proxy
      traefik.enable: true
      traefik.frontend.auth.forward.address: http://oauth:4181
      traefik.frontend.auth.forward.authResponseHeaders: X-Forwarded-User
      traefik.frontend.auth.forward.trustForwardHeader: true
      traefik.frontend.headers.SSLForceHost: true
      traefik.frontend.headers.SSLHost: oauth.mondomaine.com
      traefik.frontend.headers.SSLRedirect: true
      traefik.frontend.headers.STSIncludeSubdomains: true
      traefik.frontend.headers.STSPreload: true
      traefik.frontend.headers.STSSeconds: 315360000
      traefik.frontend.headers.browserXSSFilter: true
      traefik.frontend.headers.contentTypeNosniff: true
      traefik.frontend.headers.customResponseHeaders: X-Robots-Tag:noindex,nofollow,nosnippet,noarchive,notranslate,noimageindex
      traefik.frontend.headers.forceSTSHeader: true
      traefik.frontend.headers.frameDeny: true
      traefik.frontend.passHostHeader: true
      traefik.frontend.rule: Host:oauth.mondomaine.com
      traefik.port: 4181
    logging:
      driver: json-file
      options: {}
    networks:
      - traefik_proxy
    restart: unless-stopped
networks:
  traefik_proxy:
    external: true

C’est sans doute loin d’être parfait car je débute dans la partie container mais cela fonctionne pour le moment :slight_smile:
J’ai également un container AdGuardHome, TeamSpeak, BitwardenRS et Watchtower pour les MAJ auto des containers.

Vous pourriez compiler tous ces fichiers dans un seul docker-compose !

Salut.
Oui mais l’impact n’est pas neutre. Le up ou le down concernera alors toute la stack…
Pas certain par exemple que le vpn doive être manipulé comme ha

4 messages ont été scindés en un nouveau sujet : Attribuer une @ip fixe à un container

Bonjour,
Mes containers sont en ligne de commande…

Homeassistant :
La commande, avec un volume pour lire les fichiers média (mais peut-être pas bien utile puisque je n’ai pas trouvé de lecteur avec HA container ?).

docker run -d \
  --name homeassistant \
  --privileged \
  --restart=unless-stopped \
  -e TZ=Europe/Paris \
  -v /home/pi/.config/homeassistant:/config \
  -v /var/lib/docker/volumes/Media:/media \
  --network=host \
  ghcr.io/home-assistant/raspberrypi4-homeassistant:stable

Rhasspy
LA raison d’être de mon installation HA, du RPi… A mettre sur le réseaux bridge
Permet la lecture d’un fichier wave déclenché par une automation HA

docker run -p 12101:12101 \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      -v "/etc/localtime:/etc/localtime:ro" \
      -d --restart unless-stopped \
      -v /var/lib/docker/volumes/Media/_data:/profiles/Media \
      --device /dev/snd:/dev/snd \
      --name rhasspy \
      rhasspy/rhasspy \
      --user-profiles /profiles \
      --profile fr

Zwave

docker run -d --restart=unless-stopped --name zwavejs2mqtt --privileged --network=host -p 8091:8091 -p 3000:3000 -e TZ=Europe/Paris --device=/dev/serial/by-id/usb-0658_0200-if00:/dev/zwave -v /opt/zwavejs2mqtt:/usr/src/app/store zwavejs/zwavejs2mqtt:latest

Mosquitto

docker create --name MQTT -p 1883:1883 -p 9001:9001 -v 
/opt/mosquitto/config:/mosquitto/config -v 
/opt/mosquitto/data:/mosquitto/data -v /opt/mosquitto/log:/mosquitto/log
 --net=bridge --restart always eclipse-mosquitto

EDIT : mise à jour du container Rhasspy pour lancer la lecture d’un fichier wave avec aplay (je n’ai pas trouvé comment faire sur HA container)

1 « J'aime »

Hello,
Pouvez-vous me donner la commande pour installer InfluxDB2.X sans docker-compose?
J’ai l’habitude d’installer les fichiers sur mon nas du type: volume1/docker/influxdb
Mais pour influx, j’ai l’impression que cela fonctionne pas, il se reset lors des maj…

Merci d’avance.

[quote=« Clemalex, post:1, topic:5980 »]

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

salut , j’ai voullus installée t’on docker-compose et je me retrouve avec cette erreur

/usr/local/lib/python3.9/dist-packages/paramiko/transport.py:236: CryptographyDeprecationWarning: Blowfish has been deprecated "class": algorithms.Blowfish, ERROR: The Compose file './docker-compose.yml' is invalid because: Unsupported config option for homeassistant: 'network_mode'

pour info je suis sur un rpi 4 avec debian 64 .

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