WUD – What’s Up Docker

🔍 Warum WUD statt Watchtower?

Watchtower hat in neueren Docker-Umgebungen zunehmend Kompatibilitätsprobleme gezeigt und wird nicht mehr aktiv gepflegt. WUD ist der moderne Nachfolger mit einer vollwertigen Weboberfläche, feingranularer Konfiguration und zuverlässigem Digest-Watching für Images mit Tags wie latest.

🔐 Schritt 1 – Basic-Auth-Hash erzeugen

Der Hash wird auf dem Client-Rechner erzeugt (z. B. Linux Mint). Zuerst das Paket installieren:

sudo apt update
sudo apt install apache2-utils

Hash erzeugen:

htpasswd -nib ptech09 'DEIN_SICHERES_PASSWORT'

Beispielausgabe:

ptech09:$apr1$IYg.M7/6$Fr6/LhZy0dYyJ9FNAKt.//

⚠️ Wichtig – Dollar-Zeichen escapen!

In Docker Compose müssen alle $ im Hash durch $$ ersetzt werden. Außerdem kein Passwort mit : verwenden. Im Stack nur den Hash eintragen, nicht user:hash.

🐳 Schritt 2 – Docker Compose Stack

In Portainer einen neuen Stack anlegen und folgenden Code einfügen. Sensible Werte vor dem Deployment ersetzen.

version: "3.8"

services:
  wud:
    image: getwud/wud:8.2.2
    container_name: wud
    restart: unless-stopped
    ports:
      - "3001:3000"
    environment:
      TZ: Europe/Vienna
      WUD_SERVER_PORT: "3000"
      WUD_LOG_LEVEL: "info"

      # Docker-Watcher
      WUD_WATCHER_LOCAL_SOCKET: /var/run/docker.sock
      WUD_WATCHER_LOCAL_WATCHBYDEFAULT: "true"
      WUD_WATCHER_LOCAL_CRON: "0 */6 * * *"

      # Automatische Docker-Updates
      WUD_TRIGGER_DOCKER_LOCAL_AUTO: "true"
      WUD_TRIGGER_DOCKER_LOCAL_PRUNE: "true"

      # SMTP-Benachrichtigungen
      WUD_TRIGGER_SMTP_MAIL_HOST: "mail.example.com"
      WUD_TRIGGER_SMTP_MAIL_PORT: "587"
      WUD_TRIGGER_SMTP_MAIL_USER: "user@example.com"
      WUD_TRIGGER_SMTP_MAIL_PASS: "SMTP_PASSWORT"
      WUD_TRIGGER_SMTP_MAIL_FROM_ADDRESS: "user@example.com"
      WUD_TRIGGER_SMTP_MAIL_TO: "user@example.com"
      WUD_TRIGGER_SMTP_MAIL_TLS_ENABLED: "false"

      # Basic Auth
      WUD_AUTH_BASIC_PTECH09_USER: "ptech09"
      WUD_AUTH_BASIC_PTECH09_HASH: "ESCAPTEN_HASH_HIER_EINTRAGEN"

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/wud/store:/store

    labels:
      - "wud.watch=false"

🔎 Schritt 3 – Digest-Watching für latest-Tags

Container mit Tags wie latest oder stable können von WUD ohne Digest-Watching nicht zuverlässig auf Updates geprüft werden. Mit folgendem Label wird das aktiviert:

labels:
  - "wud.watch.digest=true"

Empfohlen für Container mit latest-Tags, z. B.: autoheal, caddy, grafana, portainer, uptime-kuma, vaultwarden, adguardhome, bentopdf, wg-easy.

🌐 Schritt 4 – Weboberfläche aufrufen

Nach erfolgreichem Deployment die Oberfläche aufrufen:

http://SERVER-IP:3001

Login mit dem gewählten Benutzernamen und dem Passwort aus dem Hash-Schritt.

🛠️ Typische Fehler und Lösungen

❌ Login funktioniert nicht

Ursachen: Hash falsch eingetragen, $ nicht als $$ escaped, versehentlich user:hash statt nur Hash, Passwort enthält :.
Lösung: Hash neu erzeugen, nur den Hash verwenden, $ zu $$ escapen.

❌ WUD zeigt 0 Container

Ursache: WATCHBYDEFAULT war auf false gesetzt.
Lösung: WUD_WATCHER_LOCAL_WATCHBYDEFAULT: "true" setzen.

❌ SMTP-Fehler: wrong version number

Ursache: Falsche TLS/Port-Kombination.
Lösung: Port 587 mit WUD_TRIGGER_SMTP_MAIL_TLS_ENABLED: "false" verwenden (STARTTLS wird automatisch genutzt).

❌ Image is not a semver and digest watching is disabled

Ursache: Image verwendet keinen SemVer-Tag (z. B. latest, stable).
Lösung: Label wud.watch.digest=true am Container setzen.

💻 Nützliche Befehle

# Logs ansehen
docker logs --tail 100 wud

# Laufende Container prüfen
docker ps

# Port prüfen
sudo ss -tulpn | grep 3001

🐙 WUD auf GitHub

Weitere Informationen, Changelogs und Issues findest du im offiziellen WUD Repository.