SoftwareTutoriales

Instalación de n8n con Docker Compose

En este post, veremos cómo instalar n8n en un servidor utilizando Docker Compose, permitiendo una configuración flexible y segura con un proxy inverso como Traefik y certificados SSL de Let’s Encrypt. n8n es una potente herramienta de automatización de flujos de trabajo que permite integrar múltiples aplicaciones sin depender de plataformas de terceros.

Si buscas una forma de autoalojar n8n en tu propia infraestructura, esta guía te proporcionará los pasos detallados para su instalación, configuración y puesta en marcha. Aprenderás a:

✅ Instalar Docker y Docker Compose en tu servidor.
✅ Configurar un dominio con SSL gratuito usando Let’s Encrypt.
✅ Levantar los contenedores de n8n y Traefik con Docker Compose.
✅ Asegurar la persistencia de datos para evitar pérdidas tras un reinicio.
✅ Acceder a n8n desde el navegador con autenticación protegida.

Al finalizar esta guía, tendrás n8n completamente operativo, listo para automatizar tareas y conectar servicios de forma eficiente. ¡Empecemos! 🚀


Requisitos Previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Sistema Operativo: Una distribución de Linux actualizada (preferiblemente Ubuntu 22.04 o 24.04).
  • Acceso de Superusuario: Permisos para instalar paquetes y configurar el sistema.
  • DNS: Un dominio o subdominio configurado que apunte a la dirección IP de tu servidor.

Pasos de Instalación

1. Instalar Docker

Docker es una plataforma que permite crear y gestionar contenedores de manera sencilla. Para instalar Docker en Ubuntu, sigue estos pasos:

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Copia y pega este código en la terminal y a continuación presiona Enter.

2. Configurar Acceso sin Root (Opcional)

Para ejecutar Docker sin necesidad de permisos de superusuario:

sudo usermod -aG docker ${USER}
su - ${USER}

3. Instalar Docker Compose

Docker Compose es una herramienta que permite definir y gestionar aplicaciones multicontenedor. Para instalarla en Ubuntu:

4. Configurar DNS

Asegúrate de que tu dominio o subdominio esté correctamente configurado para apuntar a la dirección IP de tu servidor. Por ejemplo:

  • Tipo: A
  • Nombre: n8n (o el subdominio deseado)
  • Dirección IP: <IP_DE_TU_SERVIDOR>

5. Crear el Archivo Docker Compose

Crea un archivo llamado docker-compose.yml con el siguiente contenido:

version: "3.7"

services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api=true"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  traefik_data:
  n8n_data:

6. Crear el Archivo .env

Crea un archivo llamado .env en el mismo directorio que el docker-compose.yml y define las siguientes variables:

# El dominio principal
DOMAIN_NAME=example.com

# El subdominio para n8n
SUBDOMAIN=n8n

# La combinación de DOMAIN_NAME y SUBDOMAIN determinará la URL de acceso a n8n
# Por ejemplo: https://n8n.example.com

# Zona horaria opcional para el nodo Cron
GENERIC_TIMEZONE=Europe/Madrid

# Correo electrónico para la creación del certificado SSL
SSL_EMAIL=usuario@example.com

# Credenciales para la autenticación básica
N8N_BASIC_AUTH_USER=tu_usuario
N8N_BASIC_AUTH_PASSWORD=tu_contraseña_segura

Asegúrate de reemplazar los valores de ejemplo con tus propios datos.

7. Crear Volúmenes de Docker

Los volúmenes permiten persistir datos entre reinicios de los contenedores. Crea los volúmenes necesarios:

sudo docker volume create n8n_data
sudo docker volume create traefik_data

8. Iniciar Docker Compose

Con todos los archivos y configuraciones en su lugar, inicia los servicios:

docker compose up -d

Este comando descargará las imágenes necesarias y levantará los contenedores.

9. Verificar el Estado de los Contenedores

Para comprobar que los contenedores están corriendo correctamente, usa:

docker ps

Debes ver algo similar a esto:

CONTAINER ID   IMAGE            COMMAND                  STATUS         PORTS                    NAMES
123abc456789   traefik:v2.9     "/entrypoint.sh"         Up 10 minutes  0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp  traefik
987zyx654321   n8nio/n8n        "tini -- /docker-ent…"   Up 10 minutes  5678/tcp                 n8n

Si ves ambos contenedores UP, significa que la instalación fue exitosa.

10. Acceder a n8n desde el Navegador

Abre tu navegador y visita: https://n8n.tudominio.com

Completa el registro para conseguir una licencia de Workflows ilimitados.

11. Gestión y Mantenimiento

Algunas tareas comunes incluyen:

Reiniciar n8n:

docker compose restart

Detener n8n:

docker compose down

Actualizar n8n a la última versión:

docker compose pull
docker compose up -d

Conclusión

Siguiendo estos pasos, habrás instalado y configurado n8n en tu propio servidor utilizando Docker Compose y Traefik como proxy inverso con certificados SSL de Let’s Encrypt. Esta configuración te proporciona un entorno seguro y escalable para la automatización de flujos de trabajo sin depender de terceros.

Si tienes dudas o problemas durante la instalación, puedes verificar los logs con:

docker logs -f n8n

¡Disfruta de la automatización con n8n! 🚀

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *