Watchtower: cómo actualizar automáticamente tus contenedores Docker en un Home Server

Introducción

Cuando administramos un Home Server con Docker, una de las tareas que debemos realizar periódicamente es mantener actualizados nuestros contenedores.

Servicios como Jellyfin, Nextcloud, Home Assistant, Uptime Kuma o WordPress reciben actualizaciones que incorporan nuevas funcionalidades, correcciones de errores y mejoras de seguridad.

Sin embargo, actualizar cada contenedor manualmente puede convertirse en una tarea repetitiva, especialmente cuando tenemos varios servicios funcionando en nuestro servidor.

Aquí es donde entra Watchtower, una herramienta que permite automatizar la detección de nuevas versiones de imágenes Docker y actualizar los contenedores cuando existen versiones disponibles.

En este artículo veremos qué es Watchtower, cómo funciona, cómo instalarlo utilizando Docker Compose y cómo configurarlo para realizar actualizaciones programadas.

1. ¿Qué es Watchtower?

Watchtower es una herramienta de código abierto diseñada para supervisar y actualizar automáticamente contenedores Docker.

Su funcionamiento consiste en comprobar periódicamente si existen nuevas versiones de las imágenes utilizadas por nuestros contenedores.

Cuando detecta una actualización, puede realizar automáticamente las siguientes operaciones:

  1. Detectar que existe una nueva versión de la imagen Docker.
  2. Descargar la nueva imagen desde el repositorio correspondiente.
  3. Detener el contenedor que utiliza la versión anterior.
  4. Crear nuevamente el contenedor utilizando la imagen actualizada.
  5. Conservar la configuración original del contenedor, incluyendo variables de entorno, puertos, redes y volúmenes configurados.

De esta manera, no necesitamos conectarnos constantemente al servidor para comprobar y actualizar manualmente cada servicio.

Importante: Watchtower no actualiza el sistema operativo ni los paquetes de Ubuntu. Su función se limita a administrar las actualizaciones de las imágenes de los contenedores Docker.

2. ¿Para qué sirve Watchtower?

Su principal objetivo es simplificar el mantenimiento de un entorno Docker.

Imaginemos que tenemos cinco servicios instalados en nuestro Home Server:

  • Jellyfin para administrar nuestra biblioteca multimedia.
  • Uptime Kuma para supervisar la disponibilidad de los servicios.
  • Home Assistant para automatización del hogar.
  • Calibre-Web para administrar libros electrónicos.
  • WordPress para alojar nuestro sitio web.

Sin una herramienta de automatización, tendríamos que comprobar periódicamente si existen nuevas imágenes y actualizar los contenedores manualmente.

Con Watchtower podemos automatizar este proceso y establecer un horario para realizar las comprobaciones.

Esto resulta especialmente útil cuando administramos varios servicios y queremos reducir las tareas de mantenimiento.

3. Principales funcionalidades

Actualizaciones automáticas

Comprueba si existen nuevas versiones de las imágenes Docker y puede actualizar los contenedores automáticamente.

Actualizaciones programadas

Permite definir intervalos de comprobación o utilizar expresiones cron para establecer días y horarios específicos.

Exclusión de contenedores

Permite evitar que determinados servicios sean actualizados automáticamente mediante etiquetas de Docker.

Limpieza de imágenes antiguas

Con la opción Cleanup puede eliminar las imágenes anteriores después de completar una actualización, ayudando a evitar la acumulación de imágenes que ya no se utilizan.

Notificaciones

Permite configurar notificaciones para conocer cuándo se detectan o realizan actualizaciones, utilizando los mecanismos de notificación compatibles.

4. Requisitos previos

Antes de instalar Watchtower necesitamos:

  • Un servidor Linux, Windows o cualquier sistema compatible con Docker.
  • Docker Engine instalado y funcionando.
  • Docker Compose.
  • Acceso administrativo al servidor.
  • Conexión a Internet para descargar las imágenes.

También es recomendable tener configurado un sistema de respaldos para los servicios y sus bases de datos.

5. Instalación de Watchtower con Docker Compose

Watchtower funciona como un contenedor Docker independiente y necesita comunicarse con el motor Docker del servidor.

Para ello utiliza el socket:

/var/run/docker.sock

Este socket permite que Watchtower consulte y administre los contenedores del servidor.

Nota sobre el proyecto: el repositorio original containrrr/watchtower fue archivado el 17 de diciembre de 2025. Para una instalación nueva, este tutorial utiliza la continuación comunitaria nickfedor/watchtower. Es importante comprobar el estado y la procedencia de las imágenes antes de instalarlas.

Paso 1. Crear el directorio

Nos conectamos al servidor mediante SSH y creamos el directorio donde almacenaremos la configuración:

mkdir -p ~/docker/watchtower
cd ~/docker/watchtower

Paso 2. Crear el archivo Docker Compose

Creamos el archivo de configuración:

nano docker-compose.yml

Agregamos el siguiente contenido:

services:
  watchtower:
    image: nickfedor/watchtower:latest
    container_name: watchtower
    restart: unless-stopped

    environment:
      TZ: America/Mexico_City
      WATCHTOWER_SCHEDULE: "0 0 4 * * *"
      WATCHTOWER_CLEANUP: "true"

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Guardamos los cambios.

Paso 3. Iniciar Watchtower

Ejecutamos:

docker compose up -d

Comprobamos que el contenedor esté funcionando:

docker ps --filter name=watchtower

Si aparece con estado Up, el contenedor se encuentra en ejecución.

6. Configurar actualizaciones programadas

Una de las características más útiles de Watchtower es la posibilidad de establecer un horario específico para comprobar actualizaciones.

En nuestro ejemplo utilizamos:

WATCHTOWER_SCHEDULE: "0 0 4 * * *"

Esta expresión indica que Watchtower realizará sus comprobaciones todos los días a las 04:00:00 horas.

Es importante tener en cuenta que Watchtower utiliza una expresión cron de seis campos:

CampoValorSignificado
Segundos0Segundo cero
Minutos0Minuto cero
Horas4Cuatro de la mañana
Día del mes*Todos los días
Mes*Todos los meses
Día de la semana*Todos los días de la semana

También configuramos:

TZ: America/Mexico_City

Esto permite que el horario programado y los registros utilicen la zona horaria de Ciudad de México.

7. Cómo excluir contenedores de las actualizaciones

No siempre es recomendable actualizar automáticamente todos los servicios.

Por ejemplo, podemos tener una aplicación que funciona correctamente y preferimos actualizar manualmente después de revisar las notas de cada versión.

Watchtower permite excluir contenedores utilizando etiquetas de Docker.

Para excluir un servicio, agregamos la siguiente etiqueta en su archivo Docker Compose:

labels:
  - "com.centurylinklabs.watchtower.enable=false"

Por ejemplo:

services:
  wordpress:
    image: wordpress:php8.3-apache
    container_name: wordpress-web

    labels:
      - "com.centurylinklabs.watchtower.enable=false"

Con esta configuración, Watchtower omitirá ese contenedor durante sus actualizaciones automáticas.

Esta funcionalidad es especialmente útil para servicios importantes, bases de datos y aplicaciones que requieren una validación previa antes de actualizarse.

8. Cómo comprobar los registros de Watchtower

Podemos consultar los registros del contenedor para comprobar si está funcionando correctamente:

docker logs watchtower

Para visualizar los registros en tiempo real:

docker logs -f watchtower

También podemos comprobar cuándo se realizó la última ejecución y si se encontraron imágenes nuevas.

Si queremos salir de la visualización en tiempo real, presionamos Ctrl + C. Esto no detiene el contenedor.

9. Buenas prácticas y recomendaciones

Aunque Watchtower facilita el mantenimiento de Docker, es importante considerar algunos aspectos antes de habilitar actualizaciones automáticas.

Realizar respaldos periódicos.

Antes de actualizar servicios importantes, debemos contar con respaldos de sus configuraciones y bases de datos.

No actualizar todo sin supervisión.

Las nuevas versiones pueden introducir cambios incompatibles. Es recomendable excluir los servicios críticos o utilizar un proceso de actualización manual para ellos.

Evitar depender exclusivamente de la etiqueta latest.

Es conveniente revisar qué versiones y etiquetas utilizan nuestros contenedores, especialmente cuando necesitamos mantener una versión específica.

Proteger el acceso al socket de Docker.

El acceso a /var/run/docker.sock proporciona un nivel de control muy elevado sobre Docker y, en la práctica, puede equivaler a privilegios administrativos sobre el servidor. No debemos exponerlo a redes o usuarios no confiables.

Revisar los registros después de las actualizaciones.

Una actualización exitosa no garantiza que la aplicación funcione correctamente. Debemos comprobar que los servicios continúen operativos.

No confundir actualización con respaldo.

Watchtower no crea copias de seguridad ni garantiza que podamos regresar automáticamente a una versión anterior.

10. Conclusión

Watchtower es una herramienta interesante para quienes administramos un Home Server con múltiples servicios Docker.

Su capacidad para detectar nuevas imágenes, programar actualizaciones y excluir determinados contenedores permite simplificar considerablemente las tareas de mantenimiento.

Sin embargo, la automatización debe utilizarse con precaución. No todos los servicios deberían actualizarse sin supervisión, especialmente aquellos que almacenan información importante.

La mejor estrategia es combinar Watchtower con respaldos periódicos, supervisión de los contenedores y actualizaciones controladas para los servicios críticos.

Así podemos mantener nuestro Home Server actualizado sin perder el control sobre los servicios que tenemos funcionando.

Documentación de Watchtower

Repositorio GitHub de la continuación comunitaria

Repositorio original y aviso de archivado

Configuración de parámetros y programación