No AI! bash GPLv3 release Buy me a Coffee LiberaPay Github Sponsor

A script checking updates for docker images without pulling
Then selectively auto-update containers.

Now with a simple Apprise integration!

With features like excluding specific containers, filter by name, auto-prune dangling images and more.

___ ## :bell: Changelog - **v0.3.7**: Added support for [labels](#bookmark-labels), added the `-f` option (force restart stack). - **v0.3.6**: Added pushbullet template. - **v0.3.5**: Added a simple progress bar for the registry checkup. - **v0.3.4**: Added ntfy.sh template and error message on registry fail. - **v0.3.3**: Added Apprise template and the option `-i` inform - to send notifications. - **v0.3.2**: Added a notify function to wrap a notify-script, currently DSM/Ssmtp + template script. ___ ## :nut_and_bolt: Dependencies - Running docker (duh) and compose, either standalone or plugin. - [regclient/regctl](https://github.com/regclient/regclient) (Licensed under [Apache-2.0 License](http://www.apache.org/licenses/LICENSE-2.0)) - User will be prompted to download `regctl` if not in `PATH` or `PWD`. - regctl requires `amd64/arm64` - see [workaround](#roller_coaster-workaround-for-non-amd64--arm64) if other architecture is used. ___ ![](extras/example.gif) ## :mag_right: `dockcheck.sh` ``` $ ./dockcheck.sh -h Syntax: dockcheck.sh [OPTION] [part of name to filter] Example: dockcheck.sh -y -d 10 -e nextcloud,heimdall Options:" -a|y Automatic updates, without interaction. -d N Only update to new images that are N+ days old. Lists too recent with +prefix and age. 2xSlower. -e X Exclude containers, separated by comma. -f Force stack restart after update. Caution: restarts once for every updated container within stack. -h Print this Help. -i Inform - send a preconfigured notification. -l Only update if label is set. See readme. -m Monochrome mode, no printf color codes. -n No updates, only checking availability. -p Auto-Prune dangling images after update. -r Allow updating images for docker run, wont update the container. -s Include stopped containers in the check. (Logic: docker ps -a). ``` ### Basic example: ``` $ ./dockcheck.sh . . . Containers on latest version: glances homer Containers with updates available: 1) adguardhome 2) syncthing 3) whoogle-search Choose what containers to update: Enter number(s) separated by comma, [a] for all - [q] to quit: ``` Then it proceedes to run `pull` and `up -d` on every container with updates. After the updates are complete, you'll get prompted if you'd like to prune dangling images. ## :loudspeaker: Notifications Trigger with the `-i` flag. Run it scheduled with `-ni` to only get notified when there's updates available! Use a `notify_X.sh` template file, copy it to `notify.sh`, modify it to your needs! Current templates: - Synology [DSM](https://www.synology.com/en-global/dsm) - Email with [sSMTP](https://wiki.debian.org/sSMTP) - Apprise (with it's [multitude](https://github.com/caronc/apprise#supported-notifications) of notifications) - both native [caronc/apprise](https://github.com/caronc/apprise) and the standalone [linuxserver/docker-apprise-api](https://github.com/linuxserver/docker-apprise-api) - Read the [QuickStart](extras/apprise_quickstart.md) - [ntfy.sh](https://ntfy.sh/) - HTTP-based pub-sub notifications. - [Pushbullet](https://www.pushbullet.com/) - connecting different devices with cross-platform features. Further additions are welcome - suggestions or PR! Initiated and first contributed by [yoyoma2](https://github.com/yoyoma2). ## :bookmark: Labels Optionally add labels to compose-files. Currently these are the usable labels: ``` labels: mag37.dockcheck.restart-stack: true mag37.dockcheck.update: true ``` - `mag37.dockcheck.restart-stack: true` works instead of the `-f` option, forcing stop+restart on the whole compose-stack (Caution: Will restart on every updated container within stack). - `mag37.dockcheck.update: true` will when used with the `-l` option only update containers with this label and skip the rest. Will still list updates as usual. ## :roller_coaster: Workaround for non **amd64** / **arm64** `regctl` provides binaries for amd64/arm64, to use on other architecture you could try this workaround. Run regctl in a container wrapped in a shell script. Copied from [regclient/docs/install.md](https://github.com/regclient/regclient/blob/main/docs/install.md): ```sh cat >regctl <