Containers Docker

Comme le dit @golfvert pour garder la maîtrise.

Un néophyte aura tout intérêt à être sous HA OS. HA Supervised est censé être pour les expérimentés mais beaucoup de personnes l’utilisent pour avoir accès à un debian pour installer des outils supplémentaires tout en gardant la simplicité qu’offre le superviseur.

Celui qui veut garder la maîtrise complète passe par les couches les plus basses et les fait lui même communiquer entre elles.

De plus, tout faire dans HA c’est être dépendant du Superviseur, alors que comme le dit @golfvert, les add-ons sont des containers que nous pouvons nous même gérer et mettre en dehors de HA car aucun pour moi n’a vocation à être porté par la solution domotique.

Merci pour vos retours,

j’avais commencé avec un docker-compose de ha puis aprés avoir lu differents postes concernant supervisor, add-on, je suis passé sur la version supervised du coup.

Mais je me note votre methode d’install. dans un coin, j’aime bien garder la main sur mon système.

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