Informations: Ce tutoriel n'est plus maintenu.
Vous pouvez toujours consulter : [Tuto] Installation de Watchtower en Docker
Vous pouvez toujours consulter : [Tuto] Installation de Watchtower en Docker
Bonjour,
Voici un tuto, pour ceux qui souhaiterai installer Watchtower en docker sur un NAS Synology.
Nous allons ici utiliser Portainer ou docker-compose, cette solution ne pourra donc ce faire, uniquement sur un NAS ou est possible d'installer Docker.
Le but de ce tuto sera de rendre cette installation facile et accessible a tous, bien que loin d’être un expert de docker/docker-compose, n’hésiter pas à répondre à ce sujet avec vos interrogations, ..
Pour ceux qui sont plus à l'aise avec ce genre d'installation, n'hésiter pas a proposer des améliorations, ou des conseils, ...
Pré-requis :
Avoir installé le paquet Docker
Avoir un accès SSH au Synology*
* Pour faire cette manip, il vous faudra vous connecter en SSH à votre NAS, si vous ne savez pas le faire, vous trouverez ici un tuto explicatif : [Tuto] Acceder à son NAS en lignes de commande.
Note : Cette installation n'est pas possible via Docker DSM, car Watchtower demande l'acces au sock Docker.
 
	Watchtower c'est quoi ?
Watchtower est un conteneur qui va surveiller vos conteneurs à la recherche de mise a jour disponible ! Si une mise a jour est disponible, alors Watchtower, arrete le conteneur, récupere la nouvelle image, et re-créé le conteneur avec le nouvelle image.
Sommaire :
1/ Création du conteneur
_____a/ via Portainer
_____b/ via docker-compose
2/ Utilisation
3/ Les notifications
_____a/ via Discord
_____b/ via Gotify
1/ Création du conteneur
Watchtower peut être paramètré de deux façon, soit par defaut il surveille tous les conteneurs SAUF ceux qu'on souhaite exclure, ou alors il ne surveille QUE les conteneurs que l'on souhaite.
Ici, c'est cette deuxième option que j'ai choisi, je souhaite que Watchtower ne mette a jour que les conteneurs auquel je lui aurait autorisé a la faire.
_____b/ via Portainer
Dans Portainer, cliquer sur Stacks, puis Add Staks :
 
	Donner un nom a votre stack, par exemple "watchtower", en en dessous, coller le compose ci dessous :
 
	
		Code:
	
	version: "2.3"
services:
  watchtower:
    container_name: watchtower
    image: containrrr/watchtower:amd64-latest
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - WATCHTOWER_SCHEDULE= 0 0 6 * * *
      - WATCHTOWER_LABEL_ENABLE=true
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_REMOVE_VOLUMES=true
      - WATCHTOWER_NOTIFICATIONS_LEVEL=debug
    volumes:
      - /var/run/docker.sock:/var/run/docker.sockEnsuite, pour créer le conteneur on clique sur "Deploy the stack"
 
	_____b/ via docker-compose
Nous allons créer un fichier "docker-compose.yml" avec les paramètres du conteneurs.
Celui-ci est a placer dans /volume1/docker/watchtower.
Voici mon fichier "docker-compose.yml" :
		Code:
	
	version: "2.3"
services:
  watchtower:
    container_name: watchtower
    image: containrrr/watchtower:amd64-latest
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - WATCHTOWER_SCHEDULE= 0 0 6 * * *
      - WATCHTOWER_LABEL_ENABLE=true
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_REMOVE_VOLUMES=true
      - WATCHTOWER_NOTIFICATIONS_LEVEL=debug
    volumes:
      - /var/run/docker.sock:/var/run/docker.sockIl n'y a normalement aucunes modifications a faire, enregistrer votre fichier sous le nom : docker-compose.yml
Puis charger le fichier sur votre NAS ( chez moi, il se trouve dans /volume1/docker/ )
Ensuite en SSH, je passe en mode administrateur avec la commande :
sudo su -
Le mot de passe admin vous est demandé.
Dans mon dossier /volume1/docker/watchtower, j'ai chargé mon fichier docker-compose.yml. Je vais donc accéder à ce dossier, pour cela je fait :
cd /volume1/docker/watchtower
Ensuite, afin "d’exécuter" mon fichier docker-compose.yml, je tape en ssh :
sudo docker-compose up -d
Le conteneur est créer, puis démarre.
2/ Utilisation
Maintenant que Watchtower est en route, nous allons lui dire quel conteneur il peu mettre à jour.
Pour cela, il faut rajouter le labels "com.centurylinklabs.watchtower.enable=true" aux conteneurs que watchtower doit surveiller.
Un exemple sur mon compose de jellyfin :
A l'origine, il est comme ceci :
		Code:
	
	version: "3" 
services: 
  jellyfin: 
    image: linuxserver/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    environment:
     - PUID=9999
     - PGID=111
     - TZ=Europe/Paris
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0
    networks:
      - jellyfin
    ports:
      - 8096:8096
    expose:
      - 8096
    volumes: 
      - /volume1/docker/jellyfin/config:/config 
      - /volume1/docker/jellyfin/cache:/cache
  nginx:
    image: nginxinc/nginx-unprivileged:alpine
    container_name: jellyfin_proxy
    restart: unless-stopped
    networks:
      - jellyfin
    volumes:
      - /volume1/docker/jellyfin/jellyfin_nginx.conf:/etc/nginx/conf.d/default.conf:ro
    ports:
      - "8083:8080"
networks:
  jellyfin:
    external:
      name: jellyfinAfin que watchtower surveille le conteneur jellyfin, nous allons rajouter le labels, ce qui donne ceci :
		Code:
	
	version: "3" 
services: 
  jellyfin: 
    image: linuxserver/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    labels:
      - com.centurylinklabs.watchtower.enable=true
    environment:
     - PUID=9999
     - PGID=111
     - TZ=Europe/Paris
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0
    networks:
      - jellyfin
    ports:
      - 8096:8096
    expose:
      - 8096
    volumes: 
      - /volume1/docker/jellyfin/config:/config 
      - /volume1/docker/jellyfin/cache:/cache
  nginx:
    image: nginxinc/nginx-unprivileged:alpine
    container_name: jellyfin_proxy
    restart: unless-stopped
    networks:
      - jellyfin
    volumes:
      - /volume1/docker/jellyfin/jellyfin_nginx.conf:/etc/nginx/conf.d/default.conf:ro
    ports:
      - "8083:8080"
networks:
  jellyfin:
    external:
      name: jellyfinDans cette exemple, le conteneur jellyfin est surveillé

3/ Les notifications
_____a/ Discord
Pour utiliser les notifications Discord, nous allons modifier notre docker-compose afin d'y inclure quelques arguments supplémentaires.
Voici les arguments a inclure :
		Code:
	
	      - WATCHTOWER_NOTIFICATIONS=slack
      - WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER=Watchtower
      - WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=https://discordapp.com/api/webhooks/Notre compose prend donc cette forme :
		Code:
	
	version: "2.3"
services:
  watchtower:
    container_name: watchtower
    image: containrrr/watchtower:amd64-latest
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - WATCHTOWER_SCHEDULE= 0 0 6 * * *
      - WATCHTOWER_LABEL_ENABLE=true
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_REMOVE_VOLUMES=true
      - WATCHTOWER_NOTIFICATIONS_LEVEL=debug
      - WATCHTOWER_NOTIFICATIONS=slack
      - WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER=Watchtower
      - WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=https://discordapp.com/api/webhooks/
    volumes:
      - /var/run/docker.sock:/var/run/docker.sockIci, nous allons devoir modifier la variable WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL par l'url du webhooks que va vous fournir Discord.
A la fin de l'url, il faudra rajouter /slack
Exemple sur votre url est alors il faudra renseigner :
_____b/ Gotify
Pour utiliser les notifications Gotify, nous allons modifier notre docker-compose afin d'y inclure quelques arguments supplémentaires.
Voici les arguments a inclure :
		Code:
	
	      - WATCHTOWER_NOTIFICATIONS=gotify
      - WATCHTOWER_NOTIFICATION_GOTIFY_URL=https://gotify
      - WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN=xxxxxxxxxxxNotre compose prend donc cette forme :
		Code:
	
	version: "2.3"
services:
  watchtower:
    container_name: watchtower
    image: containrrr/watchtower:amd64-latest
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - WATCHTOWER_SCHEDULE= 0 0 6 * * *
      - WATCHTOWER_LABEL_ENABLE=true
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_REMOVE_VOLUMES=true
      - WATCHTOWER_NOTIFICATIONS_LEVEL=debug
      - WATCHTOWER_NOTIFICATIONS=gotify
      - WATCHTOWER_NOTIFICATION_GOTIFY_URL=https://gotify
      - WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN=xxxxxxxxxxx
    volumes:
      - /var/run/docker.sock:/var/run/docker.sockIci, nous allons devoir modifier la variable WATCHTOWER_NOTIFICATION_GOTIFY_URL par l'url de votre serveur Gotify et WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN par le "token" que vous aurait créer dans la section "App" de Gotify.
Vous trouverez également sur nas-forum.com un autre tuto sur watchtower par .Shad., avec, entre autre, une explication plus détaillé sur la fréquence de mise à jour.
Source :
GitHub - containrrr/watchtower: A process for automating Docker container base image updates.
A process for automating Docker container base image updates.  - GitHub - containrrr/watchtower: A process for automating Docker container base image updates.
				24-05-2021 - Changement du cron pour 0 0 6 * * * ( Tous les jours a 6h du matin )
15-01-2021 - Correction d'une "coquille"
29-12-2020 - Il semble y avoir un soucis avec l'image récupéré en utilisant le tag d'image "containrrr/watchtower:latest", j'ai donc modifié le tuto afin de préciser l'architecture voulu ( dans notre cas, amd64, ce qui donne : "containrrr/watchtower:amd64-latest"
18-10-2020 - Suppression de la variable "WATCHTOWER_POLL_INTERVAL=21600", elle ne peu pas co-habiter avec "WATCHTOWER_SCHEDULE" il faut donc choisir l'un ou l'autre. Merci @oracle7
05-09-2020 - Explications sur la mise en place des notifications discord et/ou gotify
04-09-2020 - Création du tuto
			
				Dernière édition: 
				
		
	
										
										
											
	
										
									
								 
	 
	 
 
		 
 
		 
 
		 
 
		
