Skip to content

Automated Container Management and Notifications w/ beautiful WebUI

Notifications You must be signed in to change notification settings

Notifiarr/dockwatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

Dockwatch

Purpose

Simple UI driven way to manage updates & notifications for Docker containers.
No database required. All settings are stored locally in a volume mount.

Notification triggers

Notify when:

  • Container (re-)created/removed
  • Container state changes (running -> stopped or healthy -> unhealthy)
  • Update for container image tag is available
  • Update for container image tag has been applied
  • Orphan images, volumes & networks are pruned
  • Memory and CPU usage is over a set limit

Notification platforms

  • Notifiarr

Update options

  • Ignore
  • Auto update
  • Check for updates

Additional features

  • Link and control multiple servers
  • Automatically locate and match container icons for non Unraid usage*
  • Update schedules for container image tags by a container basis
  • Notifications by a container basis
  • Automatically try to restart unhealthy containers
  • Mass prune orphan images, volumes & networks
  • Mass actions for containers [(re-)start/stop, pull, update]**
  • Group containers in a table view for easier management

*If icon is available at Notifiarr/images.
**Also includes generating a docker run command, docker-compose.yml and comparing mounts.

Icons

Unraid:

  • Icons show up automatically using unraid labels

Non-Unraid:

Network dependencies

Dockwatch can automatically recognize if containers depend on specific network containers, for example Gluetun.

  • Restart Gluetun -> restart dependencies
  • Stop Gluetun -> stop dependencies
  • Update Gluetun -> re-create dependencies with updated network mode attached

Docker Socket Proxy

Dockwatch is compatible with a Socket proxy + tested with LSIO and Tecnativa. You need to enable the following:

    - CONTAINERS=1
    - IMAGES=1
    - PORTS=1
    - NETWORKS=1
    - VOLUMES=1

proxy env settings and add a DOCKER_HOST env variable with the example value http://socket-proxy:2375 (this points to your socket-proxy container) to your compose.

Make sure the socket proxy runs on the same network as Dockwatch

Pre-requirements

Dockwatch heavily relies on the Docker API to work.

Dependencies:

  • Docker v25 or later
  • Docker-Compose v2.27 or later

Getting the values of PUID and PGID:

  • Get the group id that docker uses with the following command:
grep docker /etc/group
  • Get the user id from the user you want to run Dockwatch as with the following command:
id -u <username>

Run

Docker:

docker run \
  -d \
  --name "/dockwatch" \
  --volume "/home/dockwatch/config:/config:rw" \
  --volume "/var/run/docker.sock:/var/run/docker.sock:rw" \
  --restart "unless-stopped" \
  --publish "9999:80/tcp" \
  --network "bridge" \
  --env "TZ=America/New_York" \
  --env "PUID=1001" \
  --env "PGID=999" \
  "ghcr.io/notifiarr/dockwatch:main"

Docker Compose:

services:
  dockwatch:
    container_name: dockwatch
    image: ghcr.io/notifiarr/dockwatch:main
    restart: unless-stopped
    ports:
      - 9999:80/tcp
    environment:
      #-DOCKER_HOST=127.0.0.1:2375 # Uncomment and adjust accordingly if you use a socket proxy
      - PUID=1001
      - PGID=999
      - TZ=America/New_York
    volumes:
      - /home/dockwatch/config:/config
      - /var/run/docker.sock:/var/run/docker.sock # Comment this line if you use a socket proxy

Manual:

docker pull ghcr.io/notifiarr/dockwatch:main

Environment variables

Volumes

Name Host Container
App config /mnt/disk1/appdata/dockwatch/config /config
Docker sock /var/run/docker.sock /var/run/docker.sock

Ports

Inside Outside
80 9999

Variables

Name Key Value
DOCKER_HOST (optional: only for socket proxy) DOCKER_HOST ip:port
PUID PUID 1001
PGID PGID 999
TZ TZ America/New_York

Login

Dockwatch has basic functionality for protecting the UI with a username and password.
It is strongly recommended to use a reverse proxy with authentication instead.

  • Create file logins in /config
  • Append admin:password to the file and save it
  • For multiple logins, drop a line and add another admin:password

Development

Option 1:

  • Fork the repo
  • Create a directory symlink of the forked repo to /config/www.
    • Linux example: ln -s /home/user/dockwatch-git /home/user/config/www
    • Windows example: mklink /D "C:\dockwatch-git" "C:\dockwatch-config\www"
  • Open the UI, Navigate to Settings->Development and set environment from Internal to External
  • Save and restart Dockwatch container

Option 2:

  • Fork the repo
  • Open the Dockerfile and comment out the COPY root/ / line at the bottom
  • Copy the files from root/app/www/public/* to /config/www/*
  • Copy the cron from root/etc/crontabs/abc to /config/crontabs/abc (You'll need to add an ENV variable for DOCKER_MODS=linuxserver/mods:universal-cron)
  • Copy the ini from root/etc/php82/conf.d/dockwatch.ini to /config/php/php-local.ini
  • This should allow you to run the container while making changes to the files in /config and when done, just copy the files back into the root/ directories and push your fork so it builds a new container

Screenshots

UI

image image image image image image image image

Notifications

image image image image image image