Compare commits

..

11 Commits
v0.7.6 ... main

Author SHA1 Message Date
Alaa Ali
37052d1377 Clarify -b and -p option interaction (#277) 2026-04-05 09:18:27 +02:00
Robin Ivehult
2c04644b09 Bugfix and tag support in Apprise template + extras. (#276)
* added tag-support to Apprise API-call

* tried to clarify case on notification settings
2026-03-30 08:26:16 +02:00
christian-haider
ca787d7754 Add additional URLs to urls.list (#272) 2026-03-12 14:03:45 +01:00
mag37
3eb8bb21db versionbump 2026-03-12 12:17:15 +01:00
Philip Baylas
32f3dfbb2c When -s flag is used, start stopped containers so they are updated and then stop them again (#269)
* Start stopped containers (when -s is used) so that updates apply
* Automatically re-stop stopped containers after updating
2026-03-11 16:50:38 +01:00
jHund
d46b38ddad Support for notifications via XMPP (#268)
* Add files via upload

Added support for XMPP using go-sendxmpp.

* Add files via upload

Added support for XMPP using go-sendxmpp.
2026-03-05 19:27:54 +01:00
mag37
9245718eda Added application name to 'dependency missing' message 2026-03-01 18:46:58 +01:00
mag37
4505cbac63 Add auto-prune to be possible without any other interactions. 2026-03-01 18:45:25 +01:00
mnijman
5bf81ce26e ProposedFix down+up instead of stop+up (#266)
Co-authored-by: Marc Nijman <git@marcnijman.nl>
2026-03-01 17:42:49 +01:00
Max
5cef6c20ff Allow ranges to be used for selection (#267)
* Allow ranges to be used for selection.

* String consistency

* Yet another change of the selection dialog, as suggested.

---------

Co-authored-by: Max <>
2026-03-01 17:33:54 +01:00
singularity0821
7785e869d3 Add additional URLs to urls.list (#263)
* Sanitize message for Matrix notifications

* Use variable for jq and increment version of Matrix script

* Add additional URLs to urls.list

---------

Co-authored-by: martin <martin@meissnitzer.dev>
2026-02-06 18:07:58 +01:00
6 changed files with 203 additions and 39 deletions

View File

@@ -23,6 +23,14 @@ ___
## Changelog ## Changelog
- **v0.7.7**:
- New:
- More URLs to urls.list.
- Allowing ranges to be used when selecting containers to update.
- Added XMPP notification template.
- Fixes:
- Changed "restart-stack" behavior to down+up instead of stop+up.
- `-s` option now recreates stopped containers and then stops them again.
- **v0.7.6**: - **v0.7.6**:
- New: - New:
- Added Bark notify-template. - Added Bark notify-template.
@@ -59,7 +67,7 @@ Example: dockcheck.sh -y -x 10 -d 10 -e nextcloud,heimdall
Options: Options:
-a|y Automatic updates, without interaction. -a|y Automatic updates, without interaction.
-b N Enable image backups and sets number of days to keep from pruning. -b N Enable image backups and sets number of days to keep from pruning. Ignores -p auto-prune.
-B List currently backed up images, then exit. -B List currently backed up images, then exit.
-c D Exports metrics as prom file for the prometheus node_exporter. Provide the collector textfile directory. -c D Exports metrics as prom file for the prometheus node_exporter. Provide the collector textfile directory.
-d N Only update to new images that are N+ days old. Lists too recent with +prefix and age. 2xSlower. -d N Only update to new images that are N+ days old. Lists too recent with +prefix and age. 2xSlower.
@@ -73,10 +81,10 @@ Options:
-m Monochrome mode, no printf colour codes and hides progress bar. -m Monochrome mode, no printf colour codes and hides progress bar.
-M Prints custom releasenote urls as markdown (requires template support). -M Prints custom releasenote urls as markdown (requires template support).
-n No updates, only checking availability. -n No updates, only checking availability.
-p Auto-Prune dangling images after update. -p Auto-Prune dangling images after update. Ignored when -b is used.
-r Allow checking/updating images created by `docker run`, containers need to be recreated manually. -r Allow checking/updating images created by `docker run`, containers need to be recreated manually.
-R Skip container recreation after pulling images. -R Skip container recreation after pulling images.
-s Include stopped containers in the check. (Logic: docker ps -a). -s Include stopped containers, returns to stopped state after recreation.
-t N Set a timeout (in seconds) per container for registry checkups, 10 is default. -t N Set a timeout (in seconds) per container for registry checkups, 10 is default.
-u Allow automatic self updates - caution as this will pull new code and autorun it. -u Allow automatic self updates - caution as this will pull new code and autorun it.
-v Prints current version. -v Prints current version.
@@ -99,7 +107,7 @@ Containers with updates available:
03) whoogle-search 03) whoogle-search
Choose what containers to update: Choose what containers to update:
Enter number(s) separated by comma, [a] for all - [q] to quit: 1,2 Enter number(s) or range(s) separated by comma (e.g. 1-2,4-5,09), [a] for all - [q] to quit: 1-2
``` ```
Then it proceeds to run `pull` and `up -d` on every container with updates. Then it proceeds to run `pull` and `up -d` on every container with updates.
@@ -175,7 +183,8 @@ you wish to enable, but there is no harm in having all of them present.
│ ├── notify_slack.sh │ ├── notify_slack.sh
│ ├── notify_smtp.sh │ ├── notify_smtp.sh
│ ├── notify_telegram.sh │ ├── notify_telegram.sh
── notify_v2.sh ── notify_v2.sh
│ └── notify_xmpp.sh
├── dockcheck.config ├── dockcheck.config
├── dockcheck.sh ├── dockcheck.sh
└── urls.list # optional └── urls.list # optional
@@ -219,6 +228,7 @@ The actual snooze duration will be 60 seconds less than `SNOOZE_SECONDS` to acco
- [Slack](https://api.slack.com/tutorials/tracks/posting-messages-with-curl) - Slack curl api - [Slack](https://api.slack.com/tutorials/tracks/posting-messages-with-curl) - Slack curl api
- SMTP Email with [mSMTP](https://wiki.debian.org/msmtp) (or deprecated alternative [sSMTP](https://wiki.debian.org/sSMTP)) - SMTP Email with [mSMTP](https://wiki.debian.org/msmtp) (or deprecated alternative [sSMTP](https://wiki.debian.org/sSMTP))
- [Telegram](https://telegram.org/) - Telegram chat API. - [Telegram](https://telegram.org/) - Telegram chat API.
- [XMPP](https://xmpp.org/getting-started/) - XMPP chat notifications.
Further additions are welcome - suggestions or PRs! Further additions are welcome - suggestions or PRs!
<sub><sup>Initiated and first contributed by [yoyoma2](https://github.com/yoyoma2).</sup></sub> <sub><sup>Initiated and first contributed by [yoyoma2](https://github.com/yoyoma2).</sup></sub>
@@ -228,19 +238,19 @@ Further additions are welcome - suggestions or PRs!
All required environment variables for each notification channel are provided in the default.config file as comments and must be uncommented and modified for your requirements. All required environment variables for each notification channel are provided in the default.config file as comments and must be uncommented and modified for your requirements.
For advanced users, additional functionality is available via custom configurations and environment variables. For advanced users, additional functionality is available via custom configurations and environment variables.
Use cases - all configured in `dockcheck.config`: Use cases - all configured in `dockcheck.config`:
(replace `<channel>` with the upper case name of the of the channel as listed in (replace `<CHANNEL>` with the upper case name of the of the channel as listed in
`NOTIFY_CHANNELS` variable, eg `TELEGRAM_SKIPSNOOZE`) `NOTIFY_CHANNELS` variable, eg `TELEGRAM_SKIPSNOOZE`)
- To bypass the snooze feature, even when enabled, add the variable `<channel>_SKIPSNOOZE` and set it to `true`. - To bypass the snooze feature, even when enabled, add the variable `<CHANNEL>_SKIPSNOOZE` and set it to `true`.
- To configure the channel to only send container update notifications, add the variable `<channel>_CONTAINERSONLY` and set it to `true`. - To configure the channel to only send container update notifications, add the variable `<CHANNEL>_CONTAINERSONLY` and set it to `true`.
- To send notifications even when there are no updates available, add the variable `<channel>_ALLOWEMPTY` and set it to `true`. - To send notifications even when there are no updates available, add the variable `<CHANNEL>_ALLOWEMPTY` and set it to `true`.
- To use another notification output format, add the variable `<channel>_OUTPUT` and set it to `csv`, `json`, or `text`. If unset or set to an invalid value, defaults to `text`. - To use another notification output format, add the variable `<CHANNEL>_OUTPUT` and set it to `csv`, `json`, or `text`. If unset or set to an invalid value, defaults to `text`.
- To send multiple notifications using the same notification template: - To send multiple notifications using the same notification template:
- Strings in the `NOTIFY_CHANNELS` list are now treated as unique names and do not necessarily refer to the notification template that will be called, though they do by default. - Strings in the `NOTIFY_CHANNELS` list are now treated as unique names and do not necessarily refer to the notification template that will be called, though they do by default.
- Add another notification channel to `NOTIFY_CHANNELS` in `dockcheck.config`. The name can contain upper and lower case letters, numbers and underscores, but can't start with a number. - Add another notification channel to `NOTIFY_CHANNELS` in `dockcheck.config`. The name can contain upper and lower case letters, numbers and underscores, but can't start with a number.
- Add the variable `<channel>_TEMPLATE` to `dockcheck.config` where `<channel>` is the name of the channel added above and set the value to an available notification template script (`slack`, `apprise`, `gotify`, etc.) - Add the variable `<CHANNEL>_TEMPLATE` to `dockcheck.config` where `<CHANNEL>` is the name of the channel added above and set the value to an available notification template script (`slack`, `apprise`, `gotify`, etc.)
- Add all other environment variables required for the chosen template to function with `<channel>` in upper case as the prefix rather than the template name. - Add all other environment variables required for the chosen template to function with `<CHANNEL>` in upper case as the prefix rather than the template name.
- For example, if `<channel>` is `mynotification` and the template configured is `slack`, you would need to set `MYNOTIFICATION_CHANNEL_ID` and `MYNOTIFICATION_ACCESS_TOKEN`. - For example, if `<CHANNEL>` is `mynotification` and the template configured is `slack`, you would need to set `MYNOTIFICATION_CHANNEL_ID` and `MYNOTIFICATION_ACCESS_TOKEN`.
#### Release notes addon #### Release notes addon
@@ -285,6 +295,8 @@ The backed up images will be removed if they're older than *BackupForDays* value
If configured for eg. 7 days, force earlier cleaning by just passing a lower number of days, eg. `-b 2` to clean everything older than 2 days. If configured for eg. 7 days, force earlier cleaning by just passing a lower number of days, eg. `-b 2` to clean everything older than 2 days.
Backed up images will not be removed if neither `-b` flag nor `BackupForDays` config variable is set. Backed up images will not be removed if neither `-b` flag nor `BackupForDays` config variable is set.
When backups are enabled, the `-p` auto-prune option is ignored to preserve backed up images.
Use the capital option `-B` to list currently backed up images. Or list all images with `docker images`. Use the capital option `-B` to list currently backed up images. Or list all images with `docker images`.
To manually remove any backed up images, do `docker rmi dockcheck/homer:2025-10-26_1132_latest`. To manually remove any backed up images, do `docker rmi dockcheck/homer:2025-10-26_1132_latest`.

View File

@@ -51,6 +51,7 @@
# pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b # pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b
# tgram://{bot_token}/{chat_id}/' # tgram://{bot_token}/{chat_id}/'
# APPRISE_URL="http://apprise.mydomain.tld:1234/notify/apprise" # APPRISE_URL="http://apprise.mydomain.tld:1234/notify/apprise"
# APPRISE_TAG="one_tag,othertag" # Only works with the URL API and need to setup tags within Apprise
# #
# BARK_KEY="key-value" # BARK_KEY="key-value"
# #
@@ -95,3 +96,7 @@
# TELEGRAM_CHAT_ID="mychatid" # TELEGRAM_CHAT_ID="mychatid"
# TELEGRAM_TOKEN="token-value" # TELEGRAM_TOKEN="token-value"
# TELEGRAM_TOPIC_ID="0" # TELEGRAM_TOPIC_ID="0"
#
# XMPP_SOURCE_JID="mybotaccount@mydomain.tld"
# XMPP_SOURCE_PWD="password"
# XMPP_DEST_JID="myusername@mydomain.tld"

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
VERSION="v0.7.6" VERSION="v0.7.7"
# ChangeNotes: Bugfixes and sanitation. Cleanup of default.config - migrate settings manually (optional). # ChangeNotes: xmpp template added, ranges for selection possible, restart-stack and -s reworked.
Github="https://github.com/mag37/dockcheck" Github="https://github.com/mag37/dockcheck"
RawUrl="https://raw.githubusercontent.com/mag37/dockcheck/main/dockcheck.sh" RawUrl="https://raw.githubusercontent.com/mag37/dockcheck/main/dockcheck.sh"
@@ -34,7 +34,7 @@ Help() {
echo echo
echo "Options:" echo "Options:"
echo "-a|y Automatic updates, without interaction." echo "-a|y Automatic updates, without interaction."
echo "-b N Enable image backups and sets number of days to keep from pruning." echo "-b N Enable image backups and sets number of days to keep from pruning. Ignores -p auto-prune."
echo "-B List currently backed up images, then exit." echo "-B List currently backed up images, then exit."
echo "-c D Exports metrics as prom file for the prometheus node_exporter. Provide the collector textfile directory." echo "-c D Exports metrics as prom file for the prometheus node_exporter. Provide the collector textfile directory."
echo "-d N Only update to new images that are N+ days old. Lists too recent with +prefix and age. 2xSlower." echo "-d N Only update to new images that are N+ days old. Lists too recent with +prefix and age. 2xSlower."
@@ -48,10 +48,10 @@ Help() {
echo "-m Monochrome mode, no printf colour codes and hides progress bar." echo "-m Monochrome mode, no printf colour codes and hides progress bar."
echo "-M Prints custom releasenote urls as markdown (requires template support)." echo "-M Prints custom releasenote urls as markdown (requires template support)."
echo "-n No updates; only checking availability without interaction." echo "-n No updates; only checking availability without interaction."
echo "-p Auto-prune dangling images after update." echo "-p Auto-prune dangling images after update. Ignored when -b is used."
echo "-r Allow checking/updating images created by 'docker run', containers need to be recreated manually." echo "-r Allow checking/updating images created by 'docker run', containers need to be recreated manually."
echo "-R Skip container recreation after pulling images." echo "-R Skip container recreation after pulling images."
echo "-s Include stopped containers in the check. (Logic: docker ps -a)." echo "-s Include stopped containers, returns to stopped state after recreation."
echo "-t N Set a timeout (in seconds) per container for registry checkups, 10 is default." echo "-t N Set a timeout (in seconds) per container for registry checkups, 10 is default."
echo "-u Allow automatic self updates - caution as this will pull new code and autorun it." echo "-u Allow automatic self updates - caution as this will pull new code and autorun it."
echo "-v Prints current version." echo "-v Prints current version."
@@ -229,7 +229,7 @@ self_update() {
choosecontainers() { choosecontainers() {
while [[ -z "${ChoiceClean:-}" ]]; do while [[ -z "${ChoiceClean:-}" ]]; do
read -r -p "Enter number(s) separated by comma, [a] for all - [q] to quit: " Choice read -r -p "Enter number(s) or range(s) separated by comma (e.g. 1-2,4-5,09), [a] for all - [q] to quit: " Choice
if [[ "$Choice" =~ [qQnN] ]]; then if [[ "$Choice" =~ [qQnN] ]]; then
[[ -n "${BackupForDays:-}" ]] && remove_backups [[ -n "${BackupForDays:-}" ]] && remove_backups
exit 0 exit 0
@@ -238,12 +238,28 @@ choosecontainers() {
ChoiceClean=${Choice//[,.:;]/ } ChoiceClean=${Choice//[,.:;]/ }
else else
ChoiceClean=${Choice//[,.:;]/ } ChoiceClean=${Choice//[,.:;]/ }
SelectedUpdates=()
for CC in $ChoiceClean; do for CC in $ChoiceClean; do
CC=$((10#$CC)) # Base 10 interpretation to strip leading zeroes if [[ "$CC" == *-* ]]; then
if [[ "$CC" -lt 1 || "$CC" -gt $UpdCount ]]; then # Reset choice if out of bounds if [[ "$CC" =~ ^([0-9]+)-([0-9]+)$ ]]; then
echo "Number not in list: $CC"; unset ChoiceClean; break 1 # Enforce base 10 to avoid octal parsing of leading zeroes
RangeStart=$((10#${BASH_REMATCH[1]}))
RangeEnd=$((10#${BASH_REMATCH[2]}))
if [[ "$RangeStart" -lt 1 || "$RangeEnd" -gt $UpdCount || "$RangeStart" -gt "$RangeEnd" ]]; then
echo "Entered list is out of bounds: $CC"; unset ChoiceClean; break 1
else
for ((idx=RangeStart; idx<=RangeEnd; idx++)); do SelectedUpdates+=( "${GotUpdates[$idx-1]}" ); done
fi
else
echo "Invalid range: $CC"; unset ChoiceClean; break 1
fi
else else
SelectedUpdates+=( "${GotUpdates[$CC-1]}" ) CC=$((10#$CC)) # Base 10 interpretation to strip leading zeroes
if [[ "$CC" -lt 1 || "$CC" -gt $UpdCount ]]; then # Reset choice if out of bounds
echo "Number not in list: $CC"; unset ChoiceClean; break 1
else
SelectedUpdates+=( "${GotUpdates[$CC-1]}" )
fi
fi fi
done done
fi fi
@@ -380,7 +396,7 @@ dependency_check() {
binary_downloader "$AppName" "$AppUrl" binary_downloader "$AppName" "$AppUrl"
[[ -f "$ScriptWorkDir/$AppName" ]] && { export "$AppVar"="$ScriptWorkDir/$1" && printf "\n%b%s downloaded.%b\n" "$c_green" "$AppName" "$c_reset"; } [[ -f "$ScriptWorkDir/$AppName" ]] && { export "$AppVar"="$ScriptWorkDir/$1" && printf "\n%b%s downloaded.%b\n" "$c_green" "$AppName" "$c_reset"; }
fi fi
else printf "\n%bDependency missing, exiting.%b\n" "$c_red" "$c_reset"; exit 1; else printf "\n%bDependency '%s' missing, exiting.%b\n" "$c_red" "$AppName" "$c_reset"; exit 1;
fi fi
fi fi
# Final check if binary is correct # Final check if binary is correct
@@ -634,6 +650,7 @@ if [[ -n "${GotUpdates:-}" ]]; then
for i in "${SelectedUpdates[@]}"; do for i in "${SelectedUpdates[@]}"; do
((CurrentQue+=1)) ((CurrentQue+=1))
unset CompleteConfs unset CompleteConfs
ContStopAfter=false
# Extract labels and metadata # Extract labels and metadata
ContConfig=$(docker inspect "$i" --format '{{json .}}') ContConfig=$(docker inspect "$i" --format '{{json .}}')
ContLabels=$($jqbin -r '."Config"."Labels"' <<< "$ContConfig") ContLabels=$($jqbin -r '."Config"."Labels"' <<< "$ContConfig")
@@ -648,15 +665,15 @@ if [[ -n "${GotUpdates:-}" ]]; then
ContRestartStack=$($jqbin -r '."mag37.dockcheck.restart-stack"' <<< "$ContLabels") ContRestartStack=$($jqbin -r '."mag37.dockcheck.restart-stack"' <<< "$ContLabels")
[[ "$ContRestartStack" == "null" ]] && ContRestartStack="" [[ "$ContRestartStack" == "null" ]] && ContRestartStack=""
ContOnlySpecific=$($jqbin -r '."mag37.dockcheck.only-specific-container"' <<< "$ContLabels") ContOnlySpecific=$($jqbin -r '."mag37.dockcheck.only-specific-container"' <<< "$ContLabels")
[[ "$ContOnlySpecific" == "null" ]] && ContRestartStack="" [[ "$ContOnlySpecific" == "null" ]] && ContOnlySpecific=""
ContStateRunning=$($jqbin -r '."State"."Running"' <<< "$ContConfig") ContStateRunning=$($jqbin -r '."State"."Running"' <<< "$ContConfig")
[[ "$ContStateRunning" == "null" ]] && ContStateRunning="" [[ "$ContStateRunning" == "null" ]] && ContStateRunning=""
if [[ "$ContStateRunning" == "true" ]]; then if [[ "$ContStateRunning" == "true" ]]; then
printf "\n%bNow recreating (%s/%s): %b%s%b\n" "$c_teal" "$CurrentQue" "$NumberofUpdates" "$c_blue" "$i" "$c_reset" printf "\n%bNow recreating (%s/%s): %b%s%b\n" "$c_teal" "$CurrentQue" "$NumberofUpdates" "$c_blue" "$i" "$c_reset"
else else
printf "\n%bSkipping recreation of %b%s%b as it's not running.%b\n" "$c_yellow" "$c_blue" "$i" "$c_yellow" "$c_reset" ContStopAfter=true
continue printf "\n%bRecreating %b%s%b to apply update - then stopping to return to current state.%b\n" "$c_yellow" "$c_blue" "$i" "$c_yellow" "$c_reset"
fi fi
# Checking if compose-values are empty - hence started with docker run # Checking if compose-values are empty - hence started with docker run
@@ -678,10 +695,15 @@ if [[ -n "${GotUpdates:-}" ]]; then
# Check if the whole stack should be restarted # Check if the whole stack should be restarted
if [[ "$ContRestartStack" == true ]] || [[ "$ForceRestartStacks" == true ]]; then if [[ "$ContRestartStack" == true ]] || [[ "$ForceRestartStacks" == true ]]; then
${DockerBin} ${CompleteConfs} stop; ${DockerBin} ${CompleteConfs} ${ContEnvs} up -d || { printf "\n%bDocker error, exiting!%b\n" "$c_red" "$c_reset" ; exit 1; } ${DockerBin} ${CompleteConfs} down; ${DockerBin} ${CompleteConfs} ${ContEnvs} up -d || { printf "\n%bDocker error, exiting!%b\n" "$c_red" "$c_reset" ; exit 1; }
else else
${DockerBin} ${CompleteConfs} ${ContEnvs} up -d ${SpecificContainer} || { printf "\n%bDocker error, exiting!%b\n" "$c_red" "$c_reset" ; exit 1; } ${DockerBin} ${CompleteConfs} ${ContEnvs} up -d ${SpecificContainer} || { printf "\n%bDocker error, exiting!%b\n" "$c_red" "$c_reset" ; exit 1; }
fi fi
# Restore the stopped state of updated cotainers
if [[ "$ContStopAfter" == true ]]; then
${DockerBin} ${CompleteConfs} stop ${SpecificContainer} || { printf "\n%bDocker error, exiting!%b\n" "$c_red" "$c_reset" ; exit 1; }
fi
done done
fi fi
printf "\n%bAll updates done!%b\n" "$c_green" "$c_reset" printf "\n%bAll updates done!%b\n" "$c_green" "$c_reset"
@@ -689,7 +711,7 @@ if [[ -n "${GotUpdates:-}" ]]; then
# Trigger pruning only when backup-function is not used # Trigger pruning only when backup-function is not used
if [[ -z "${BackupForDays:-}" ]]; then if [[ -z "${BackupForDays:-}" ]]; then
if [[ "$AutoPrune" == false ]] && [[ "$AutoMode" == false ]]; then printf "\n"; read -rep "Would you like to prune all dangling images? y/[n]: " AutoPrune; fi if [[ "$AutoPrune" == false ]] && [[ "$AutoMode" == false ]]; then printf "\n"; read -rep "Would you like to prune all dangling images? y/[n]: " AutoPrune; fi
if [[ "$AutoPrune" == true ]] || [[ "$AutoPrune" =~ [yY] ]]; then printf "\nAuto pruning.."; docker image prune -f; fi if [[ "$AutoPrune" == true ]] || [[ "$AutoPrune" =~ [yY] ]]; then printf "\nAuto pruning.."; docker image prune -f && AlreadyPruned="true" ; fi
fi fi
else else
@@ -699,7 +721,11 @@ else
printf "\nNo updates available.\n" printf "\nNo updates available.\n"
fi fi
# Clean up old backup image tags if -b is used # Clean up old backup image tags if -b is used otherwise prune if auto-prune is set
[[ -n "${BackupForDays:-}" ]] && remove_backups if [[ -n "${BackupForDays:-}" ]]; then
remove_backups
else
if [[ "$AutoPrune" == true ]] && [[ "${AlreadyPruned:=false}" != true ]]; then printf "\nAuto pruning.."; docker image prune -f; fi
fi
exit 0 exit 0

View File

@@ -1,5 +1,5 @@
### DISCLAIMER: This is a third party addition to dockcheck - best effort testing. ### DISCLAIMER: This is a third party addition to dockcheck - best effort testing.
NOTIFY_APPRISE_VERSION="v0.4" NOTIFY_APPRISE_VERSION="v0.5"
# #
# Required receiving services must already be set up. # Required receiving services must already be set up.
# Leave (or place) this file in the "notify_templates" subdirectory within the same directory as the main dockcheck.sh script. # Leave (or place) this file in the "notify_templates" subdirectory within the same directory as the main dockcheck.sh script.
@@ -35,17 +35,12 @@ trigger_apprise_notification() {
fi fi
fi fi
# e.g. APPRISE_PAYLOAD='mailto://myemail:mypass@gmail.com
# mastodons://{token}@{host}
# pbul://o.gn5kj6nfhv736I7jC3cj3QLRiyhgl98b
# tgram://{bot_token}/{chat_id}/'
if [[ -n "${!AppriseUrlVar:-}" ]]; then if [[ -n "${!AppriseUrlVar:-}" ]]; then
AppriseURL="${!AppriseUrlVar}" AppriseURL="${!AppriseUrlVar}"
curl -S -o /dev/null ${CurlArgs} -X POST -F "title=$MessageTitle" -F "body=$MessageBody" -F "tags=all" $AppriseURL # e.g. APPRISE_URL=http://apprise.mydomain.tld:1234/notify/apprise curl -S -o /dev/null ${CurlArgs} -X POST -F "title=$MessageTitle" -F "body=$MessageBody" -F "tags=${APPRISE_TAG:-all}" "$AppriseURL"
if [[ $? -gt 0 ]]; then if [[ $? -gt 0 ]]; then
NotifyError=true NotifyError=true
fi fi
fi fi
} }

View File

@@ -0,0 +1,47 @@
### DISCLAIMER: This is a third party addition to dockcheck - best effort testing.
NOTIFY_XMPP_VERSION="v0.1"
#
# Requires the package "go-sendxmpp" to be installed and in $PATH.
#
# Leave (or place) this file in the "notify_templates" subdirectory within the same directory as the main dockcheck.sh script.
# If you instead wish make your own modifications, make a copy in the same directory as the main dockcheck.sh script.
# Do not modify this file directly within the "notify_templates" subdirectory.
# Set XMPP_SOURCE_ID, XMPP_SOURCE_PWD and XMPP_DEST_JID in your dockcheck.config file.
trigger_xmpp_notification() {
if [[ -n "$1" ]]; then
xmpp_channel="$1"
else
xmpp_channel="xmpp"
fi
if ! command -v go-sendxmpp &>/dev/null; then
printf "\nRequired binary go-sendxmpp missing. XMPP notification will not be sent.\n"
remove_channel xmpp
return 0
fi
UpperChannel="${xmpp_channel^^}"
SourceJidVar="${UpperChannel}_SOURCE_JID"
SourcePwdVar="${UpperChannel}_SOURCE_PWD"
DestJidVar="${UpperChannel}_DEST_JID"
if [[ -z "${!SourceJidVar:-}" ]] || [[ -z "${!DestJidVar:-}" ]] || [[ -z "${!SourcePwdVar:-}" ]]; then
printf "\nRequired configuration variables are missing. XMPP notifications will not be sent.\n"
remove_channel xmpp
return 0
fi
SourceJid="${!SourceJidVar}" # E.g `mybotaccount@mydomain.tld`
SourcePwd="${!SourcePwdVar}" # The password for the account `mybotaccount@mydomain.tld`
DestJid="${!DestJidVar}" # E.g `myusername@mydomain.tld`
echo "$MessageBody" | go-sendxmpp --suppress-root-warning -u "$SourceJid" -p "$SourcePwd" "$DestJid"
if [[ $? -gt 0 ]]; then
NotifyError=true
fi
}

View File

@@ -2,79 +2,158 @@
# Modify, add and (if necessary) remove to fit your needs. # Modify, add and (if necessary) remove to fit your needs.
# This is a list of container names and releasenote urls, separated by space. # This is a list of container names and releasenote urls, separated by space.
13ft https://github.com/wasi-master/13ft/releases
actual_server https://actualbudget.org/blog actual_server https://actualbudget.org/blog
adguardhome https://github.com/AdguardTeam/AdGuardHome/releases
adminer https://github.com/TimWolla/docker-adminer/releases
aiostreams https://github.com/Viren070/AIOStreams/releases
altmount https://github.com/javi11/altmount/releases
apprise-api https://github.com/linuxserver/docker-apprise-api/releases apprise-api https://github.com/linuxserver/docker-apprise-api/releases
audiobookshelf https://github.com/advplyr/audiobookshelf/releases audiobookshelf https://github.com/advplyr/audiobookshelf/releases
authentik_server https://github.com/goauthentik/authentik/releases
authentik_worker https://github.com/goauthentik/authentik/releases
autobrr https://github.com/autobrr/autobrr/releases
barassistant https://github.com/karlomikus/bar-assistant//releases
barassistant_api https://github.com/karlomikus/bar-assistant/releases
bazarr https://github.com/morpheus65535/bazarr/releases bazarr https://github.com/morpheus65535/bazarr/releases
bazarr-ls https://github.com/linuxserver/docker-bazarr/releases bazarr-ls https://github.com/linuxserver/docker-bazarr/releases
bentopdf https://github.com/alam00000/bentopdf/releases
beszel https://github.com/henrygd/beszel/releases beszel https://github.com/henrygd/beszel/releases
booklore https://github.com/booklore-app/BookLore/releases
bookstack https://github.com/BookStackApp/BookStack/releases bookstack https://github.com/BookStackApp/BookStack/releases
boxarr https://github.com/iongpt/boxarr/releases
bruceforce-vaultwarden-backup https://github.com/Bruceforce/vaultwarden-backup/blob/main/CHANGELOG.md bruceforce-vaultwarden-backup https://github.com/Bruceforce/vaultwarden-backup/blob/main/CHANGELOG.md
byparr https://github.com/ThePhaseless/Byparr/releases
caddy https://github.com/caddyserver/caddy/releases caddy https://github.com/caddyserver/caddy/releases
cadvisor https://github.com/google/cadvisor/releases
calibre https://github.com/linuxserver/docker-calibre/releases calibre https://github.com/linuxserver/docker-calibre/releases
calibre-web https://github.com/linuxserver/docker-calibre-web/releases calibre-web https://github.com/linuxserver/docker-calibre-web/releases
calibre-web-automated https://github.com/crocodilestick/Calibre-Web-Automated/releases
chadburn https://github.com/PremoWeb/chadburn/releases
checkrr https://github.com/aetaric/checkrr/releases
cinesync https://github.com/sureshfizzy/CineSync/releases
cleanuperr https://github.com/flmorg/cleanuperr/releases cleanuperr https://github.com/flmorg/cleanuperr/releases
cloudflare-bypass https://github.com/sarperavci/CloudflareBypassForScraping/releases
collabora https://github.com/CollaboraOnline/online/releases
comet https://github.com/g0ldyy/comet/releases
configarr https://github.com/raydak-labs/configarr/releases
cronmaster https://github.com/fccview/cronmaster/releases
cross-seed https://github.com/cross-seed/cross-seed/releases cross-seed https://github.com/cross-seed/cross-seed/releases
crowdsec https://github.com/crowdsecurity/crowdsec/releases crowdsec https://github.com/crowdsecurity/crowdsec/releases
cup https://github.com/sergi0g/cup/releases cup https://github.com/sergi0g/cup/releases
daps https://github.com/drazzilb08/daps/releases
dashbrr https://github.com/autobrr/dashbrr/releases
databasus https://github.com/databasus/databasus/releases
decypharr https://github.com/sirrobot01/decypharr/releases
dispatcharr https://github.com/Dispatcharr/Dispatcharr/releases
diun https://github.com/crazy-max/diun/releases
dlproxy https://github.com/Pukabyte/dlproxy/releases
docker-db-auto-backup https://github.com/RealOrangeOne/docker-db-auto-backup/releases
dockerproxy https://github.com/Tecnativa/docker-socket-proxy/releases
dockge https://github.com/louislam/dockge/releases dockge https://github.com/louislam/dockge/releases
dozzle https://github.com/amir20/dozzle/releases dozzle https://github.com/amir20/dozzle/releases
dumb https://github.com/I-am-PUID-0/DUMB/releases
esphome https://github.com/esphome/esphome/releases
feishin https://github.com/jeffvli/feishin/releases
flarebypasser https://github.com/yoori/flare-bypasser/releases
flaresolverr https://github.com/FlareSolverr/FlareSolverr/releases
flatnotes https://github.com/dullage/flatnotes/releases flatnotes https://github.com/dullage/flatnotes/releases
forgejo https://codeberg.org/forgejo/forgejo/releases forgejo https://codeberg.org/forgejo/forgejo/releases
fressrss https://github.com/FreshRSS/FreshRSS/releases fressrss https://github.com/FreshRSS/FreshRSS/releases
frigate https://github.com/blakeblackshear/frigate/releases
gerbil https://github.com/fosrl/gerbil/releases gerbil https://github.com/fosrl/gerbil/releases
glances https://github.com/nicolargo/glances/releases
gluetun https://github.com/qdm12/gluetun/releases gluetun https://github.com/qdm12/gluetun/releases
go2rtc https://github.com/AlexxIT/go2rtc/releases go2rtc https://github.com/AlexxIT/go2rtc/releases
godoxy https://github.com/yusing/godoxy/releases
gotify https://github.com/gotify/server/releases gotify https://github.com/gotify/server/releases
hbbr https://github.com/rustdesk/rustdesk-server/releases hbbr https://github.com/rustdesk/rustdesk-server/releases
hbbs https://github.com/rustdesk/rustdesk-server/releases hbbs https://github.com/rustdesk/rustdesk-server/releases
homarr https://github.com/homarr-labs/homarr/releases homarr https://github.com/homarr-labs/homarr/releases
home-assistant https://github.com/home-assistant/core/releases/ home-assistant https://github.com/home-assistant/core/releases/
homepage https://github.com/gethomepage/homepage/releases
homer https://github.com/bastienwirtz/homer/releases homer https://github.com/bastienwirtz/homer/releases
immich_machine_learning https://github.com/immich-app/immich/releases immich_machine_learning https://github.com/immich-app/immich/releases
immich_postgres https://github.com/tensorchord/VectorChord/releases immich_postgres https://github.com/tensorchord/VectorChord/releases
immich_redis https://github.com/valkey-io/valkey/releases immich_redis https://github.com/valkey-io/valkey/releases
immich_server https://github.com/immich-app/immich/releases immich_server https://github.com/immich-app/immich/releases
jellyfin https://github.com/jellyfin/jellyfin/releases jellyfin https://github.com/jellyfin/jellyfin/releases
jellyfin-auto-collections https://github.com/ghomasHudson/Jellyfin-Auto-Collections/releases
jellyseerr https://github.com/Fallenbagel/jellyseerr/releases jellyseerr https://github.com/Fallenbagel/jellyseerr/releases
jellystat https://github.com/CyferShepard/Jellystat/releases jellystat https://github.com/CyferShepard/Jellystat/releases
karakeep https://github.com/karakeep-app/karakeep/releases
librespeed https://github.com/librespeed/speedtest/releases librespeed https://github.com/librespeed/speedtest/releases
lidarr https://github.com/Lidarr/Lidarr/releases/ lidarr https://github.com/Lidarr/Lidarr/releases/
lidarr-ls https://github.com/linuxserver/docker-lidarr/releases lidarr-ls https://github.com/linuxserver/docker-lidarr/releases
lubelogger https://github.com/hargata/lubelog/releases lubelogger https://github.com/hargata/lubelog/releases
mattermost https://github.com/mattermost/mattermost/releases mattermost https://github.com/mattermost/mattermost/releases
mealie https://github.com/mealie-recipes/mealie/releases mealie https://github.com/mealie-recipes/mealie/releases
mediathekarr https://github.com/PCJones/MediathekArr/releases
meilisearch https://github.com/meilisearch/meilisearch/releases meilisearch https://github.com/meilisearch/meilisearch/releases
monica https://github.com/monicahq/monica/releases monica https://github.com/monicahq/monica/releases
mqtt https://github.com/eclipse/mosquitto/tags mqtt https://github.com/eclipse/mosquitto/tags
n8n https://github.com/n8n-io/n8n/releases
navidrome https://github.com/navidrome/navidrome/releases
newt https://github.com/fosrl/newt/releases newt https://github.com/fosrl/newt/releases
nextcloud-aio-mastercontainer https://github.com/nextcloud/all-in-one/releases nextcloud-aio-mastercontainer https://github.com/nextcloud/all-in-one/releases
nginx https://github.com/docker-library/official-images/blob/master/library/nginx nginx https://github.com/docker-library/official-images/blob/master/library/nginx
notifiarr https://github.com/Notifiarr/notifiarr/releases
nzbdav https://github.com/nzbdav-dev/nzbdav/releases
ofelia https://github.com/mcuadros/ofelia/releases
onthespot https://github.com/justin025/onthespot/releases
opencloud https://github.com/opencloud-eu/opencloud/releases
outline https://github.com/outline/outline/releases
owncast https://github.com/owncast/owncast/releases owncast https://github.com/owncast/owncast/releases
pangolin https://github.com/fosrl/pangolin/releases pangolin https://github.com/fosrl/pangolin/releases
placeholdarr https://github.com/TheIndieArmy/placeholdarr/releases
postgresus https://github.com/RostislavDugin/postgresus/releases
profilarr https://github.com/Dictionarry-Hub/profilarr/releases
prowlarr https://github.com/Prowlarr/Prowlarr/releases prowlarr https://github.com/Prowlarr/Prowlarr/releases
prowlarr-ls https://github.com/linuxserver/docker-prowlarr/releases prowlarr-ls https://github.com/linuxserver/docker-prowlarr/releases
qbittorrent https://www.qbittorrent.org/news qbittorrent https://www.qbittorrent.org/news
qbittorrent-nox https://www.qbittorrent.org/news qbittorrent-nox https://www.qbittorrent.org/news
radarr https://github.com/Radarr/Radarr/releases/ radarr https://github.com/Radarr/Radarr/releases/
radarr-ls https://github.com/linuxserver/docker-radarr/releases radarr-ls https://github.com/linuxserver/docker-radarr/releases
rclone-manager https://github.com/iPromKnight/rclone-manager/releases
rdtclient https://github.com/rogerfar/rdt-client/releases
readarr https://github.com/Readarr/Readarr/releases readarr https://github.com/Readarr/Readarr/releases
readeck https://codeberg.org/readeck/readeck/releases readeck https://codeberg.org/readeck/readeck/releases
recyclarr https://github.com/recyclarr/recyclarr/releases recyclarr https://github.com/recyclarr/recyclarr/releases
redis https://github.com/redis/redis/releases
roundcubemail https://github.com/roundcube/roundcubemail/releases roundcubemail https://github.com/roundcube/roundcubemail/releases
sabnzbd https://github.com/linuxserver/docker-sabnzbd/releases sabnzbd https://github.com/linuxserver/docker-sabnzbd/releases
scannarr https://github.com/Pukabyte/scannarr/releases
scanopy https://github.com/scanopy/scanopy/releases
scoutarr https://github.com/SuFxGIT/scoutarr/releases
scrutiny https://github.com/AnalogJ/scrutiny/releases scrutiny https://github.com/AnalogJ/scrutiny/releases
seerr https://github.com/seerr-team/seerr/releases
sftpgo https://github.com/drakkan/sftpgo/releases sftpgo https://github.com/drakkan/sftpgo/releases
shelfmark https://github.com/calibrain/shelfmark/releases
slskd https://github.com/slskd/slskd/releases slskd https://github.com/slskd/slskd/releases
snappymail https://github.com/the-djmaze/snappymail/releases snappymail https://github.com/the-djmaze/snappymail/releases
sonarr https://github.com/Sonarr/Sonarr/releases/ sonarr https://github.com/Sonarr/Sonarr/releases/
sonarr-ls https://github.com/linuxserver/docker-sonarr/releases sonarr-ls https://github.com/linuxserver/docker-sonarr/releases
sortarr https://github.com/Jaredharper1/Sortarr/releases
stacks https://github.com/zelestcarlyone/stacks/releases
stash https://github.com/stashapp/stash/releases
stirling-pdf https://github.com/Stirling-Tools/Stirling-PDF/releases
stremio-iptv-addon https://github.com/Inside4ndroid/M3U-XCAPI-EPG-IPTV-Stremio/releases
stremioserver https://github.com/Stremio/server-docker/releases
synapse https://github.com/element-hq/synapse/releases
syncthing https://github.com/syncthing/syncthing/releases syncthing https://github.com/syncthing/syncthing/releases
tailscale https://github.com/tailscale/tailscale/releases tailscale https://github.com/tailscale/tailscale/releases
tautulli https://github.com/Tautulli/Tautulli/releases tautulli https://github.com/Tautulli/Tautulli/releases
thelounge https://github.com/thelounge/thelounge/releases thelounge https://github.com/thelounge/thelounge/releases
traefik https://github.com/traefik/traefik/releases traefik https://github.com/traefik/traefik/releases
umlautadaptarr https://github.com/PCJones/UmlautAdaptarr/releases
uptime-kuma https://github.com/louislam/uptime-kuma/releases
vaultwarden-server https://github.com/dani-garcia/vaultwarden/releases vaultwarden-server https://github.com/dani-garcia/vaultwarden/releases
vikunja https://github.com/go-vikunja/vikunja/releases
wallos https://github.com/ellite/Wallos/releases
watchstate https://github.com/arabcoders/watchstate/releases
watchtower https://github.com/beatkind/watchtower/releases watchtower https://github.com/beatkind/watchtower/releases
wopiserver https://github.com/cs3org/wopiserver/releases
wud https://github.com/getwud/wud/releases wud https://github.com/getwud/wud/releases
yamtrack https://github.com/FuzzyGrim/Yamtrack/releases
zigbee2mqtt https://github.com/Koenkk/zigbee2mqtt/releases zigbee2mqtt https://github.com/Koenkk/zigbee2mqtt/releases
zilean https://github.com/iPromKnight/zilean/releases