WUD (What's Up Docker): Mantén tus contenedores actualizados automáticamente
Herramienta ligera de monitoreo y automatización de actualizaciones de contenedores para Docker, Swarm, Kubernetes y Nomad
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar WUD (What's Up Docker): Mantén tus contenedores actualizados automáticamente en el canal GENBYTE:
¿Qué es WUD (What's Up Docker): Mantén tus contenedores actualizados automáticamente?
WUD (What's Up Docker) es una herramienta ligera y proactiva de monitoreo y automatización de actualizaciones de contenedores. Escanea continuamente tus entornos de contenedores, detecta actualizaciones de imágenes en registros públicos y privados, realiza análisis de versiones semánticas y te alerta a través de tus canales de notificación favoritos o desencadena actualizaciones automáticas de contenedores de forma fluida. Soporta múltiples orquestadores: Docker standalone, Docker Swarm, Kubernetes (Deployments, StatefulSets, DaemonSets, CronJobs) y HashiCorp Nomad.
Características principales
Motor Multi-Orquestador
Monitoriza daemons Docker locales, motores Docker remotos sobre TLS, Docker Compose, clústeres Docker Swarm, clústeres Kubernetes nativos y clústeres HashiCorp Nomad.
Integración Multi-Registro
Soporte sin configuración y autenticado para Docker Hub, GitHub Container Registry (GHCR), AWS ECR, Google GCR/GAR, Azure ACR, Quay, GitLab, Gitea, Forgejo, Codeberg, LinuxServer (LSCR) y cualquier registro OCI personalizado o auto-hospedado.
Más de 30 Triggers de Notificación y Automatización
Incluye Discord, Matrix, Mattermost, Zulip, Telegram, Slack, Signal, WhatsApp, Bark, Prowl, Home Assistant, Gotify, Ntfy, Pushover, Apprise, Webhooks, Kafka, AMQP/RabbitMQ, NATS, Opsgenie, PagerDuty, Uptime Kuma, GitHub Actions, GitLab CI, SMTP email, scripts shell y auto-actualizadores nativos Docker, Compose y Nomad.
Actualizaciones Automatizadas de Contenedores
Descarga automáticamente nuevas imágenes y recrea contenedores bajo demanda para Docker, Docker Compose y Nomad.
Webhooks de Registro
Notificaciones push de registro, incluyendo GitLab Self-Managed, que verifican inmediatamente las imágenes vigiladas coincidentes preservando etiquetas y políticas de trigger existentes.
Filtrado SemVer y de Etiquetas
Estrategias de versionado flexibles: objetivo semver (major, minor, patch), coincidencia con expresiones regulares personalizadas, versiones fijas o reglas de inclusión/exclusión de etiquetas.
Interfaz Web Interactiva y API REST
Panel web limpio y responsivo para inspeccionar estados de contenedores, desencadenar comprobaciones manuales de actualizaciones y consultar datos mediante una API REST completa.
Listo para Prometheus y Grafana
Endpoint Prometheus /metrics integrado y dashboards de Grafana preconstruidos para observabilidad.
Autenticación y RBAC de Nivel Empresarial
Control de acceso basado en roles (admin, rw, ro), gestión de usuarios respaldada por base de datos, tokens API personales e inicio de sesión único con OpenID Connect (OIDC) (Keycloak, Authentik, Authelia, etc.) o cuentas locales.
Requisitos del sistema
- Docker Engine con acceso al socket /var/run/docker.sock
- Node.js 24 (en imagen base Alpine Linux)
- Puerto 3000 disponible para la interfaz web
- Permisos para leer el socket de Docker o configuración de acceso remoto TLS
- Para Kubernetes: RBAC en clúster o kubeconfig
- Para Nomad: API HTTP y token ACL
Instalación con Docker Compose
Ejecución con Docker
Ejecuta el contenedor montando el socket de Docker y definiendo credenciales de administrador.
–name wud \
-p 3000:3000 \
-e WUD_AUTH_ADMIN_USER="admin" \
-e WUD_AUTH_ADMIN_PASSWORD="MySecurePassword123" \
-v /var/run/docker.sock:/var/run/docker.sock \
getwud/wud:latest
Ejecución con Docker Compose
Define el servicio en un archivo docker-compose.yml con reinicio automático.
whatsupdocker:
image: getwud/wud:latest
container_name: wud
ports:
– "3000:3000"
environment:
– WUD_AUTH_ADMIN_USER=admin
– WUD_AUTH_ADMIN_PASSWORD=MySecurePassword123
volumes:
– /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
Modo CLI One-Shot (CI/CD y Cron)
Ejecuta WUD como herramienta CLI sin servidor web ni base de datos para escaneos puntuales.
docker run –rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-e WUD_RUN_MODE=oneshot \
getwud/wud:latest watch
# Puerta de CI/CD: código de salida 1 si hay actualizaciones disponibles
docker run –rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-e WUD_RUN_MODE=oneshot \
getwud/wud:latest watch –update-available –fail-on-update
Acceder al proyecto
Interfaz Web
Accede a la interfaz web en http://localhost:3000 usando las credenciales definidas en WUD_AUTH_ADMIN_USER y WUD_AUTH_ADMIN_PASSWORD.
API REST
La API REST está disponible en la misma URL base (/api) y permite consultar estados, desencadenar escaneos y gestionar configuración mediante tokens API personales.
Métricas Prometheus
Endpoint de métricas expuesto en /metrics para integración con Prometheus y Grafana.
Casos de uso
- Monitoreo automático de actualizaciones en homelabs y entornos de producción
- Notificaciones en tiempo real a través de múltiples canales (Discord, Slack, Telegram, email, etc.)
- Actualizaciones automáticas de contenedores en Docker, Docker Compose y Nomad
- Integración en pipelines CI/CD como compuerta de calidad (fail-on-update)
- Observabilidad con Prometheus y Grafana para métricas de actualizaciones
- Gestión centralizada de actualizaciones en clústeres Kubernetes y Swarm
- Cumplimiento de políticas de versionado SemVer personalizadas por carga de trabajo
Configuración avanzada
Configuración por Etiquetas (Docker/Compose)
Define políticas de actualización y triggers por contenedor usando etiquetas Docker.
my-app:
image: myorg/myapp:1.2.0
labels:
– "wud.tag.include=^1\\.\\d+\\.\\d+$"
– "wud.tag.transform=^v(.*)$$ => $$1"
– "wud.trigger.discord.mywebhook.enabled=true"
– "wud.trigger.docker.myupdater.enabled=true"
Configuración por Anotaciones (Kubernetes)
Configura watchers y políticas en cargas de trabajo Kubernetes mediante anotaciones.
kind: Deployment
metadata:
name: my-app
namespace: default
annotations:
getwud.app/watch: "true"
getwud.app/tag.include: "^1\\.\\d+\\.\\d+$"
getwud.app/tag.transform: "^v(.*)$ => $1"
getwud.app/display.icon: "mdi:kubernetes"
Autenticación de Registros Privados
Configura credenciales para registros privados mediante variables de entorno o archivos de configuración según la documentación oficial de cada registro (Docker Hub, GHCR, ECR, GCR, ACR, GitLab, Quay, OCI personalizado).
Webhooks de Registro
Habilita notificaciones push de registros (incluyendo GitLab Self-Managed) para comprobaciones inmediatas de imágenes vigiladas. Requiere configuración de endpoint webhook en el registro y WUD accesible públicamente o mediante túnel.
Gestión y mantenimiento
Healthcheck Integrado
El contenedor incluye healthcheck que verifica el endpoint /health cada 30 segundos cuando el servidor web está habilitado.
Actualización de WUD
Actualiza la imagen a la versión más reciente y recrea el contenedor. Usa etiquetas de versión específicas (ej. getwud/wud:v1.2.3) para despliegues reproducibles.
# O versión específica
docker pull getwud/wud:v1.2.3
# Recrear contenedor con nueva imagen
Logs y Depuración
Los logs se emiten en formato texto por defecto (WUD_LOG_FORMAT=text). Usa docker logs wud para inspeccionar actividad. Para depuración, ajusta nivel de log mediante variables de entorno documentadas.
Persistencia de Base de Datos
La base de datos SQLite se almacena en el directorio de trabajo del contenedor (/home/node/app). Para persistencia entre actualizaciones, monta un volumen en ese directorio o usa la configuración de base de datos externa documentada.
Stack técnico
- TypeScript
- Node.js 24
- Alpine Linux
- Docker
- SQLite (base de datos integrada)
- Prometheus client
- API REST nativa
Referencias oficiales
- Repositorio Oficial GitHub: https://github.com/getwud/wud
- Documentación Oficial: https://getwud.app/
- Guía de Inicio Rápido: https://getwud.app/docs/quickstart/
- Referencia de Configuración: https://getwud.app/docs/configuration/
- Docker Hub – getwud/wud: https://hub.docker.com/r/getwud/wud
- Licencia MIT: https://github.com/getwud/wud/blob/main/LICENSE
- API REST Reference: https://getwud.app/docs/api/
- Monitoreo con Prometheus y Grafana: https://getwud.app/docs/monitoring/
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
