WUD (What's Up Docker? Logo # What's Up Docker? (WUD) ### *Keep your containers up-to-date across any orchestrator, automatically and effortlessly.* [![Docker Pulls](https://img.shields.io/docker/pulls/getwud/wud?style=flat-square&logo=docker&logoColor=white&color=2496ED)](https://hub.docker.com/r/getwud/wud) [![GitHub Stars](https://img.shields.io/github/stars/getwud/wud?style=flat-square&logo=github&color=FFB800)](https://github.com/getwud/wud/stargazers) [![CI Status](https://img.shields.io/github/actions/workflow/status/getwud/wud/ci.yml?branch=main&style=flat-square&logo=githubactions&logoColor=white)](https://github.com/getwud/wud/actions/workflows/ci.yml) [![License](https://img.shields.io/github/license/getwud/wud?style=flat-square&color=41B883)](https://github.com/getwud/wud/blob/main/LICENSE) [![Documentation](https://img.shields.io/badge/docs-getwud.app-2563EB?style=flat-square&logo=docusaurus&logoColor=white)](https://getwud.app/) [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?style=flat-square&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/fmartinou) [![Buy Me A Coffee](https://img.shields.io/badge/Donate-Buy%20Me%20A%20Coffee-orange?style=flat-square&logo=buy-me-a-coffee)](https://www.buymeacoffee.com/61rUNMm) [![Donate PayPal](https://img.shields.io/badge/Donate-PayPal-00457C?style=flat-square&logo=paypal&logoColor=white)](https://www.paypal.com/donate/?business=ZSDMEC3ZE8DQ8&no_recurring=0¤cy_code=EUR)

Docker Docker Swarm Kubernetes Nomad Docker Compose

πŸ“– Documentation β€’ πŸš€ Quick Start β€’ βš™οΈ Configuration β€’ πŸ”” Triggers β€’ πŸ“¦ Registries β€’ πŸ› οΈ Contributing β€’ πŸ’¬ Issues & Support

---

WUD Web Dashboard UI

## πŸ’‘ About WUD **WUD (What's Up Docker?)** is a lightweight, proactive container update monitoring and automation tool. It continuously scans your container environments, detects image updates across public and private registries, performs semantic version analysis, and alerts you via your favorite notification channelsβ€”or triggers automatic container updates seamlessly. ```mermaid flowchart LR W["πŸ” WATCHERS
Discover running containers
Docker, Swarm, Kubernetes, Compose, Nomad..."] WUD{{"⚑ WUD ENGINE
Compare versions & digests"}} R["πŸ“¦ REGISTRIES
Inspect tags & manifests
Docker Hub, GHCR, Private OCI"] T["πŸš€ TRIGGERS
Notify & Auto-Update
Discord, Slack, Compose, MQTT"] W -->|"Scan"| WUD WUD <-->|"Inspect"| R WUD -->|"Execute"| T ``` --- ## ✨ Features - πŸ” **Multi-Orchestrator Engine** Monitor standalone Docker daemons, remote Docker engines over TLS, Docker Compose setups, **Docker Swarm clusters**, native **Kubernetes clusters** (Deployments, StatefulSets, DaemonSets, CronJobs), or **HashiCorp Nomad** clusters. - πŸ“¦ **Multi-Registry Integration** Zero-config & authenticated support for **Docker Hub**, **GitHub Container Registry (GHCR)**, **AWS ECR**, **Google GCR/GAR**, **Azure ACR**, **Quay**, **GitLab**, **Gitea**, **Forgejo**, **Codeberg**, **LinuxServer (LSCR)**, and any custom/self-hosted OCI registry. - πŸ”” **30+ Notification & Automation Triggers** 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, shell scripts, and native Docker / Compose / Nomad auto-updaters. - πŸ”„ **Automated Container Updates** Automatically pull new images and recreate containers on demand (Docker, Docker Compose, Nomad). - ⚑ **Registry Webhooks**: [Registry push notifications](website/docs/configuration/registries/webhooks.md), including GitLab Self-Managed, immediately check matching watched images while preserving existing labels and trigger policies. - 🏷️ **SemVer & Tag Filtering** Flexible versioning strategies: target `semver` (major, minor, patch), match custom regular expressions, pin versions, or define include/exclude tag rules. - πŸ–₯️ **Interactive Web UI & REST API** Clean, responsive web dashboard to inspect container statuses, trigger manual update checks, and query data via a full-featured REST API. - πŸ“Š **Prometheus & Grafana Ready** Built-in Prometheus `/metrics` endpoint and pre-built Grafana dashboards for observability. - πŸ”’ **Enterprise-Grade Authentication & RBAC** Role-Based Access Control (`admin`, `rw`, `ro`), database-backed user management, personal API tokens, and single sign-on with **OpenID Connect (OIDC)** (Keycloak, Authentik, Authelia, etc.) or local accounts. --- ## ⚑ Quick Start ### 1. Run with Docker ```bash docker run -d \ --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 ``` ### 2. Run with Docker Compose ```yaml services: 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 ``` > 🌐 **Access the Web UI**: Open [`http://localhost:3000`](http://localhost:3000) in your browser (login with `admin` / `MySecurePassword123`). ### 3. Run in One-Shot CLI Mode (CI/CD & Cron) WUD can also run as a stateless, headless CLI tool without starting the web server or creating a database file: ```bash # Run a single scan and print container status as JSON docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ -e WUD_RUN_MODE=oneshot \ getwud/wud:latest watch # Gate CI/CD pipelines: exit with code 1 if at least one update is available 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 ``` πŸ“– Check the full [One-Shot Headless Mode Documentation](https://getwud.app/docs/configuration/oneshot/) for flags, NDJSON output, and cron examples. --- ## 🧩 Supported Integrations ### πŸ” Watchers & Orchestrators | Environment | Supported Workloads | Configuration Guide | | :--- | :--- | :---: | | [**Docker**](https://getwud.app/docs/configuration/watchers/) | Local socket, Remote TCP over TLS, Docker Compose | Built-in (Active by default) | | [**Docker Swarm**](https://getwud.app/docs/configuration/watchers/swarm/) | Services, Stacks, Replicated & Global workloads | Socket / Remote TCP over TLS | | [**Kubernetes**](https://getwud.app/docs/configuration/watchers/kubernetes/) | Deployments, StatefulSets, DaemonSets, CronJobs | In-cluster RBAC / Kubeconfig | | [**Nomad**](https://getwud.app/docs/configuration/watchers/nomad/) | Jobs (`service`, `batch`, `system`), Task Groups | HTTP API / ACL Token | ### πŸ“¦ Registries | Registry | Description | Authentication | | :--- | :--- | :---: | | [**Docker Hub**](https://getwud.app/docs/configuration/registries/hub/) | Public and private Docker Hub images | Anonymous / Token / Password | | [**Docker Hardened Images (DHI)**](https://getwud.app/docs/configuration/registries/dhi/) | Docker Hardened Images (`dhi.io`) | Token / Password | | [**GitHub (GHCR)**](https://getwud.app/docs/configuration/registries/ghcr/) | GitHub Container Registry packages | Personal Access Token | | [**AWS ECR**](https://getwud.app/docs/configuration/registries/ecr/) | Amazon Elastic Container Registry | AWS IAM Keys / IAM Roles | | [**Google GCR / Artifact Registry**](https://getwud.app/docs/configuration/registries/gcr/) | GCP Container & Artifact Registry | Service Account Key (JSON) | | [**Azure ACR**](https://getwud.app/docs/configuration/registries/acr/) | Azure Container Registry | Service Principal / Admin Secret | | [**GitLab Registry**](https://getwud.app/docs/configuration/registries/gitlab/) | GitLab Container Registry | Deploy Token / PAT | | [**Quay.io**](https://getwud.app/docs/configuration/registries/quay/) | Red Hat Quay | Robot Account / OAuth Token | | [**Self-Hosted / OCI**](https://getwud.app/docs/configuration/registries/custom/) | Harbor, Nexus, Artifactory, Gitea, Forgejo, Codeberg | Basic Auth / Bearer Token | ### πŸ”” Triggers & Notifications | Category | Supported Channels | | :--- | :--- | | **Chat & Messaging** | [Discord](https://getwud.app/docs/configuration/triggers/discord/), [Matrix](https://getwud.app/docs/configuration/triggers/matrix/), [Mattermost](https://getwud.app/docs/configuration/triggers/mattermost/), [Signal](https://getwud.app/docs/configuration/triggers/signal/), [Telegram](https://getwud.app/docs/configuration/triggers/telegram/), [Slack](https://getwud.app/docs/configuration/triggers/slack/), [Rocket.Chat](https://getwud.app/docs/configuration/triggers/rocketchat/), [WhatsApp](https://getwud.app/docs/configuration/triggers/whatsapp/), [Zulip](https://getwud.app/docs/configuration/triggers/zulip/) | | **Push Notifications & Alerting** | [Bark](https://getwud.app/docs/configuration/triggers/bark/), [Gotify](https://getwud.app/docs/configuration/triggers/gotify/), [IFTTT](https://getwud.app/docs/configuration/triggers/ifttt/), [Ntfy](https://getwud.app/docs/configuration/triggers/ntfy/), [Opsgenie](https://getwud.app/docs/configuration/triggers/opsgenie/), [PagerDuty](https://getwud.app/docs/configuration/triggers/pagerduty/), [Prowl](https://getwud.app/docs/configuration/triggers/prowl/), [Pushover](https://getwud.app/docs/configuration/triggers/pushover/), [Apprise](https://getwud.app/docs/configuration/triggers/apprise/) | | **Auto-Update & Orchestration** | [Docker Container](https://getwud.app/docs/configuration/triggers/docker/), [Docker Compose](https://getwud.app/docs/configuration/triggers/docker-compose/), [HashiCorp Nomad](https://getwud.app/docs/configuration/triggers/nomad/) | | **IoT & Message Queues** | [AMQP (RabbitMQ)](https://getwud.app/docs/configuration/triggers/amqp/), [Apache Kafka](https://getwud.app/docs/configuration/triggers/kafka/), [MQTT (Home Assistant auto-discovery)](https://getwud.app/docs/configuration/triggers/mqtt/), [NATS](https://getwud.app/docs/configuration/triggers/nats/) | | **Automation & Custom** | [GitHub Actions](https://getwud.app/docs/configuration/triggers/githubactions/), [GitLab CI](https://getwud.app/docs/configuration/triggers/gitlabci/), [Home Assistant (Webhook)](https://getwud.app/docs/configuration/triggers/homeassistant/), [HTTP Webhooks](https://getwud.app/docs/configuration/triggers/http/), [Shell Command Execution](https://getwud.app/docs/configuration/triggers/command/), [SMTP Email](https://getwud.app/docs/configuration/triggers/smtp/), [Uptime Kuma](https://getwud.app/docs/configuration/triggers/uptimekuma/) | --- ## 🏷️ Configuration via Labels & Annotations WUD can be configured globally through environment variables or granularly per container/workload using Docker labels or Kubernetes annotations: ### Docker & Compose (Labels) ```yaml services: my-app: image: myorg/myapp:1.2.0 labels: # Only consider semver minor and patch updates (e.g. 1.2.1, 1.3.0, but not 2.0.0) - "wud.tag.include=^1\\.\\d+\\.\\d+$" - "wud.tag.transform=^v(.*)$$ => $$1" # Send update notifications to a specific Discord webhook - "wud.trigger.discord.mywebhook.enabled=true" # Automatically recreate this container when an update is available - "wud.trigger.docker.myupdater.enabled=true" ``` ### Kubernetes (Annotations) ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-app namespace: default annotations: # Explicitly watch this workload getwud.app/watch: "true" # Only consider semver minor and patch updates getwud.app/tag.include: "^1\\.\\d+\\.\\d+$" getwud.app/tag.transform: "^v(.*)$ => $1" # Custom display icon in WUD UI getwud.app/display.icon: "mdi:kubernetes" ``` Explore all configuration options in the [Configuration Hub](https://getwud.app/docs/configuration/). --- ## πŸ“š Documentation For complete setup guides, advanced configurations, tutorials, and API references, check out our official documentation: πŸ‘‰ **[https://getwud.app/](https://getwud.app/)** - πŸš€ [Getting Started & Tutorials](https://getwud.app/docs/quickstart/) - βš™οΈ [Configuration Reference](https://getwud.app/docs/configuration/) - πŸ” [Docker Watcher & TLS](https://getwud.app/docs/configuration/watchers/) - πŸ“¦ [Registry Authentication](https://getwud.app/docs/configuration/registries/) - πŸ”” [Triggers & Automation Setup](https://getwud.app/docs/configuration/triggers/) - πŸ“Š [Prometheus & Grafana Monitoring](https://getwud.app/docs/monitoring/) - πŸ”Œ [REST API Reference](https://getwud.app/docs/api/) - ❓ [Frequently Asked Questions (FAQ)](https://getwud.app/docs/faq/) --- ## πŸ’– Supporting WUD WUD is free and open-source software built and maintained with passion. If WUD saves you time or helps keep your homelab and production containers running up-to-date, please consider supporting its ongoing development: - πŸ’– **[Sponsor @fmartinou on GitHub Sponsors](https://github.com/sponsors/fmartinou)** - β˜• **[Buy me a coffee](https://www.buymeacoffee.com/61rUNMm)** - πŸ’³ **[Donate via PayPal](https://www.paypal.com/donate/?business=ZSDMEC3ZE8DQ8&no_recurring=0¤cy_code=EUR)** Your support helps cover domain name renewals (`getwud.app`), AI developer tooling subscriptions, and rewards the time spent maintaining registry integrations and building new features. Thank you! --- ## πŸ“„ License This project is open-source software licensed under the [MIT License](https://github.com/getwud/wud/blob/main/LICENSE).