Back to Templates
WUD (What's Up Docker?) logo

WUD (What's Up Docker?)

v9.5.0

WUD monitors Docker containers for image updates and shows available versions in a web dashboard. This template includes administrator authentication, persistent storage, and a Docker socket proxy that blocks write requests.

Deploy on Dokploy

Deploy WUD (What's Up Docker?) on Dokploy

  1. Install Dokploy on your server if you haven't already.
  2. In your Dokploy panel, open a project and click Create Service → Template.
  3. Search for WUD (What's Up Docker?) and click Create — Dokploy configures domains, environment variables, and volumes for you.

Alternatively, create a Compose service, go to Advanced → Import from Base64, and paste this payload:

base64
ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICB3dWQ6XG4gICAgaW1hZ2U6IGdoY3IuaW8vZ2V0d3VkL3d1ZDo5LjUuMFxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52X2ZpbGU6XG4gICAgICAtIHBhdGg6IC5lbnZcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBXVURfQVVUSF9BRE1JTl9VU0VSOiBcIiR7V1VEX0FVVEhfQURNSU5fVVNFUjotYWRtaW59XCJcbiAgICAgIFdVRF9BVVRIX0FETUlOX1BBU1NXT1JEOiBcIiR7V1VEX0FVVEhfQURNSU5fUEFTU1dPUkQ6P0tlZXAgdGhlIGdlbmVyYXRlZCBhZG1pbmlzdHJhdG9yIHBhc3N3b3JkfVwiXG4gICAgICBXVURfU0VSVkVSX1BPUlQ6IFwiMzAwMFwiXG4gICAgICBXVURfU0VSVkVSX1RMU19FTkFCTEVEOiBcImZhbHNlXCJcbiAgICAgIFdVRF9TVE9SRV9QQVRIOiAvc3RvcmVcbiAgICAgIFdVRF9TVE9SRV9GSUxFOiB3dWQuc3FsaXRlXG4gICAgICBXVURfV0FUQ0hFUl9ET0NLRVJfTE9DQUxfSE9TVDogd3VkLXNvY2tldC1wcm94eVxuICAgICAgV1VEX1dBVENIRVJfRE9DS0VSX0xPQ0FMX1BPUlQ6IFwiMjM3NVwiXG4gICAgICBXVURfV0FUQ0hFUl9ET0NLRVJfTE9DQUxfV0FUQ0hCWURFRkFVTFQ6IFwiJHtXVURfV0FUQ0hFUl9ET0NLRVJfTE9DQUxfV0FUQ0hCWURFRkFVTFQ6LXRydWV9XCJcbiAgICAgIFdVRF9XQVRDSEVSX0RPQ0tFUl9MT0NBTF9XQVRDSEFMTDogXCIke1dVRF9XQVRDSEVSX0RPQ0tFUl9MT0NBTF9XQVRDSEFMTDotZmFsc2V9XCJcbiAgICAgIFdVRF9XQVRDSEVSX0RPQ0tFUl9MT0NBTF9XQVRDSEFUU1RBUlQ6IFwidHJ1ZVwiXG4gICAgICBXVURfV0FUQ0hFUl9ET0NLRVJfTE9DQUxfQ1JPTjogXCIke1dVRF9XQVRDSEVSX0RPQ0tFUl9MT0NBTF9DUk9OOi0wICogKiAqICp9XCJcbiAgICAgIFdVRF9MT0dfTEVWRUw6IFwiJHtXVURfTE9HX0xFVkVMOi1pbmZvfVwiXG4gICAgICBXVURfTE9HX0ZPUk1BVDoganNvblxuICAgICAgVFo6IFwiJHtUWjotVVRDfVwiXG4gICAgZXhwb3NlOlxuICAgICAgLSBcIjMwMDBcIlxuICAgIHZvbHVtZXM6XG4gICAgICAtIHd1ZC1kYXRhOi9zdG9yZVxuICAgIGRlcGVuZHNfb246XG4gICAgICB3dWQtc29ja2V0LXByb3h5OlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgIGNhcF9kcm9wOlxuICAgICAgLSBBTExcbiAgICBzZWN1cml0eV9vcHQ6XG4gICAgICAtIG5vLW5ldy1wcml2aWxlZ2VzOnRydWVcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcImN1cmxcIiwgXCItLWZhaWxcIiwgXCItLXNpbGVudFwiLCBcImh0dHA6Ly8xMjcuMC4wLjE6MzAwMC9oZWFsdGhcIl1cbiAgICAgIGludGVydmFsOiAzMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiAzXG4gICAgICBzdGFydF9wZXJpb2Q6IDMwc1xuICAgIHN0b3BfZ3JhY2VfcGVyaW9kOiAzMHNcbiAgICBsb2dnaW5nOiAmbG9nZ2luZ1xuICAgICAgZHJpdmVyOiBqc29uLWZpbGVcbiAgICAgIG9wdGlvbnM6XG4gICAgICAgIG1heC1zaXplOiBcIjEwbVwiXG4gICAgICAgIG1heC1maWxlOiBcIjNcIlxuXG4gIHd1ZC1zb2NrZXQtcHJveHk6XG4gICAgaW1hZ2U6IGdoY3IuaW8vdGVjbmF0aXZhL2RvY2tlci1zb2NrZXQtcHJveHk6djAuNS4wXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIENPTlRBSU5FUlM6IFwiMVwiXG4gICAgICBJTUFHRVM6IFwiMVwiXG4gICAgICBFVkVOVFM6IFwiMVwiXG4gICAgICBQSU5HOiBcIjFcIlxuICAgICAgVkVSU0lPTjogXCIxXCJcbiAgICAgIFBPU1Q6IFwiMFwiXG4gICAgZXhwb3NlOlxuICAgICAgLSBcIjIzNzVcIlxuICAgIHZvbHVtZXM6XG4gICAgICAtIHR5cGU6IGJpbmRcbiAgICAgICAgc291cmNlOiAvdmFyL3J1bi9kb2NrZXIuc29ja1xuICAgICAgICB0YXJnZXQ6IC92YXIvcnVuL2RvY2tlci5zb2NrXG4gICAgICAgIHJlYWRfb25seTogdHJ1ZVxuICAgICAgICBiaW5kOlxuICAgICAgICAgIGNyZWF0ZV9ob3N0X3BhdGg6IGZhbHNlXG4gICAgcmVhZF9vbmx5OiB0cnVlXG4gICAgdG1wZnM6XG4gICAgICAtIC9ydW5cbiAgICAgIC0gL3RtcFxuICAgIGNhcF9kcm9wOlxuICAgICAgLSBBTExcbiAgICBzZWN1cml0eV9vcHQ6XG4gICAgICAtIG5vLW5ldy1wcml2aWxlZ2VzOnRydWVcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcIndnZXRcIiwgXCItLXF1aWV0XCIsIFwiLS1vdXRwdXQtZG9jdW1lbnQ9LVwiLCBcImh0dHA6Ly8xMjcuMC4wLjE6MjM3NS9fcGluZ1wiXVxuICAgICAgaW50ZXJ2YWw6IDMwc1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDNcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzXG4gICAgc3RvcF9ncmFjZV9wZXJpb2Q6IDMwc1xuICAgIGxvZ2dpbmc6ICpsb2dnaW5nXG5cbnZvbHVtZXM6XG4gIHd1ZC1kYXRhOiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5hZG1pbl9wYXNzd29yZCA9IFwiJHtoYXNoOjQ4fVwiXG5cbltjb25maWddXG5lbnYgPSBbXG4gIFwiV1VEX0FVVEhfQURNSU5fVVNFUj1hZG1pblwiLFxuICBcIldVRF9BVVRIX0FETUlOX1BBU1NXT1JEPSR7YWRtaW5fcGFzc3dvcmR9XCIsXG4gIFwiV1VEX1dBVENIRVJfRE9DS0VSX0xPQ0FMX1dBVENIQllERUZBVUxUPXRydWVcIixcbiAgXCJXVURfV0FUQ0hFUl9ET0NLRVJfTE9DQUxfRVhDTFVERT1eZG9rcGxveShbLl8tXXwkKVwiLFxuICBcIldVRF9XQVRDSEVSX0RPQ0tFUl9MT0NBTF9XQVRDSEFMTD1mYWxzZVwiLFxuICBcIldVRF9XQVRDSEVSX0RPQ0tFUl9MT0NBTF9DUk9OPTAgKiAqICogKlwiLFxuICBcIldVRF9MT0dfTEVWRUw9aW5mb1wiLFxuICBcIlRaPVVUQ1wiXG5dXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcInd1ZFwiXG5wb3J0ID0gMzAwMFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIiIKfQ==

Configuration

The exact Docker Compose and template configuration this template deploys.

Instructions

WUD (What's Up Docker?)

WUD watches Docker containers, checks their image registries for newer versions, and displays available updates in a web dashboard. This template runs WUD 9.5.0 with persistent SQLite storage and a Docker socket proxy that permits monitoring requests and blocks Docker writes. Notifications are optional; automatic container updates are not configured.

Official documentation: Quick start, configuration, Docker watcher, and source code.

Deploy in Dokploy

  1. Import the template. Dokploy generates WUD_AUTH_ADMIN_PASSWORD; the username defaults to admin. Keep the generated password private, or replace it with your own strong value.
  2. Enable Isolated Deployment for this Compose service before deploying. Dokploy should place WUD and its socket proxy on the stack's private network. Do not add a domain or publish a port for wud-socket-proxy.
  3. Set your domain to service wud, port 3000, and enable HTTPS with HTTP redirection in Dokploy. Traefik terminates TLS; WUD uses HTTP inside the stack.
  4. Deploy and wait for both services to become healthy. Open the domain and sign in using the values from the Environment tab.
  5. Inspect the Containers page. The local watcher monitors running containers on the Docker host where this stack is deployed, excluding Dokploy infrastructure by default as described below. Registry checks run hourly, with up to 60 seconds of jitter. Use the UI's watch action when you need an immediate scan.

No external database, registry account, notification service, or password-hashing command is required. Public registries work anonymously within their rate limits. Large hosts or frequent scans may need registry credentials.

Monitoring scope and Docker access

Dokploy infrastructure is ignored by default

The template adds this editable filter to Dokploy's Environment tab:

dotenv

It skips version tracking for containers named dokploy or beginning with dokploy-, dokploy_, or dokploy.. This covers standard Dokploy infrastructure names such as dokploy-traefik, dokploy-postgres, and dokploy-redis, including their usual Compose/Swarm suffixes. Dokploy upgrades remain managed through Dokploy.

This is a container-name filter. Your application databases and other workloads with different names are still monitored; an application deliberately named with a matching dokploy prefix is also excluded. Customize the expression if your infrastructure uses different names.

To track Dokploy infrastructure too, remove the entire WUD_WATCHER_DOCKER_LOCAL_EXCLUDE line from Dokploy's Environment tab, save, and redeploy. Do not leave an empty WUD_WATCHER_DOCKER_LOCAL_EXCLUDE= entry: WUD rejects empty filter values. Then select Containers → Watch now to run a fresh scan. To include just one excluded container, add wud.watch: "true" to that service's Docker labels and recreate it; this explicit label takes precedence over the exclusion filter.

Other monitoring controls

WUD_WATCHER_DOCKER_LOCAL_WATCHBYDEFAULT=true discovers running containers that pass the filter. Set it to false for opt-in monitoring, then add wud.watch: "true" to each monitored service's Docker labels. A wud.watch: "false" label excludes a container. These labels belong on the services being monitored, not in WUD's Environment tab.

Stopped containers are excluded by default. Set WUD_WATCHER_DOCKER_LOCAL_WATCHALL=true to include them. Optional include/exclude patterns, tag filters, digest tracking, and release links are covered in environment.md and the container label guide.

Only the proxy mounts /var/run/docker.sock. This system socket is the intentional host bind mount; it must already exist on a normal Linux Docker host. WUD connects to wud-socket-proxy:2375, with container/image reads and Docker events allowed. POST=0 blocks write methods, including container start/stop, exec, image pulls, and deletion. A read-only socket mount alone would not block those Docker API operations.

Container inspection can expose host workload metadata and environment values, so keep proxy access within the isolated stack. Do not expose port 2375 or broaden proxy permissions for normal monitoring. This template observes one Docker host; it does not automatically discover remote Dokploy servers or configure a Swarm/Kubernetes watcher.

Notifications and updates

Add notification variables in Dokploy's Environment tab, then redeploy. WUD loads optional values from .env. For example, an optional Ntfy trigger needs:

dotenv

Use your server's authentication settings where needed. See the official trigger documentation for supported providers and required credentials. No notification provider is required to install WUD.

Watcher, registry, and trigger settings are configured through the environment; their configuration pages in WUD display the effective settings. User accounts, preferences, and API tokens can be managed in the app.

The template does not configure Docker or Docker Compose update triggers. Keep changes to Dokploy-managed applications in Dokploy so its deployment configuration stays authoritative. Adding an updater would require a separate, deliberate change to the proxy permissions and deployment design. Triggers can run automatically when configured; do not add a Docker updater merely to test notifications.

Passwords, persistence, and backups

WUD reapplies WUD_AUTH_ADMIN_USER and WUD_AUTH_ADMIN_PASSWORD on every startup, including an existing account. Rotate this administrator's password in Dokploy's Environment tab and redeploy. Changing only that account's password in WUD will be overwritten on the next restart. Additional users are stored in the database and can be managed in WUD.

The wud-data volume stores /store, including wud.sqlite, its WAL files, users, token hashes, preferences, monitored containers, history, and snoozes. Keep one WUD instance per volume. Back up the complete volume while WUD is stopped, or use a SQLite-aware backup method. Copying only the live wud.sqlite file can miss recent writes in the WAL. Keep an off-server copy and protect it as sensitive data.

The official image handles store creation and migrations. It runs as root; this template drops all Linux capabilities and prevents privilege escalation. Do not force a different UID without preparing and checking volume ownership. Back up before changing the pinned image version and review the release notes.

HTTPS and health behavior in 9.5.0

Use HTTPS and HTTP redirection for regular access. WUD 9.5.0 sets an HttpOnly session cookie, but its upstream implementation does not add Secure or SameSite cookie attributes. This template does not modify the published application image. You may need to sign in again after a container recreation or upgrade because WUD derives its session secret from the version and network interface.

GET /health is public HTTP liveness. It does not prove that Docker discovery or registry checks succeeded: also check the local watcher, discovered containers, and scan errors. The API and dashboard require authentication.

See environment.md for settings and testing.md for verification steps.

Related Templates

Self-host WUD (What's Up Docker?) in minutes

Dokploy is a free, open source deployment platform. Deploy WUD (What's Up Docker?) and 585+ other templates on your own infrastructure with a single click.