Diun: Avisos de actualizaciones de imágenes Docker

Recibe avisos por email o telegram

Roberto Lodeiro

Debido al extendido uso de Docker y a la gran cantidad de imágenes que podemos tener en nuestro servidor, resulta muy útil tener un servicio automatizado para el aviso de actualizaciones disponibles de las mismas.

Vamos a ver como instalar y configurar Diun, totalmente OpenSource y selfhosted, para que nos avise por correo electrónico y/o por Telegram.


Instalación y configuración

Teniendo Docker instalado y corriendo en nuestro sistema, primero vamos a crear un directorio diun el cual enlazaremos al contenedor para guardar la configuración y datos del mismo.

En mi caso, la ruta escogida es /home/miusuario/diun. Dentro creamos un directorio data y el yml de configuración diun.yml.

  • Creamos el fichero de configuración:
$ sudo nano /home/miusuario/diun/diun.yml

Agregamos la siguiente configuración:

db:
  path: diun.db

watch:
  workers: 20
  schedule: "0 */6 * * *"
  firstCheckNotif: false
  compareDigest: true

notif:
  mail:
    host: localhost
    port: 25
    ssl: false
    username: xxxxx
    password: xxxxx
    from: tucorreo@dominio.com
    to: correodestino@dominio.com
  telegram:
    token: xxxxx
    chatIDs:
      - xxxxx
providers:
  docker:
    watchStopped: true
    watchByDefault: false

Cambia la configuración de mail por los datos de tu cuenta y proveedor de correo. Para los avisos por Telegram, hemos de indicar el token de nuestro bot y uno o más chatIDs donde recibiremos los mensajes.

Podemos configurar otros sistemas de notificación listados en la web del proyecto (apartado Notifications) como Teams o Rocket.Chat, entre otros.

En mi caso, solo utilizo el provider Docker, pero puedes agregar otros tal como se indica en la web oficial en el apartado providers.

Si ponemos en true watchByDefault, nos avisará de las actualizaciones de todos los contenedores que tengamos en nuestro sistema. Yo prefiero controlar de cuales quiero avisos y de cuales no, por lo que lo dejo en false, y Diun solo avisará de actualizaciones de las imágenes a las que le pongamos la etiqueta diun.enable=true.

  • Creamos el contenedor de Diun:
$ docker run -d --name diun \
-e "TZ=Europe/Madrid" \
-e "LOG_LEVEL=info" \
-e "LOG_JSON=false" \
-v "/home/miusuario/diun/data:/data" \
-v "/home/miusuario/diun/diun.yml:/diun.yml:ro" \
-v "/var/run/docker.sock:/var/run/docker.sock" \
-l "diun.enable=true" \
--restart always \
crazymax/diun:latest

Recuerda modificar la ruta del directorio data y del yml que hemos creado anteriormente.

  • Para probar que nuestras notificaciones funcionan, entramos por consola al contenedor:
$ docker exec -it diun /bin/sh
  • Ejecutamos el siguiente comando:
$ diun notif test

Recibiremos una notificación de test por los providers configurados.

Con esto, ya tendremos Diun corriendo, el cual nos avisará de las nuevas actualizaciones de nuestras imágenes, siempre que les pongamos la etiqueta diun.enable=true dejando watchByDefault a false.


Espero que sea útil, ¡gracias por leerme!