Fait !
Oui ce sera intéressant de donner ses compose.
Avec un minimum d’explications
Phil
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
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.
Bonjour à tous,
Sur un NUC avec l’image HASSIO.
- Home Assistant
→ Zigbee2mqtt
→ MariaDB
→ Mosquitto Broker.
Sur une VM Proxmox
→ Docker Compose
→ Portainer.io
Avec :
Voilou
É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.
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
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
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…
Tu as reçu ta clef coral
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
Et Frigate:
version: '3.3'
services:
frigate:
container_name: frigate
restart: unless-stopped
network_mode: bridge
devices:
- /dev/dri/renderD128
- '/dev/bus/usb:/dev/bus/usb'
volumes:
- '/home/moi/data/frigate/media:/media/frigate'
- '/etc/localtime:/etc/localtime:ro'
- '/home/moi/data/frigate/config.yaml:/config/config.yml:ro'
environment:
- FRIGATE_RTSP_PASSWORD=S89ergines
- TZ=Europe/Paris
- USERID=1000
- GROUPID=998
ports:
- '5000:5000'
- '1935:1935'
image: blakeblackshear/frigate:0.9.0-rc4-amd64
labels:
- wud.tag.include=^\d+\.\d+\.\d+.*-amd64$$
- 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…
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 !
Du genre
Vos containers non liés à HA
Merci pour le partage. Je crois que je vais copier ton samba
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.
C’est ce que je fais. Je trouve ça plutôt pratique.
Et justement un stack/un container on évite les accidents
D’accord avec toi pour avoir un stack ou compose par container.
Comment tu backup tes stack?
J’ai un container samba qui expose tous les volumes utilisés par les différents containers.
Je sauvegarde ce répertoire avec l’outil activbackup de mon Synology.