Étant donné que Gladys va maintenant favoriser le déploiement via docker, je suis en train de créer un projet pour le déploiement simplifié de plusieurs conteneurs histoire d’avoir une solution clé en main sans trop de bidouilles pour un utilisateur lambda. Mon idée c’est de déployer un Gladys exposé sur internet via un reverse proxy avec tous les services l’accompagnant.
Dans mon idée, les conteneurs seraient :
Watchtower permettant la mise à jour automatique de tous les containers lorsqu’une mise à jour est présente sur le docker hub
Portainer , un gestionnaire du cycle de vie des containers qui permet entre autres d’accéder aux logs des containers, ou bien aux outils de suppression / redémarrage des conteneurs
Traefik , le reverse proxy permettant d’exposer Gladys et ses compères via un ou plusieurs ports sur le router de l’utilisateur, qui permet de générer un certificat SSL renouvelable de façon gratuite via Let’s Encrypt et via un nom de domaine gratuit par un fournisseur de DNS gratuit nommé DuckDNS (gratuit, simple, et qui offre la possibilité de générer jusqu’à 5 noms de domaines différents)
Socket Proxy un petit proxy qui permet juste de sécuriser les requêtes réalisées sur le cœur de Docker en cas d’attaque de Traefik
Mosquitto le broker MQTT permettant le transfert de messages via des capteurs ou des services
Zigbee2Mqtt et Zigbee2MqttAssitant (une interface web) permettant de se passer d’une passerelle Zigbee chère et qui est compatible avec de nombreux appareils (cf. le sujet sur le forum)
Rhasspy , pour la partie reconnaissance vocale (une fois que j’aurais des paramétrages fonctionnels)
Et bien évidemment Gladys
On peut également imaginer rajouter d’autres applis en fonction des besoins (genre un tableau de bord des métriques des différents conteneurs compatibles via Grafana).
Pour le déploiement de tous ces containers, et pour la simplification de déploiement j’utilise l’extension de docker nommé docker-compose. Cette extension permet de définir plusieurs conteneurs dans un seul fichier (pour simplifier) et de les lancer via une simple ligne de commande. En termes de configuration il n’y aurait pas temps de fichier que ça a modifier, j’essaye de rassembler un maximum de variables via le fichier nommé « .env » accompagnant le fichier principal et c’est sur celui-ci qu’on pourra personnaliser une grande partie des infos.
Je n’ai pas encore publié ce projet sur Github, j’ai pas mal de tests, de doc à faire et je suis en attente de la correction de certains bugs côté Traefik, mais je suis plutôt confiant. Aujourd’hui, ce projet me permet d’accéder au broker MQTT sécurisé via TLS et donc par exemple d’y connecter Owntracks en externe et sans sécurité en local (on a bien sûr également la possibilité de sécuriser en local) ainsi qu’à Gladys et au monitoring du reverse proxy via son dashboard. Pour le moment à cause d’un bug de la nouvelle version de Traefik j’ai besoin de 3 ports exposés sur le routeur, mais dans l’avenir seuls deux ports seront utilisés, un pour la communication HTTP/S et l’autre pour la communication TCP (mqtt dans ce cas-là).
Au travers de ce post, j’attends de savoir si ce projet de déploiement via docker-compose vous intéresse, et si vous avez éventuellement des remarques ou des idées d’amélioration / d’ajout pour ce déploiement
@Will9 oui bien sur, Traefik gère les plus grand noms de fournisseurs tels que OVH ou myDNS (les seuls que je connais :P), tu pourras trouver la liste ici : FournisseursDNS
Et Traefik te permet d’ailleurs soit de générer des certificats SSL via Let’s Encrypt ou alors d’importer tes propres certificats si tu en as déjà
Je joue encore trop peu avec docker, mais si tu as besoin je peux me monter un lab pour faire des tests et contribué
Je connais casiement pas Traefik, mais quels avantages comparer a haproxy par exemple ?
J’ai pu le mettre sur certains projet a forte volumétrie, la configuration est très simpliste et peut être coupler avec let’s encrypt
Je t’avoues ne pas bien connaître Haproxy, j’ai beaucoup utilisé Traefik au boulot du coup ma solution est basé dessus parce que je commence a bien connaître le produit
Mais ce qu’il faut savoir déjà c’est que Traefik est français
Ce que j’aime bien avec Traefik c’est que sa configuration n’est pas trop complexe et non statique puisque dans le cas de docker, chaque configuration est défini via les labels des conteneurs et donc peut être modifié assez facilement. Traefik possède plusieurs autres backend que docker, comme Consul ou Kubernetes permettant ainsi d’étendre un peu son utilisation.
Dans mon cas je l’utilise pour toute mon infra à la maison me permettant à la fois d’accéder à mes applis sur un cluster de raspberry, sur mon NAS et tout en gardant un œil sur le dashboard
Pour info, je suis en train d’ajouter la création et le lancement des containers Zigbee2mqtt et Mqtt (si ils n’existent pas) , à partir du service Zigbee2mqtt.
Je pense que cette solution évite de créer l’image et les containers docker des services si ils ne sont pas utiles à l’utilisateur. @pierre-gilles, pourrais-tu nous dire quelle solution tu préfères afin de ne pas perdre du temps de développement pour rien. Merci
Pour la partie Traefik, c’est sympa mais cela va peut-être à l’encontre de la gateway Gladys, non ? Ou je me trompe.
C’est pas forcément le même public, et c’est pas forcément les mêmes sécurités.
Le Gladys Gateway c’est clé en main car tu n’as pas de configuration à faire au niveau de ton fournisseur d’accès, et surtout c’est bien plus sécurisé car ton instance n’est pas accessible sur internet. Si tu expose l’IP de ton Raspberry Pi sur internet, tu t’exposes aux bots qui attaquent des IPs au hasard, c’est déjà arrivé à un paquet de gens sur le forum ^^
Après il en faut pour toutes les populations, pour un utilisateur qui veut un système plug & play sécurisé by design, et un utilisateur avancé qui prend du temps régulièrement pour sécuriser et manager son installation
Salut @VonOx, effectivement je ne me passe plus de Traefik ni de Docker maintenant
Alors ça dépend de ta config, personnellement je passe par un fichier pour stocker la config statique, et un autre pour la dynamique.
Depuis la version 2.2.0, tu as la possibilité de définir dans la partie statique la redirection directement dans la définition de ton ou tes endpoints.
Je suis toujours en 2.2.0, je ne sais pas pour la nouvelle version 2.2.1 mais voici comment c’est configuré chez moi :
Le seul vrai soucis avec cette solution c’est que par défaut et ce n’est pas modifiable pour le moment, Traefik à une API en /api, tout comme Gladys…
Donc en cas d’utilisation de Gladys et de Traefik sur un seul nom de domaine (genre avec un DNS gratuit de type DuckDNS qui n’offre pas la possibilité de créer de sous domaine), on se retrouve à devoir choisir entre exposer sur ce nom de domaine soit l’API de gladys soit celle de Traefik qui permet d’accéder a son dashboard de monitoring…
Salut.
Je suis sur un projet un peu similaire : l’idée est de faire tourner sur la freebox delta une VM dédiée au réseau + domotique :
Nginx proxy manager : reverse proxy comme traefik, prend en charge let’s encrypt
Gladys : domotique
Bitwarden : gestionnaire de mot de passe en ligne.
Wordpress : pour un futur blog
Pihole : bloqueur de pub + dns local
Je ne sais pas encore niveau performance si cela tient. Bitwarden et Wordpress ne sont pas une priorité, mais je souhaite avoir un équilibre cohérent de consommation électrique et pouvoir éteindre mes NAS la nuit pour ne pas consommer inutilement tout en gardant c’est 2 services H24.
Je débute en docker, actuellement, j’arrive à faire tourner NPM + bitwarden (vaultwarden pour être exact) et pihole. J’en arrive à Gladys
Est ce qu’il existe un exemple de docker-compose pour installer Gladys + watchtower + zigbee2mqtt ?
Plus globalement, quelqu’un a-t-il déjà tenter cette infra ?