Last updated on 14 November 2024
Important or Recent Updates
Historic Updates | Date |
---|---|
New guide update for DSM7.2 and Container Manager | 30/04/2023 |
Added labels to GlueTUN container guide so updated information in this one to coincide | 06/05/2023 |
Added a 3rd option to just exclude specific containers via a label. | 23/11/2023 |
What is Watchtower?
Watchtower monitors and automatically updates your containers to the latest versions for you, it is useful as it is not limited to which Docker repositories it can pull from. The Container Manager UI can only notify you of updates for container images from Docker Hub, not the popular GitHub.
Let’s Begin
We will be setting up Watchtower using the Project functionality in Container Manager. This uses a compose file to tell Docker how to set up the container and also define some preferences.
Folder Setup
Let’s start by getting a folder set up for the container to use. Open up File Station create the following.
/docker/projects/watchtower-compose
Container Manager
Next we are going to set up a ‘Project’ in Container Manager. Open up Container Manager and click on Project then on the right-hand side click ‘Create’.
In the next screen we will set up our General Settings, enter the following:
Section | Setting |
---|---|
Project Name: | watchtower |
Path: | /docker/projects/watchtower-compose |
Source: | Create docker-compose.yml |
We have a couple of different composes available below, the first one is configured to update all running containers at 2am daily.
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
environment:
- TZ=YOURTIMEZONE
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_INCLUDE_STOPPED=true
- WATCHTOWER_REVIVE_STOPPED=false
- WATCHTOWER_SCHEDULE=0 0 2 * * *
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
As an addition to the method above you can exclude specific containers from updates by adding this line to their yaml (compose) details. This is likely faster than using method 2
labels:
- com.centurylinklabs.watchtower.enable=false
The second has an added section where you can specify the names of the containers you would like to update (use the exact name of the container as per the Synology UI)
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
environment:
- TZ=YOURTIMEZONE
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_INCLUDE_STOPPED=true
- WATCHTOWER_REVIVE_STOPPED=false
- WATCHTOWER_SCHEDULE=0 0 2 * * *
command: # add or remove the below as required
- overseerr
- plex
- prowlarr
- radarr
- sonarr
- tautulli
- watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
You can copy and paste the one you wish to use into the blank section in Container Manager.
Environment Variables
We need to make some changes in order for watchtower to know what time it is where you are and what we want it to do. You can amend these in the compose based on your preferences.
Variable | Value | What it does |
---|---|---|
TZ | Europe/London | Change this to your own timezone |
WATCHTOWER_CLEANUP | true or false | We want to clean up the old docker images, if you don’t turn this on over the course of a few months you will find that the images start to eat a lot of space, and they are not even being used. (true or false) |
WATCHTOWER_INCLUDE_STOPPED | true or false | Do you want to update any stopped containers, the container will stay stopped after being updated (true or false) |
WATCHTOWER_REVIVE_STOPPED | true or false | If a stopped container is updated do you want Watchtower to start it up? (true or false) |
WATCHTOWER_SCHEDULE | 0 0 2 * * * | Rather than setting the number of seconds to wait between checks you can set a schedule. The default I use for the guide is 2am every day, you can work out your own schedule using a cron schedule generator. |
Click ‘Next’
You do not need to enable anything on the ‘Web portal settings’ screen click ‘Next’ again
On the final screen click Done which will begin the download of the container images and once downloaded they will be launched!
The image will now be downloaded and extracted. You should see ‘Code 0’ when it has finished.
You will now see your watchtower project running it should have a green status on the left-hand side.
You can now just leave Watchtower running you will never need to manually update your containers again.
FAQ
I keep getting X container has stopped unexpectedly errors!
DSM does not know or understand that Watchtower is issuing commands in the background. So it makes the assumption that a container was stopped unexpectedly, but we know it was Watchtower doing an update.
Do I need to update Watchtower itself?
Nope it updates itself – quite clever really 🙂
Looking for some help, join our Discord community
If you are struggling with any steps in the guides or looking to branch out into other containers join our Discord community!
Buy me a beverage!
If you have found my site useful please consider pinging me a tip as it helps cover the cost of running things or just lets me stay hydrated. Plus 10% goes to the devs of the apps I do guides for every year.
Hi doctor, I noticed this docker-compose doesn’t have the “network_mode: synobridge” like usual, is that intended? I guess it doesn’t really matter for watchtower?
Hey Benji – Yeah no need for this to be on a specific bridge, we only put items that need to talk to one another on the same bridge.
if we were following option 1 in this post, did we have to add the extra line to prevent watchtower from being updated, or was that option?
That second line is for you to add to specific containers you don’t want watchtower to update, for example I layer it into GlueTUN guides to avoid issues with it being updated automatically.
Hi,
Hoping to get some assistance with watchtower and getting GlueTun to update.
I followed the guide above a few days ago to set up Watchtower (I only used the first set of docket compose code in the guide) and noticed that only my deluge image has been updated, the gluetun image is still running an older version (which I followed your guide one as well; though it was quite a while back).
Not sure if I’ve missed a step somewhere.
Any help would be greatly appreciated.
Hey – So you will notice there is a label on the GlueTUN container which excludes it from auto updates – this is due to the overall project will become unhealthy as the attached containers won’t be able to re-attach until the whole project is stopped and started. So you need to do a manual update.
Thanks for the explanation.
For a moment there, i thought i missed something in the code.
Hello, just to confirm, will this also update containers that are part of a project?
Yes, 100%