Donde digo dije, digo Diego

· 4 min · @Linux · #Debian #Docker

Mucha gente pensará que me he vuelto loco al poner este título a este artículo y más siendo un blog de tecnología, pero cuando lleguéis al final lo entenderéis.

Todo empieza, si leéis este artículo donde comentaba que había estado haciendo pruebas de funcionalidad con watchtower para mantener actualizados mis docker sin mi supervisión y que solo me avisara cuando se hubiera actualizado uno.

También comentaba como que resultaba un poco lioso su configuración (fichero docker) y que volvía a diun para luego volver a watchtower para quedarme en él.

Pues ahora resulta, por eso el título de este artículo, donde dije watchtower ahora digo diun. Y el motivo es muy simple.

Tan simple que fue, porque después de una actualización, algunos de los dockers/containers que uso dejaron de funcionar. Los contenedores tenían errores, que como se actualizaron sin mi supervisión, dejaron de funcionar. Y menos mal que lo descubrí pronto, porque sino, no sé lo que hubiera pasado. Sé que estoy exagerando un poco, mi servidor no es la NASA, pero bueno, es mi servidor.

Eso que ya estaba prevenido con ello, porque todos los artículos que leí sobre watchtower te avisan que hay que tener un control sobre las actualizaciones, porque pueden ocasionar un desastre y sino estás atento no te darás cuenta hasta que sea muy tarde.

Descubrí que la última actualización no había ido correctamente, porque normalmente recibo mensajes de las acciones que hace el docker y ese día no recibí ninguna alerta a través de Telegram, y aquí es donde me puse a investigar, para descubrir por qué no estaba recibiendo las alertas y todo era culpa de que el container no estaba funcionando correctamente, este tenía un error que hacía que se reiniciase todo el rato con todo lo que ello provoca. Y ya me veis anulando la actualización y volviendo a la versión anterior.

Después de esta mala experiencia, aunque ya la sabía, porque el podcaster Atareao la había comentado en su artículo donde él explicaba que estaba usando watchtower, pero yo pensaba, iluso de mí, que para los dockers tan simples que uso, no tendría que pasar nada. Pues no veas si no pasó.

Me puse a buscar a ver qué decía la gente cuál era la mejor opción para substituir a watchtower. Muchos decían que el mejor era diun y si además, los creadores de muchas de las imágenes de docker que uso son linuxservers te aconsejan no usar watchtower sino usar diun, pues me fui a por ello.

La instalación es muy simple, como siempre en docker:

diun:
  image: crazymax/diun:latest
  container_name: diun
  restart: unless-stopped
  hostname: nomDelTeuServidor
  volumes:
    - ${STORAGE}/config/diun:/data
    # FITXER ON ESTA LA CONFIGURACIÓ AMB TELEGRAM
    # I ELS MISSATGES D'ALERTA QUE ENVIA QUANT TE DOCKER PER ACTUALIZAR
    - ${STORAGE}/config/diun/diun.yml:/diun.yml:ro
    - /var/run/docker.sock:/var/run/docker.sock:ro
  environment:
    - "TZ=Europe/Madrid"
    - "LOG_LEVEL=info"
    - "LOG_JSON=false"

El problema viene luego en la configuración de las alertas, que en mi caso las recibo a través de Telegram aunque tienes más opciones donde recibirlas, no es complicado si sigues el manual que tienen para ello, tienes que configurar las alertas que vas a recibir (que está todo en un fichero yaml):

# LA BBDD DE DIUN
db:
  path: diun.db
# EL CRON DE DIUN
watch:
  workers: 20
#    schedule: "*/1 * * * *"
  schedule: "@weekly"
  firstCheckNotif: true
# QUE QUIN SERVIDOR (ES POT DIR AIXI) OBTING ELS DOCKERS
providers:
  docker:
    watchByDefault: false
    watchStopped: true
# CONFIGURACIO DE TELEGRAM
# I DEL MISSATGE QUE S'ENVIA
notif:
  telegram:
    token: TOKEN_TELEGRAM
    chatIDs:
      - ID_DEL_CHAT_DE_TELEGRAM
    templateBody: |
      # AQUI TEORICAMENT HAURIA D'ENVIAR EL LOGO DE DIUN, PERO NO HO FA
      [Image]({{ _Meta_Logo }})
      # AQUI ES ON TINC EL PROBLEMA I DE MOMENT NO HO POSSO PERQUE NO PORTI A PROBLEMES

Con esto, solamente te falta hacer un:

usuari@debian:~# docker-compose up -d diun

Ya lo tenemos todo funcionando.

Esto no es del todo cierto, porque aún falta por indicar/señalar qué contenedores quieres que diun controle/vigile por si ha habido actualización y esto se hace añadiendo el siguiente código en tu docker-compose.yml.

labels:
  - diun.enable=true

Aunque en mi caso, no es así. Ahora mismo lo tengo a un 80% de funcionamiento, porque según el manual, por lo que yo he podido entender, puedes enviar imágenes, para que las alertas sean más amigables y te indiquen de qué container es.

Pero parece ser que esto no funciona del todo correctamente, aunque sé que es posible enviar imágenes a Telegram, porque en las notificaciones que tengo en flexget lo tengo puesto y las recibo sin ningún problema, pero en cambio con diun no funciona. Tendré que seguir investigando el motivo por el que no funciona.

◇ Referencia