Aller au contenu principal

Intégration domotique Traefik, gratuite et open source

Intégration Traefik pour Gladys Assistant

Votre reverse proxy Traefik dans Gladys : services en panne, routeurs en erreur, alertes en scène.

Traefik est le reverse proxy placé devant beaucoup de services auto-hébergés : il envoie nextcloud.example.com vers le conteneur Nextcloud, renouvelle les certificats, et peut vérifier que chaque backend répond encore. Cette intégration amène l'état de Traefik dans Gladys : un appareil « Traefik » avec sa version et les routeurs, services et middlewares en erreur, et un appareil par service HTTP avec ses serveurs en service. Les scènes peuvent réagir quand n'importe quel service tombe en panne ou revient, quand un routeur passe en erreur, ou quand Traefik lui-même ne répond plus ; un widget de tableau de bord liste les services en panne en premier.

Testée sur un vrai Traefik v3.7 (Docker, provider fichier, deux backends derrière un health check, routeurs cassés exprès). Traefik v2 a la même API et devrait fonctionner, sans test : vos retours sont bienvenus sur les issues.

Ce qu'il vous faut​

  • Gladys Assistant 5.1.0 ou plus récent.
  • Traefik v2 ou v3 avec son API activée, joignable depuis la machine de Gladys :
    • soit api.insecure=true (configuration statique) : l'API répond sur le point d'entrée traefik, port 8080, sans mot de passe. Simple, à réserver au réseau local ;
    • soit un de vos routeurs vers le service api@internal, sur votre domaine, en général derrière un middleware basicAuth : saisissez son utilisateur et son mot de passe.
  • Pour savoir qu'un service est en panne, un health check sur son load balancer. Sans lui, Traefik déclare tous les serveurs UP : l'intégration voit encore un service en erreur ou disparu (un conteneur Docker arrêté), pas un backend qui ne répond plus.

L'intégration envoie deux requêtes légères par intervalle de rafraîchissement (une minute par défaut) à l'API de Traefik, rien vers Internet.

Premiers pas​

1. Activer l'API de Traefik​

Avec api.insecure, ajoutez à la configuration statique (ligne de commande du conteneur) :

--api.insecure=true

et rendez le port 8080 joignable depuis Gladys. Par un routeur, la documentation de Traefik montre un routeur vers api@internal avec un middleware basicAuth.

2. Configurer l'intégration​

Dans Gladys, ouvrez Intégrations → Traefik → Configuration :

  • Adresse de l'API : http://192.168.1.2:8080 avec api.insecure, ou https://traefik.example.com par un routeur. Une adresse du tableau de bord copiée depuis le navigateur convient aussi : /dashboard/… est retiré.
  • Utilisateur (basic auth) et Mot de passe (basic auth) : seulement si le routeur de l'API les demande.
  • Intervalle de rafraîchissement : de 30 secondes à 5 minutes.
  • Langue des noms : langue des noms des fonctionnalités et des résultats de scène.

Enregistrez, puis Tester la connexion : le résultat donne la version de Traefik, le nombre de services HTTP, et ceux en panne.

3. Ajouter les appareils​

Ouvrez l'onglet Découverte : l'appareil « Traefik » et un appareil par service HTTP (nextcloud@docker, app@file…) y sont listés. Ajoutez ceux à suivre. Les services internes de Traefik (api@internal…) sont écartés.

Les appareils​

L'appareil Traefik :

FonctionnalitéValeur
Joignableoui quand l'API répond, non après deux lectures en échec
Versionex. 3.7.15
Routeurs en erreurrouteurs HTTP, TCP et UDP que Traefik n'a pas pu construire
Services en erreurservices en erreur
Middlewares en erreurmiddlewares en erreur
Avertissementsrouteurs, services et middlewares en avertissement
Services en panneservices HTTP sans aucun serveur en service (ou disparus, ajoutés)

Chaque service HTTP :

FonctionnalitéValeur
En bonne santéoui tant qu'au moins un serveur est en service
Serveurs en serviceserveurs UP selon le health check
Serveurs au totalserveurs déclarés dans le load balancer

Un service qui disparaît de Traefik (son conteneur Docker arrêté) compte comme en panne : aucun serveur, pas en bonne santé, jusqu'à son retour.

Tableau de bord​

Ajoutez le widget Traefik à un tableau de bord : les services en panne, les routeurs en erreur et les services en service, puis une ligne par service — en panne d'abord, puis dégradés (une partie des serveurs en panne), puis les autres — avec ses serveurs en service, et les routeurs en erreur avec leur message. Ses réglages peuvent le limiter à certains services (appareils ajoutés à Gladys). Actualiser relit Traefik aussitôt.

Scènes​

Déclencheurs​

  • Un service tombe en panne : un service HTTP n'a plus aucun serveur en service, ou a disparu de Traefik (deux lectures de suite). Limitable à certains services. Variables : nom du service, fournisseur, serveurs en service et au total, disparu de Traefik.
  • Un service est rétabli : un service en panne a de nouveau un serveur en service. Variables : les mêmes, et la durée de la panne en minutes.
  • Un routeur passe en erreur : un routeur passe en erreur (service ou middleware manquant, règle invalide…), une fois par routeur jusqu'à sa correction. Variables : nom du routeur, fournisseur, protocole, message d'erreur.
  • Traefik est injoignable : l'API ne répond plus, deux lectures de suite (un redémarrage rapide de Traefik ne le déclenche pas). Variable : la raison.

Tous les services déclenchent, ajoutés à Gladys ou non. Les routeurs déjà en erreur au démarrage de l'intégration ne sont pas annoncés.

Actions​

  • État d'un service : en bonne santé ou non, son état en toutes lettres (OK, Dégradé, En panne, Absent), serveurs en service et au total, et une phrase toute prête comme « app@docker : Dégradé, 1/2 serveur(s) en service. »
  • État de Traefik : joignable ou non, le nombre et les noms des services en panne et des routeurs en erreur, la version, et une phrase. Quand Traefik ne répond pas, l'action n'échoue pas : elle le dit, et la scène continue.

Idées de scènes​

  • Quand Un service tombe en panne, envoyer un message Telegram « {{service}} est en panne ({{servers_up}}/{{servers_total}} serveurs) », et un autre sur Un service est rétabli avec la durée de la panne.
  • Chaque matin à 8 h, État de Traefik et, si un service est en panne, lire sa phrase sur l'enceinte.
  • Quand Traefik est injoignable, passer une lampe en rouge : tous les sites de la maison sont tombés d'un coup.

Dépannage​

  • « Traefik ne répond pas » : vérifiez l'adresse et le port depuis la machine de Gladys (curl http://192.168.1.2:8080/api/version), et que le port 8080 est publié par le conteneur Traefik.
  • « pas d'API Traefik à cette adresse » : l'API n'est pas activée, ou l'adresse pointe vers un autre routeur que celui d'api@internal.
  • « utilisateur ou mot de passe refusé » : vérifiez l'utilisateur de la basic auth ; un mot de passe terminé par une espace est gardé tel quel.
  • « l'adresse redirige » : saisissez directement l'adresse en https://.
  • « certificat refusé » : utilisez un certificat reconnu par Gladys (Let's Encrypt), ou l'adresse http:// d'api.insecure sur le réseau local.
  • Un service ne tombe jamais en panne : ajoutez un health check à son load balancer.
  • Plus de détails dans les logs de l'intégration (Intégrations → Traefik → Logs), avec LOG_LEVEL=debug pour chaque lecture.

Limites​

  • Lecture seule : l'API de Traefik ne permet pas de modifier la configuration, l'intégration n'a donc aucune commande.
  • Seuls les services HTTP deviennent des appareils ; les routeurs et services TCP et UDP sont comptés sur l'appareil Traefik.
  • Sans health check, Traefik déclare tous les serveurs UP.
  • Les métriques Prometheus (requêtes, erreurs 5xx) ne sont pas lues.
  • Un seul Traefik par intégration.

Paramètres de configuration​

Voici les paramètres demandés par Traefik dans son écran de configuration dans Gladys.

ParamètreTypeObligatoireDescription
Votre API TraefiksectionNonActivez l'API de Traefik : api.insecure=true la sert sur le port 8080, ou un routeur vers api@internal la sert sur votre domaine, souvent derrière une basic auth. Ajoutez ensuite les services à suivre depuis l'onglet Découverte.
Adresse de l'APIstringNonL'adresse du tableau de bord ou de l'API de Traefik, sans /dashboard.
Utilisateur (basic auth)stringNonSeulement si le routeur de l'API demande une basic auth. Sinon, laissez vide.
Mot de passe (basic auth)secretNon
OptionssectionNon
Intervalle de rafraîchissementselectNonÀ quelle fréquence Traefik est lu : deux requêtes d'API légères à chaque fois.
Langue des nomsselectNonLangue des noms des fonctionnalités (fixés à l'ajout d'un appareil) et des résultats de scène.

Comment installer Traefik dans Gladys​

  1. Dans Gladys, ouvrez Intégrations : Traefik apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
  2. Cliquez sur Installer. Gladys télécharge l'image Docker (ghcr.io/guim31/gladys-traefik:1.0.0), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration).
  3. Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
  4. Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/guim31/gladys-traefik.

Traefik nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.

Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.

À propos des intégrations externes​

Traefik est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par guim31, et non par l'équipe cœur de Gladys.

Inscrivez-vous à la newsletter Gladys Assistant

Quelques emails par mois sur les nouveautés et l'actualité du projet. Envoyés par Pierre-Gilles Leymarie, le fondateur du projet. Désinscription possible à tout moment 🙂