Simple UI driven way to manage updates & notifications for Docker containers.
No database required. All settings are stored locally in a volume mount.
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
- Notifiarr
- Ignore
- Auto update
- Check for updates
- 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.
Unraid:
- Icons show up automatically using unraid labels
Non-Unraid:
- It tries to match the container image to an icon from https://github.com/Notifiarr/images (Feel free to add more icons to that repo for others to use)
- If the icon name is not the same as the official image or the app has multiple images then an alias would be used:
- Internal alias file: https://github.com/Notifiarr/dockwatch/blob/main/root/app/www/public/container-alias.json - This can be modified to add more links to official images as needed
- If you have your own custom images that you want to point to an icon:
- Create
/config/container-alias.json
and use the same format as the internal file
- Create
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
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
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>
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
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 |
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
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"
- Linux example:
- 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 theCOPY 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 forDOCKER_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 theroot/
directories and push your fork so it builds a new container
UI
Notifications