Categoría: Automatización

  • n8n: guía definitiva para instalarlo con Docker y automatizar tu Home Server

    n8n: guía definitiva para instalarlo con Docker y automatizar tu Home Server

    Introducción

    Cuando administramos un Home Server, normalmente terminamos utilizando diferentes aplicaciones para cubrir nuestras necesidades: monitorización, almacenamiento, automatización del hogar, administración de servicios y publicación de contenido.

    El problema aparece cuando queremos que todas estas aplicaciones trabajen juntas.

    Por ejemplo, ¿qué pasaría si pudiéramos recibir una notificación de Telegram cuando un servicio deja de funcionar? ¿O ejecutar una tarea automáticamente cada día, consultar una API, procesar información y enviar un reporte sin tener que intervenir manualmente?

    Para conseguirlo podemos utilizar n8n, una plataforma de automatización de flujos de trabajo que permite conectar diferentes aplicaciones y servicios mediante una interfaz visual.

    En este artículo veremos qué es esta plataforma, cuáles son sus principales funcionalidades, cómo instalarlo utilizando Docker Compose y algunos casos de uso prácticos para aprovecharlo en nuestro Home Server.

    1. ¿Qué es n8n?

    Es una plataforma de automatización de flujos de trabajo (workflow automation) que permite conectar aplicaciones, servicios, bases de datos y APIs para ejecutar tareas de forma automática.

    n8n automatización de flujos de trabajo

    Su principal característica es que utiliza una interfaz visual donde podemos construir flujos de trabajo mediante bloques llamados nodos.

    Cada nodo representa una operación específica, como:

    • Recibir información desde una aplicación.
    • Consultar una API.
    • Procesar datos.
    • Ejecutar una condición.
    • Enviar un mensaje.
    • Guardar información en una base de datos.
    • Ejecutar una acción en otro servicio.

    Los nodos se conectan entre sí para construir un flujo de trabajo que se ejecuta cuando ocurre un evento o se cumple una condición determinada.

    Esta herramienta puede utilizarse sin necesidad de programar, aunque también permite incorporar JavaScript, expresiones y solicitudes HTTP para desarrollar automatizaciones más avanzadas.

    Es importante mencionar que esta herramienta utiliza un modelo de licencia fair-code, por lo que no debe confundirse con un proyecto de código abierto tradicional bajo una licencia OSI.

    2. ¿Para qué sirve n8n?

    El objetivo principal es reducir las tareas repetitivas y facilitar la comunicación entre diferentes aplicaciones.

    Imaginemos que tenemos un servidor con Docker donde ejecutamos varios servicios:

    • Uptime Kuma para monitorizar aplicaciones.
    • Home Assistant para automatización del hogar.
    • WordPress para administrar nuestro sitio web.
    • Nextcloud para almacenamiento de archivos.
    • Jellyfin para administrar contenido multimedia.

    Cada aplicación tiene sus propias funcionalidades, pero eso no significa que todas puedan comunicarse directamente entre sí.

    La plataforma funciona como un intermediario que permite conectar estos servicios y establecer reglas para ejecutar acciones automáticamente.

    Por ejemplo, podemos crear un flujo que reciba una alerta de Uptime Kuma, procese la información y envíe una notificación a Telegram.

    También podemos programar tareas para consultar información periódicamente, procesar archivos o interactuar con servicios externos.

    3. Principales funcionalidades

    Automatización mediante workflows

    La funcionalidad principal es la creación de flujos de trabajo.

    Un workflow está compuesto por diferentes nodos que se ejecutan siguiendo una secuencia lógica.

    Por ejemplo:

    1. Un evento inicia el flujo.
    2. n8n recibe información.
    3. Procesa los datos.
    4. Evalúa una condición.
    5. Ejecuta una acción.
    6. Devuelve un resultado.

    Esto permite construir automatizaciones sencillas o procesos mucho más complejos.

    Integración con aplicaciones y servicios

    Este servicio dispone de una biblioteca de integraciones que permite conectar diferentes plataformas.

    Podemos trabajar con servicios como:

    • Telegram.
    • Discord.
    • Google Sheets.
    • Gmail.
    • GitHub.
    • WordPress.
    • Home Assistant mediante APIs.
    • Bases de datos.
    • Servicios de almacenamiento.
    • Plataformas de inteligencia artificial.

    Además, mediante el nodo HTTP Request podemos realizar solicitudes a prácticamente cualquier servicio que disponga de una API compatible.

    Automatizaciones programadas

    No todas las automatizaciones necesitan ejecutarse cuando ocurre un evento.

    Esta herramienta permite establecer horarios mediante nodos de programación.

    Por ejemplo:

    • Generar un reporte todos los días.
    • Consultar una API cada hora.
    • Ejecutar tareas de mantenimiento.
    • Revisar información periódicamente.
    • Enviar un resumen semanal.

    Esto permite automatizar procesos que normalmente tendríamos que realizar manualmente.

    Webhooks

    Los Webhooks permiten que aplicaciones externas envíen información a n8n mediante solicitudes HTTP.

    Cuando se recibe una solicitud en una URL configurada, podemos iniciar un workflow y procesar la información recibida.

    Esta funcionalidad es especialmente útil para integrar aplicaciones que no cuentan con un nodo específico dentro dentro de la plataforma.

    Procesamiento de información

    La plataforma permite transformar, filtrar, combinar y organizar información antes de enviarla a otro servicio.

    Por ejemplo, podemos consultar una API que devuelve información en formato JSON, seleccionar únicamente los campos que necesitamos y enviar los resultados a una hoja de cálculo.

    También podemos utilizar JavaScript para realizar transformaciones más específicas.

    Inteligencia artificial y agentes

    Se incorporan funcionalidades relacionadas con inteligencia artificial y herramientas para construir flujos que utilizan modelos de lenguaje.

    Podemos integrar proveedores como OpenAI, Google y otros servicios compatibles para:

    • Clasificar mensajes.
    • Resumir información.
    • Procesar documentos.
    • Crear asistentes conversacionales.
    • Analizar información.
    • Construir agentes de IA que interactúan con herramientas externas.

    Estas funcionalidades permiten desarrollar automatizaciones más avanzadas, combinando reglas tradicionales con capacidades de inteligencia artificial.

    4. Requisitos previos

    Para instalar este servicio utilizando Docker necesitamos:

    • Un servidor Linux.
    • Docker Engine instalado.
    • Docker Compose.
    • Acceso administrativo al servidor.
    • Conexión a Internet.
    • Un directorio o volumen para almacenar los datos.

    También es recomendable contar con un dominio o subdominio si queremos acceder a la interfaz desde fuera de nuestra red local.

    En este tutorial utilizaremos Ubuntu Server y Docker Compose.

    5. Instalación de n8n con Docker Compose

    Una de las ventajas es que podemos instalarlo directamente como un contenedor Docker.

    Esto permite mantener la aplicación aislada del sistema operativo y facilita su administración.

    Paso 1. Crear el directorio de instalación

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

    mkdir -p ~/docker/n8n
    cd ~/docker/n8n

    También creamos un directorio para compartir archivos entre el servidor y el servicio:

    mkdir -p local-files

    Paso 2. Crear el archivo Docker Compose

    Creamos el archivo de configuración:

    nano docker-compose.yml

    Agregamos el siguiente contenido:

    services:
      n8n:
        image: n8nio/n8n:stable
        container_name: n8n
        restart: unless-stopped
    
        ports:
          - "5678:5678"
    
        environment:
          - N8N_HOST=n8n.midominio.com
          - N8N_PORT=5678
          - N8N_PROTOCOL=https
          - NODE_ENV=production
          - N8N_EDITOR_BASE_URL=https://n8n.midominio.com/
          - N8N_WEBHOOK_URL=https://n8n.midominio.com/
          - GENERIC_TIMEZONE=America/Mexico_City
          - TZ=America/Mexico_City
          - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
          - N8N_RESTRICT_FILE_ACCESS_TO=/files
    
        volumes:
          - n8n_data:/home/node/.n8n
          - ./local-files:/files
    
    volumes:
      n8n_data:

    Debemos sustituir n8n.midominio.com por nuestro propio dominio o subdominio.

    Explicación de los parámetros

    image: indica la imagen Docker que utilizaremos. En este caso seleccionamos la versión estable liberada.

    container_name: establece el nombre del contenedor.

    restart: permite que Docker reinicie automáticamente el servicio cuando sea necesario.

    ports: publica el puerto 5678, utilizado por la plataforma.

    N8N_HOST: establece el nombre de dominio utilizado para acceder a la aplicación.

    N8N_PROTOCOL: indica que utilizaremos HTTPS mediante un proxy inverso o túnel.

    N8N_EDITOR_BASE_URL: define la dirección pública de la interfaz de administración.

    N8N_WEBHOOK_URL: establece la dirección pública que utilizará n8n para generar las URL de los Webhooks.

    GENERIC_TIMEZONE y TZ: establecen la zona horaria utilizada por la aplicación y las tareas programadas.

    N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: solicita que el archivo de configuración tenga permisos restrictivos.

    N8N_RESTRICT_FILE_ACCESS_TO: limita el acceso de los nodos de archivos al directorio especificado.

    n8n_data: volumen persistente donde se almacena su base de datos, credenciales cifradas y configuración.

    local-files: directorio compartido entre el servidor y el contenedor.

    Paso 3. Iniciar n8n

    Una vez guardado el archivo ejecutamos:

    docker compose up -d

    Comprobamos que el contenedor se encuentre funcionando:

    docker ps --filter name=n8n

    Para revisar los registros:

    docker logs --tail 100 n8n

    Si queremos visualizar los registros en tiempo real:

    docker logs -f n8n

    Paso 4. Acceder a la interfaz web

    Si estamos utilizando únicamente la red local podemos acceder mediante:

    http://IP-DE-TU-SERVIDOR:5678

    Si configuramos un dominio con HTTPS mediante un proxy inverso o Cloudflare Tunnel, podremos acceder utilizando:

    https://n8n.midominio.com

    En el primer acceso tendremos que completar el asistente de configuración y crear nuestra cuenta de propietario.

    Una vez finalizado, podremos comenzar a construir nuestros primeros workflows.

    Importante: si publicamos esta plataforma mediante un proxy inverso o Cloudflare Tunnel, debemos configurar correctamente la dirección pública de los Webhooks y los encabezados de proxy. No debemos exponer directamente la interfaz administrativa a Internet sin protección.

    6. Cómo funciona un workflow

    Para entender cómo trabaja esta herramienta podemos construir un ejemplo sencillo.

    Imaginemos que queremos recibir una notificación cuando se ejecute una automatización.

    Un workflow puede estar compuesto por tres nodos:

    Nodo 1: Schedule Trigger

    Inicia la automatización en un horario determinado.

    Nodo 2: HTTP Request

    Realiza una solicitud a una API y obtiene información.

    Nodo 3: Telegram

    Envía un mensaje con los resultados obtenidos.

    El flujo sería:

    Schedule Trigger
           |
           v
      HTTP Request
           |
           v
         Telegram

    Cada nodo recibe información del anterior, realiza su operación y entrega el resultado al siguiente.

    Podemos agregar condiciones, filtros y más nodos dependiendo de lo que necesitemos.

    Una de las ventajas de n8n es que podemos ejecutar manualmente los nodos durante el desarrollo para comprobar que cada operación funciona correctamente antes de activar el workflow completo.

    7. Casos de uso de n8n en un Home Server

    Aquí es donde esta herramienta realmente demuestra su utilidad.

    Algunos ejemplos prácticos que podemos implementar en una infraestructura doméstica son los siguientes.

    Caso 1. Notificaciones de Uptime Kuma mediante Telegram

    Podemos integrar Uptime Kuma con esta herramienta para recibir notificaciones cuando un servicio deje de responder.

    El funcionamiento sería:

    1. Uptime Kuma detecta que un servicio está fuera de línea.
    2. Envía una notificación mediante un Webhook a n8n.
    3. n8n procesa el nombre del servicio y el estado.
    4. Envía un mensaje a Telegram.

    También podemos configurar una notificación diferente cuando el servicio vuelva a estar disponible.

    Esto permite centralizar las notificaciones y personalizar los mensajes que recibimos.

    Caso 2. Automatizar tareas de Home Assistant

    n8n puede comunicarse con Home Assistant mediante su API y Webhooks.

    Algunos ejemplos:

    • Enviar notificaciones cuando ocurre un evento.
    • Consultar el estado de dispositivos.
    • Ejecutar servicios de Home Assistant.
    • Procesar información de sensores.
    • Crear reportes de consumo energético.

    De esta manera podemos utilizar n8n para coordinar procesos que involucran diferentes aplicaciones.

    Caso 3. Automatizar respaldos y reportes

    Podemos crear workflows que ejecuten tareas programadas relacionadas con el mantenimiento de nuestro servidor.

    Por ejemplo:

    1. Un Schedule Trigger inicia el flujo.
    2. Se consulta información de los servicios.
    3. Se procesa la información.
    4. Se genera un reporte.
    5. Se envía el resultado mediante Telegram o correo electrónico.

    También podemos integrar servicios de almacenamiento para gestionar archivos y respaldos.

    Para ejecutar comandos directamente en el servidor debemos diseñar un mecanismo de acceso seguro y restringido, evitando otorgar privilegios administrativos innecesarios a n8n.

    Caso 4. Automatización de WordPress

    Si administramos un sitio web con WordPress, esta plataforma puede ayudarnos a automatizar diferentes tareas editoriales.

    Algunos ejemplos:

    • Recibir propuestas de artículos mediante formularios.
    • Generar borradores a partir de información almacenada.
    • Consultar información de APIs.
    • Preparar resúmenes de contenido.
    • Enviar notificaciones cuando se publica una entrada.
    • Distribuir enlaces de nuevos artículos en otros servicios.

    También podemos utilizar la API REST de WordPress para interactuar con el sitio.

    Esto puede ser especialmente útil para automatizar tareas repetitivas sin perder el control editorial.

    Caso 5. Integración con servicios externos mediante APIs

    No todas las aplicaciones cuentan con una integración directa dentro de n8n.

    Sin embargo, podemos utilizar el nodo HTTP Request para comunicarnos con servicios que ofrecen una API.

    Por ejemplo:

    • Consultar información meteorológica.
    • Obtener datos de servicios externos.
    • Enviar información a plataformas de almacenamiento.
    • Consultar bases de datos.
    • Integrar aplicaciones que no tienen un nodo nativo.

    Esto se convierte en una herramienta muy flexible para conectar diferentes plataformas.

    Caso 6. Automatizaciones con inteligencia artificial

    También podemos utilizar esta herramienta para crear flujos de trabajo que incorporen modelos de inteligencia artificial.

    Por ejemplo:

    1. Recibir un mensaje mediante Telegram.
    2. Enviar el contenido a un modelo de IA.
    3. Analizar la respuesta.
    4. Procesar el resultado.
    5. Enviar una contestación al usuario.

    Podemos ampliar este tipo de automatizaciones para procesar documentos, resumir información, clasificar mensajes o consultar bases de conocimiento.

    8. Administración y mantenimiento

    Al ejecutarse dentro de Docker, podemos administrar utilizando los comandos habituales de Docker Compose.

    Consultar el estado del contenedor:

    docker ps --filter name=n8n

    Consultar los registros:

    docker logs --tail 100 n8n

    Reiniciar el servicio:

    cd ~/docker/n8n
    docker compose restart

    Detener el servicio:

    docker compose stop

    Iniciar nuevamente el servicio:

    docker compose up -d

    Actualizar la imagen:

    docker compose pull
    docker compose up -d

    Antes de actualizar una instalación que contiene workflows y credenciales importantes, debemos realizar un respaldo y revisar las notas de la versión. No es recomendable depender de actualizaciones automáticas sin validar la compatibilidad.

    9. Respaldos y seguridad

    Esta plataforma almacena información importante en su directorio de datos, incluyendo:

    • Base de datos SQLite, cuando se utiliza la configuración predeterminada.
    • Workflows.
    • Credenciales cifradas.
    • Clave de cifrado.
    • Configuración de la instancia.
    • Información relacionada con las ejecuciones.

    Por eso debemos prestar especial atención a los respaldos.

    Conservar el volumen persistente.

    No debemos eliminar el volumen n8n_data cuando recreamos o actualizamos el contenedor.

    Respaldar la clave de cifrado.

    La clave de cifrado es indispensable para recuperar las credenciales almacenadas. Debemos protegerla y conservarla junto con el respaldo de la base de datos.

    Utilizar HTTPS.

    Si accedemos a n8n desde Internet, debemos utilizar una conexión HTTPS mediante un proxy inverso o un túnel seguro.

    Proteger las credenciales.

    Las conexiones con servicios externos pueden contener tokens, contraseñas y claves API. No debemos compartirlas dentro de los workflows ni publicarlas en repositorios abiertos.

    Restringir el acceso a archivos.

    Debemos limitar los directorios que pueden consultar los nodos de lectura y escritura.

    Realizar auditorías de seguridad.

    Este servicio incorpora una herramienta de auditoría que permite identificar configuraciones y elementos que pueden representar riesgos de seguridad.

    Podemos ejecutarla mediante:

    docker exec -it n8n n8n audit

    Mantener todo actualizado.

    Debemos revisar las nuevas versiones, las notas de publicación y los posibles cambios incompatibles antes de actualizar nuestra instalación.

    10. Conclusión

    n8n es una herramienta muy interesante para quienes administramos un Home Server y queremos ir más allá de instalar aplicaciones independientes.

    Su capacidad para conectar diferentes servicios, procesar información y ejecutar tareas automáticamente permite construir una infraestructura mucho más integrada.

    Podemos utilizarlo para recibir notificaciones, administrar información, interactuar con APIs, automatizar tareas de mantenimiento e incluso incorporar inteligencia artificial a nuestros procesos.

    Además, al ejecutarlo mediante Docker, podemos integrarlo fácilmente en nuestra infraestructura existente.

    Si tenemos varios servicios funcionando en nuestro servidor, esta herramienta puede convertirse en el punto central de automatización que permite que todos trabajen en conjunto.

    La verdadera ventaja no está solamente en automatizar una tarea, sino en conectar diferentes herramientas para construir procesos completos sin tener que hacerlo todo manualmente.

    Referencias y documentación oficial

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

    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