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! 🚀