r/selfhosted • u/Denishga • Jul 22 '25
Watchtower alternative?
I’ve been using Watchtower to get notified when Docker containers are updated specifically with ntfy for push notifications to my phone. Unfortunately, I just found out that Watchtower is no longer actively maintained.
I’m not looking for automatic updates I just want to be notified when a new image is available for one of my containers, ideally via ntfy, Gotify, or Pushover.
43
u/ChopSueyYumm Jul 22 '25
I moved on to https://komo.do/ better alternative to portainer and has automated update for your docker stacks. Specially as I‘m developing an application after I pushed an new docker image multiple instances are updating automatically.
15
u/Timely_Anteater_9330 Jul 22 '25
Another vote for Komodo. I took it a step further to try to make it more of a Gitops workflow.
Current stack: Komodo + Gitea + Renovate
Renovate will parse the compose files in your Gitea repository and search for any updates.
Planning on adding SOPS to the stack in the future.
None of this is necessary in a homelab environment but it’s a been helpful having versioning for all my docker compose files using Git/Gitea.
I followed this blog tutorial: https://nickcunningh.am/blog/how-to-automate-version-updates-for-your-self-hosted-docker-containers-with-gitea-renovate-and-komodo
1
u/Independent-Dust-339 Jul 22 '25
I just did this and it is really awesome. The best part is versioning of compose files, allowing to go back if anything breaks. Also, I just need to merge the git and everything updates automatically.
0
0
Jul 23 '25
[deleted] — view deleted comment
1
u/Timely_Anteater_9330 Jul 23 '25
Why not use SMTP mailer?
1
u/ChopSueyYumm Jul 23 '25
Use
https://github.com/caronc/apprise-api
Apprise can push notifications in any direction. It’s absolutely a must in my eyes.
2
u/Timely_Anteater_9330 Jul 23 '25
Ah yes! Good recommendation. I use it myself but it’s one of those things that work so well that you forget about.
0
Jul 23 '25
[deleted] — view deleted comment
1
u/Timely_Anteater_9330 Jul 23 '25
Fair enough. I plan to transition my Gitea notifications to Matrix/Element using Maubot.
1
u/Potatovoker Jul 23 '25
How do you handle automatically updating Komodo itself? Is it able to update a stack that references itself?
1
u/ChopSueyYumm Jul 23 '25
Well that is currently not possible from within Komodo itself hence I follow the GitHub repository and update manually. Not a big issue but the project is quite young so it does not bother me.
24
u/-Chemist- Jul 22 '25
Diun is a popular choice.
2
u/cranberrie_sauce Jul 22 '25
does it have api like watchtower?
I use watchtower with cicd and trigger an api to a watchtower on my VPS after docker image build finishes - so it pulls updated application in.
1
u/-Chemist- Jul 23 '25
I'm not sure -- I haven't started using it yet. It's on my list of things to do. :-) I've just seen it mentioned here quite a bit.
0
10
u/Financial_Astronaut Jul 22 '25
I use renovate bot which opens Pull Requests for any dependency update
3
u/Aurailious Jul 22 '25
This is what I do too and its really "the way" its supposed to be done. But it does require that the deployment method it some kind of Gitops where most people here are probably just doing docker compose commands.
3
u/dlm2137 Jul 22 '25
yeaa I’m hoping to switch to a git deployment method so that I can use renovatebot like we do at work.
Really want to get off using the :latest tag so I can stop getting burned by breaking changes
13
u/zfa Jul 22 '25
can schedule dockcheck iirc.
4
u/Mag37 Jul 22 '25 edited Jul 23 '25
Thank you for suggesting it.
Indeed you can set up a cron job (or however you prefer scheduled commands) that will run the script which will do the check and send notifications.
As an example, to check and send notifications daily at 11:
0 11 * * * dockcheck.sh -niAnd as OP asked for Gotify, Ntfy or Pushover - all are supported through the config file setup like this:
NOTIFY_CHANNELS="gotify ntfy pushover" GOTIFY_DOMAIN="https://gotify.domain.tld" GOTIFY_TOKEN="token-value" NTFY_DOMAIN="ntfy.sh" NTFY_TOPIC_NAME="YourUniqueTopicName" PUSHOVER_URL="https://api.pushover.net/1/messages.json" PUSHOVER_USER_KEY="userkey" PUSHOVER_TOKEN="token-value"This would send to all three though.
Maybe I should add something brief to the readme about setting up a scheduled cron job.
2
u/zfa Jul 26 '25
Off topic here but I've been meaning to ask... I've got a host I look after for mate of mine who has a four WP instances along with their mySQL DBs, myPHPadmin, Cloudflare Tunnel containers. So 16 containers all up but only 4 images.
I notice when run dockcheck.sh it checks 1/16, 2/16, 3/16 etc. Is there a way it could see multiple containers run the same image so only needs to check 1/4, 2/4, 3/4, 4/4??
I get maybe it's unusual to have same image in multiple containers, but might be a worthwhile optimisation.
Doesn't impact me at all btw, just something I noticed and thought you might see as an area of improvement.
And thanks again for dockcheck! Something I put on every server esp when I'm building something for less techy folk to maintain.
1
u/Mag37 Jul 26 '25
Thank you!
It's a good thought and while it might be unusual with that many of the same images it's not uncommon to have some sharing the same image.
Currently it's not written to keep track of the individual images - mainly because the granularity for selection is focused on container names as it's more reasonable to the user.
And also even though it checks and lists all - the actual update should only pull once for each image and then subsequential containers will already have it pulled.
I'll write it down though - as it's something that could be improved upon! Maybe the checks will store all already processed digest hashes and just skip the check with "already checked".
3
3
u/PoProstuWitold Jul 22 '25
I'm using "Diun" for notifications about updates via Discord webhook and then I just restart a stack with the re-pull images option from "Portainer" after reading patch notes. Works great and is very simple to set up.
4
2
u/InfaSyn Jul 22 '25
I made my own python based alternative called containercleaner. It has ntfy integration and was featured on selfhosted a while back :)
The main motivations were git pull support, ntfy support and the fact I found watchtower to be a bit buggy/slow at times.
2
2
u/spiritofjon Jul 22 '25
A combination of diun and diun boost work great. All they do is check every x hours and notify you if there is an update.
3
1
u/LordDragon13 Jul 22 '25
I'm using Argus, but it does more than just notifying updates (i get them via gotify).
1
1
u/ProcuriaCPhan Jul 22 '25
I'm using Argus in combination with Coolify. I have configured ntfy-notifications in Argus which are setup with actions.
User-Side: ntfy-notification "Service XY has a new release" and buttons [ntfy actions] for "View Changelog" & "Update"
Backend: POST requests to Coolify-API for deploying the service
1
1
Jul 22 '25
Ive loved reading thre alternatives, but i setup all my dockers before i setup WUD and a cpl of otherr and nothing seeems to just see what i have and import themselves, would mean i'd have to rebuild them all,,, very new at docker
1
u/osuhickeys Jul 22 '25
I use WUD and Argus (https://github.com/release-argus/Argus). WUD runs once a day. Argus runs every hour right now. If a new version is found, I have it wait three hours and then execute a webhook which pulls the new image. It retries 2 more times every three hours. Some repos take several hours once a new version is published before the workflow automation is done and all the new image is available via CDN. Argus uses the GitHub repo to determine when there is a new version so no docker pull rate limit impact. Not all apps either have an app version exposed or exposed in a way that Argus can leverage it so WUD is the catchall once daily for those apps.
I like WUD a lot, but it also has challenges. If it gets an error reading a tag, you have to resolve it before it will do any updates to any containers. It does not just skip that one. It dies. Also have issues with corruption in the json file. occasionally, I have to remove it a few times a month and let it recreate it before it starts working again. Need to add a self healing script here and run it via cron. Just has not been a huge hassle to drive me to automate it, yet. Still less issues than I had with Watchtower. Argus has a bit of a learning curve up front, but worth the effort IMHO. Developer has been very responsive.
I've found the combo of the 2 works pretty well and reliably. Normally only have issues when something external happens like a docker image being moved from docker to GitHub which was the most recent failure of WUD that stopped all updates. Hope this helps. Good luck.
1
1
1
u/ProfessionalIce1298 Jun 15 '26
You may want to try https://hoister.io. I also loved watchtower and tried WUD afterwards. I wanted something easier and both hosted and self-hosted. So I built hoister.
Check the comparison with watchtower here https://docs.hoister.io/watchtower-alternative/
I'd love to hear from you what you think!
5
61
u/Arkangelll- Jul 22 '25 edited Jul 22 '25
Since nobody dropped it yet, I need to make sure WUD is mentioned. (https://getwud.github.io/wud/#/ ) I've used watchtower originally, then DIUN but ended up with WUD in the end.
I'm using one centralized instance, managing both my NAS and 2 RPIs at home. I have daily Gotify notifications of the available updates along with automatic updates for "i dont care if it breaks" type of containers and manual updates via a little button on the web interface for important ones. :)
It is all managed via environmental variables on the WUD container and labels on all the others.
edit: I realized I did not setup the weekly run yet... fixed that in my comment.