[Tuto] Docker et Domoticz (et autres) avec gestion par interface graphique

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
neo
Messages : 89
Inscription : 15 janv. 2020, 15:57

[Tuto] Docker et Domoticz (et autres) avec gestion par interface graphique

Message par neo »

Salut à tous,

Je vous présente mon tuto sur l'installation de Docker avec interface graphique (Portainer), intégration de Domoticz, Homebridge etc... sur Raspberry Pi.
docker.png
docker.png (104.93 Kio) Consulté 11262 fois
Préambule
Installer Raspbian Lite (buster au moment où j'écris le tuto), ne pas oublier de le mettre à jour.
Pour simplifier la rédaction toutes les commandes sont en "super-user".

Installation de Docker

Code : Tout sélectionner

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
Installation de Docker-Compose (nécessaire à Portainer)

Code : Tout sélectionner

apt install python3-pip
pip3 install docker-compose
Installation de Portainer
Site officiel : https://documentation.portainer.io/v2.0 ... alldocker/

Code : Tout sélectionner

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
A partir d'ici on bascule sur l'interface graphique.
Utilisez votre navigateur Web préféré, adresse IP du Pi et port correspondant : http://192.168.0.32:9000/
Taper un nom d'utilisateur/mot de passe et fenêtre suivante choisir Docker puis Connect.
Et voilà ! Vous voyez votre Docker "local", cliquez dessus pour le gérer.

Installation des conteneurs
Chaque conteneur est installé via un "Template" : App Templates/Custom Templates/Add Custom Template
Title : domoticz
Description : domoticz
Copier/coller le code suivant :

Code : Tout sélectionner

version: "2.1"

services:
  domoticz:
    image: domoticz/domoticz
    container_name: domoticz
    restart: unless-stopped
    #devices:
     #- /dev/ttyUSB0:/dev/ttyUSB0
    ports:
      - 8080:8080
    volumes:
      - /home/pi/domoticz/userdata:/opt/domoticz/userdata
    environment:
      - TZ=Europe/Paris
Il s'agit en fait d'un fichier docker-compose.yml, base des templates de Portainer (docker-compose version 2.1 maximum).
Les périphériques USB connectés au Raspberry qu'on veut utiliser dans Domoticz sont à indiquer à la rubrique devices (à décomenter).
La rubrique volumes indique où sont stockées les données utilisateur.

Cliquer sur Create custom template.
Template créé, le sélectionner et cliquer sur Deploy the stack.
Patienter le temps du téléchargement/déploiement de l'image jusqu'au message "Stack successfully deployed".
Retourner sur le Dashboard, rubrique Containers, il devrait être là avec statut running.

Et voilà ! Domoticz est dockerisé et fonctionnel :-)
Pour désinstaller un conteneur, il faut le supprimer dans le menu Stacks.

L'installation d'un autre conteneur se fait par la création d'un nouveau template, même procédure que précédemment.
Je vous colle ici ceux que j'utilise.

Homebridge

Code : Tout sélectionner

version: "2"
services:
  homebridge:
    image: oznu/homebridge:raspberry-pi
    container_name: homebridge
    restart: always
    network_mode: host
    volumes:
      - /home/pi/homebridge/config:/homebridge
    environment:
      - PGID=1000
      - PUID=1000
      - HOMEBRIDGE_CONFIG_UI=1
      - HOMEBRIDGE_CONFIG_UI_PORT=8581
Node-Red

Code : Tout sélectionner

version: "2.1"
services:
  node-red:
    image: nodered/node-red:latest
    container_name: nodered
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    ports:
      - 1880:1880
    volumes:
      - /home/pi/node-red-data:/data
    user: ${LOCAL_USER}:${LOCAL_USER}
    restart: unless-stopped
Mosquitto
Pour celui-ci c'est un peu particulier, il faut créer les répertoires et la config manuellement avant déploiement du stack.

Code : Tout sélectionner

mkdir mosquitto mosquitto/config mosquitto/log mosquitto/data
nano mosquitto/config/mosquitto.conf
Fichier mosquitto.conf :

Code : Tout sélectionner

allow_anonymous true
listener 1883
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
Template :

Code : Tout sélectionner

version: "2.1"
services:
  mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /home/pi/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf
      - /home/pi/mosquitto/log:/mosquitto/log
      - /home/pi/mosquitto/data:/mosquitto/data
    ports:
      - 1883:1883
      - 9001:9001
    restart: always
Raspberry Pi 2 - Docker: Domoticz, NodeRed, Mosquitto, Homebridge - RFLink USB 433mhz, sondes Oregon, pluviomètre - Prises électriques et autres cartes à base d'ESP8266/ESP32 sous ESPEasy et Tasmota
Mes designs 3D sur Thingiverse
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: [Tuto] Docker et Domoticz (et autres) avec gestion par interface graphique

Message par pierrotori »

un grand merci pour les étapes :D
tu as fait le choix de mettre tt sous docker-compose donc un contener par application est-ce un choix stratégique ou technique ?
neo
Messages : 89
Inscription : 15 janv. 2020, 15:57

Re: [Tuto] Docker et Domoticz (et autres) avec gestion par interface graphique

Message par neo »

Les deux :)
Pas besoin de taper des commandes à la pelle ou de faire des mises à jour de l'OS qui risquent de casser une appli installée.
Chaque conteneur est indépendant, c'est aussi beaucoup plus stable.
Les sauvegardes sont très faciles : j'ai juste un backup complet du répertoire home/pi sans me soucier de savoir ou se trouve telle base de donnée ou fichier de config.
Raspberry Pi 2 - Docker: Domoticz, NodeRed, Mosquitto, Homebridge - RFLink USB 433mhz, sondes Oregon, pluviomètre - Prises électriques et autres cartes à base d'ESP8266/ESP32 sous ESPEasy et Tasmota
Mes designs 3D sur Thingiverse
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: [Tuto] Docker et Domoticz (et autres) avec gestion par interface graphique

Message par pierrotori »

je suis en train de tester domoticz docker et par contre dans le répertoire domoticz je n'ai que la base de donnée je ne vois pas le répertoire script ?
neo
Messages : 89
Inscription : 15 janv. 2020, 15:57

Re: [Tuto] Docker et Domoticz (et autres) avec gestion par interface graphique

Message par neo »

Désolé je n’utilise pas de scripts.
Mais apparemment il faut créer les répertoires manuellement, voir wiki : https://www.domoticz.com/wiki/Docker
Raspberry Pi 2 - Docker: Domoticz, NodeRed, Mosquitto, Homebridge - RFLink USB 433mhz, sondes Oregon, pluviomètre - Prises électriques et autres cartes à base d'ESP8266/ESP32 sous ESPEasy et Tasmota
Mes designs 3D sur Thingiverse
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: [Tuto] Docker et Domoticz (et autres) avec gestion par interface graphique

Message par pierrotori »

Bizarre que l’architecture standard ne soit pas présente car il y a aussi les pages html de personnalisation

1er problème
Bon soit disant après une formation et à comprendre son fonctionnement je tombe sur un autre problème qui est que l'image docker domoticz n'embarque pas le package snmp pour en autre le script synology.

Apparement, on peut intégrer le package et recréer l'image mais est ce la bonne solution pour les futures montée de version ?

2eme problème
Domoticz utilise la commande mosquitto_pub qui est donc dans le container mosquitto, je regarde du côté des liens et peut être côté environnement, pareil la je sèche ?
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: [Tuto] Docker et Domoticz (et autres) avec gestion par interface graphique

Message par pierrotori »

donc pour répondre à mes 2 questions , il faut donc bien faire une nouvelle image avec tous les packages manquants et oui pour les plugin surprenant !, mais aussi pour tous les packages qui auraient été utilisé dans les scripts dzvents
Répondre