J’ai expérimenté ce week-end le fait de cloner Gladys pour y bidouiller des éléments qui ne sont pas destinés à enrichir le projet. Par exemple, je voulais ajouter le choix « Dernières 4h » dans les graphiques, alors que je sais (et accepte) que Pierre-Gilles ne souhaite pas l’ajouter dans la version officielle de Gladys.
Et je fais ça aussi parce que je suis curieux de découvrir le code de Gladys, et de relever le petit défi technique (en tout cas pour moi c’en est un) de personnaliser Gladys en codant…
J’ai réussi à faire le clonage depuis Github, à modifier les bons fichiers, à lancer les parties server et front (en dehors de docker, juste avec les ‹ npm start ›), et ça marche. Maintenant, j’aimerais faire un build pour installer cette version personnalisée sur mon instance réelle, dans docker. Mais les infos que j’ai trouvées pour ça semble passer par le fait d’ajouter mes modifs dans un projet sur Github. Et je ne suis pas sur de l’intérêt de le faire ainsi, puisque je n’aurai pas besoin de partager cette version pour que d’autres la testent…
Ma question est donc : Comment faire un build ‹ en local › ? Puis comment déployer le résultat de ce build dans mon docker de prod’ ?
Mais si ce n’est pas possible ou pas simple, je regarderai comment faire ça en passant par un projet github…
C’est tout à fait la solution pour appliquer quelques petites briques dans Gladys.
Pour information je tourne avec une version custom de Gladys pour la partie Pro chez moi depuis 4 ou 5 ans.
Je te conseil, de par mon expérience personnelle, de passer effectivement par github. Pour ma part je suis passer par mon fork de Gladys, cela permet de suivre mes propres modifications dans le temps et d’intégrer assez aisément les mises à jour du Gladys d’origine facilement. Le build docker est également bien intégrer donc facile à réaliser.
Tu rencontreras parfois quelques petite galère si une mise à jour de Gladys origine touche un élément que tu as toi même touché. Parfois tu pourras remplacer ton code, parfois tu devras modifier les conflits pour intégrer tes modifications aux conflits à résoudre.
Mais dans l’ensemble ça se gère très bien. Et c’est là la puissance d’un projet open source. Parce que le code de Gladys est propre et solide, on peut tout à fait custom une instance.
A la différence de toi peut-être toutefois, j’ai bien 2 instances qui tournent (3 en réalité).
Une instance Gladys « principale » d’origine qui gère mes scènes, mon suivi global et la totalité de mes appareils
Une instance Gladys « Pod » d’origine dans ma maison pour la gestion du Zigbee (qui échange les datas avec le « principal »
Une instance Gladys « Pro » custom qui contient tous les appareils pro et les scènes spécifiques pro et modifié pour la gestion utilisateur.
Hésite pas au besoin si tu souhaites passer par Github / Docker Hub
Bon, j’ai créé le compte Github et poussé mes petites modifications, puis j’ai créé le compte docker et généré une image de ma version ‹ personnalisée › de Gladys.
Je voudrais maintenant que cette version prenne la place de la besoin Gladys que j’utilise en prod, sans perdre mes données.
Pour ne pas faire d’erreurs, est-ce que quelqu’un pourrais me confirmer les points suivants :
Je peux arrêter et supprimer le container docker gladys sur mon mini-pc, et ça ne supprimera pas la base de données ni les configs zigbee, mqtt, et node-red que j’ai créées (car tout ça est stocké dans /var/lib/gladysassistant)
Je peux ensuite faire un nouveau ‹ docker run … › en faisant appel à mon repository personnel plutôt que l’officiel de Gladys, pour installer ma version personnalisée de Gladys. Mais à cette étape, est-ce que ça ne va pas écraser mon dossier /var/lib/gladysassistant ? Et dans ce cas il faudrait que je le sauvegarde avant le docker run pour le remplacer après… Ou bien je n’ai pas à m’inquiéter ?
je n’ai pas à arrêter les containers z2m, node-red, mosquito
faut-il que j’arrête le container watchtower, pour que la prochaine version officielle de Gladys ne remplace pas automatiquement ma version personnalisée ?
Et en effet, j’avais vu cette partie de la vidéo, mais ça me semblait plutôt être fait sur une configuration vierge, et je voulais être sûr de ce qui allait se passer dans ma config où je vais ‹ remplacer › une version existante.
Ton approche est super intéressante, car j’ai également des besoins qui ne sont pas forcement à intégrer à Gladys pour tous, et j’aurais souhaité profiter de ce que tu as mis en place pour en faire de même chez moi. Serait-il envisageable de proposer soit une vidéo, soit une documentation permettant de réaliser les actions pas à pas ?
J’imagine que le fait de facilement pouvoir disposer d’un environnement à personaliser, conjointement à la vidéo de @pierre-gilles sur le codage via IA et la proposition de PR pourrait permettre à Gladys de prochainement gagner en fonctionalités
Par contre, petit détail auquel je n’avais pas pensé (mais c’est très logique, en fait) : la version personnalisée est bien accessible tant que je suis en local. Mais depuis l’extérieur, en utilisant mon accès avec Gladys plus, c’est la version officielle qui est utilisée.