Saltar al contenido principal

Integración domótica Traefik, gratuita y de código abierto

Integración Traefik para Gladys Assistant

Su proxy inverso Traefik en Gladys: servicios caídos, routers con error, alertas en escenas.

Traefik es el proxy inverso delante de muchos servicios autoalojados: envía nextcloud.example.com al contenedor de Nextcloud, renueva los certificados y puede comprobar que cada backend sigue respondiendo. Esta integración lleva el estado de Traefik a Gladys: un dispositivo «Traefik» con su versión y los routers, servicios y middlewares con error, y un dispositivo por servicio HTTP con sus servidores activos. Las escenas pueden reaccionar cuando cualquier servicio cae o se restablece, cuando un router pasa a error, o cuando el propio Traefik deja de responder; un widget del panel muestra primero los servicios caídos.

Probada con un Traefik v3.7 real (Docker, provider de archivo, dos backends tras un health check, routers rotos a propósito). Traefik v2 tiene la misma API y debería funcionar, sin probar: sus comentarios son bienvenidos en las issues.

Lo que necesita​

  • Gladys Assistant 5.1.0 o posterior.
  • Traefik v2 o v3 con su API activada, accesible desde la máquina de Gladys:
    • o bien api.insecure=true (configuración estática): la API responde en el punto de entrada traefik, puerto 8080, sin contraseña. Sencillo, solo para la red local;
    • o bien uno de sus routers hacia el servicio api@internal, en su dominio, normalmente tras un middleware basicAuth: introduzca su usuario y su contraseña.
  • Para saber que un servicio está caído, un health check en su load balancer. Sin él, Traefik declara todos los servidores UP: la integración sigue viendo un servicio con error o desaparecido (un contenedor Docker detenido), no un backend que ya no responde.

La integración envía dos peticiones ligeras por intervalo de actualización (un minuto por defecto) a la API de Traefik, nada a Internet.

Primeros pasos​

1. Activar la API de Traefik​

Con api.insecure, añada a la configuración estática (línea de comandos del contenedor):

--api.insecure=true

y haga accesible el puerto 8080 desde Gladys. Mediante un router, la documentación de Traefik muestra un router hacia api@internal con un middleware basicAuth.

2. Configurar la integración​

En Gladys, abra Integraciones → Traefik → Configuración:

  • Dirección de la API: http://192.168.1.2:8080 con api.insecure, o https://traefik.example.com mediante un router. También sirve una dirección del panel copiada del navegador: se quita /dashboard/….
  • Usuario (basic auth) y Contraseña (basic auth): solo si el router de la API los pide.
  • Intervalo de actualización: de 30 segundos a 5 minutos.
  • Idioma de los nombres: idioma de los nombres de las funciones y de los resultados de escena.

Guarde y después Probar la conexión: el resultado muestra la versión de Traefik, el número de servicios HTTP y los caídos.

3. Añadir los dispositivos​

Abra la pestaña Descubrir: allí aparecen el dispositivo «Traefik» y un dispositivo por servicio HTTP (nextcloud@docker, app@file…). Añada los que quiera seguir. Los servicios internos de Traefik (api@internal…) se omiten.

Los dispositivos​

El dispositivo Traefik:

FunciónValor
Accesiblesí cuando la API responde, no tras dos lecturas fallidas
Versiónp. ej. 3.7.15
Routers con errorrouters HTTP, TCP y UDP que Traefik no pudo construir
Servicios con errorservicios con error
Middlewares con errormiddlewares con error
Advertenciasrouters, servicios y middlewares con advertencia
Servicios caídosservicios HTTP sin ningún servidor activo (o desaparecidos, añadidos)

Cada servicio HTTP:

FunciónValor
En buen estadosí mientras al menos un servidor esté activo
Servidores activosservidores UP según el health check
Servidores en totalservidores declarados en el load balancer

Un servicio que desaparece de Traefik (su contenedor Docker detenido) cuenta como caído: sin servidor, no en buen estado, hasta que vuelva.

Panel​

Añada el widget Traefik a un panel: los servicios caídos, los routers con error y los servicios en servicio, después una línea por servicio — primero los caídos, luego los degradados (parte de los servidores caídos), luego los demás — con sus servidores activos, y los routers con error con su mensaje. Sus ajustes pueden limitarlo a algunos servicios (dispositivos añadidos a Gladys). Actualizar vuelve a leer Traefik al momento.

Escenas​

Disparadores​

  • Un servicio cae: un servicio HTTP ya no tiene ningún servidor activo, o ha desaparecido de Traefik (dos lecturas seguidas). Se puede limitar a algunos servicios. Variables: nombre del servicio, proveedor, servidores activos y en total, desaparecido de Traefik.
  • Un servicio se restablece: un servicio caído vuelve a tener un servidor activo. Variables: las mismas, y la duración de la caída en minutos.
  • Un router tiene un error: un router pasa a error (servicio o middleware ausente, regla incorrecta…), una vez por router hasta que se corrija. Variables: nombre del router, proveedor, protocolo, mensaje de error.
  • Traefik no es accesible: la API ya no responde, dos lecturas seguidas (un reinicio rápido de Traefik no lo dispara). Variable: el motivo.

Todos los servicios disparan, añadidos a Gladys o no. Los routers que ya tienen error al arrancar la integración no se anuncian.

Acciones​

  • Estado de un servicio: en buen estado o no, su estado en palabras (OK, Degradado, Caído, Ausente), servidores activos y en total, y una frase lista como «app@docker: Degradado, 1/2 servidor(es) activo(s).»
  • Estado de Traefik: accesible o no, el número y los nombres de los servicios caídos y de los routers con error, la versión y una frase. Cuando Traefik no responde, la acción no falla: lo indica, y la escena continúa.

Ideas de escenas​

  • Cuando Un servicio cae, enviar un mensaje de Telegram «{{service}} está caído ({{servers_up}}/{{servers_total}} servidores)», y otro con Un servicio se restablece con la duración de la caída.
  • Cada mañana a las 8:00, Estado de Traefik y, si un servicio está caído, leer su frase en el altavoz.
  • Cuando Traefik no es accesible, poner una luz en rojo: todos los sitios de la casa han caído a la vez.

Solución de problemas​

  • «Traefik no responde»: compruebe la dirección y el puerto desde la máquina de Gladys (curl http://192.168.1.2:8080/api/version), y que el contenedor de Traefik publica el puerto 8080.
  • «no hay API de Traefik en esta dirección»: la API no está activada, o la dirección apunta a otro router distinto del de api@internal.
  • «usuario o contraseña rechazados»: compruebe el usuario de la basic auth; una contraseña que termina en espacio se conserva tal cual.
  • «la dirección redirige»: introduzca directamente la dirección https://.
  • «certificado rechazado»: use un certificado en el que Gladys confíe (Let's Encrypt), o la dirección http:// de api.insecure en la red local.
  • Un servicio nunca cae: añada un health check a su load balancer.
  • Más detalles en los registros de la integración (Integraciones → Traefik → Registros), con LOG_LEVEL=debug para cada lectura.

Límites​

  • Solo lectura: la API de Traefik no permite cambiar la configuración, así que la integración no tiene ningún comando.
  • Solo los servicios HTTP se convierten en dispositivos; los routers y servicios TCP y UDP se cuentan en el dispositivo Traefik.
  • Sin health check, Traefik declara todos los servidores UP.
  • Las métricas de Prometheus (peticiones, errores 5xx) no se leen.
  • Un solo Traefik por integración.

Parámetros de configuración​

Estos son los parámetros que Traefik te pide en su pantalla de configuración en Gladys.

ParámetroTipoObligatorioDescripción
Su API de TraefiksectionNoActive la API de Traefik: api.insecure=true la sirve en el puerto 8080, o un router hacia api@internal la sirve en su dominio, a menudo tras basic auth. Después añada los servicios desde la pestaña Descubrir.
Dirección de la APIstringNoLa dirección del panel o de la API de Traefik, sin /dashboard.
Usuario (basic auth)stringNoSolo si el router de la API pide basic auth. Si no, déjelo vacío.
Contraseña (basic auth)secretNo
OpcionessectionNo
Intervalo de actualizaciónselectNoCon qué frecuencia se lee Traefik: dos peticiones ligeras a la API cada vez.
Idioma de los nombresselectNoIdioma de los nombres de las funciones (fijados al añadir un dispositivo) y de los resultados de escena.

Cómo instalar Traefik en Gladys​

  1. En Gladys, abre Integraciones: Traefik aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
  2. Haz clic en Instalar. Gladys descarga la imagen Docker (ghcr.io/guim31/gladys-traefik:1.0.0), la ejecuta en un entorno aislado del núcleo y genera la interfaz de la integración (dispositivos, descubrimiento y configuración).
  3. Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
  4. También puedes instalarla directamente desde la URL de su repositorio: https://github.com/guim31/gladys-traefik.

Traefik requiere Gladys >=5.1.0. El catálogo de Gladys se actualiza cada hora, así que una nueva versión está disponible como máximo una hora después de publicarse.

¿Todavía no usas Gladys? Es gratuito y de código abierto: sigue la guía de instalación para empezar.

Sobre las integraciones externas​

Traefik es una integración externa: una integración comunitaria empaquetada como contenedor Docker y publicada en GitHub. Gladys la instala con un clic y la ejecuta en un entorno aislado del núcleo. La publica y mantiene guim31, no el equipo principal de Gladys.

Suscríbete a la newsletter de Gladys Assistant

Unos pocos correos al mes sobre nuevas versiones y novedades del proyecto. Enviados por Pierre-Gilles Leymarie, fundador del proyecto. Puedes darte de baja cuando quieras 🙂