n8n es un editor visual líder para iteraciones rápidas que te permite construir flujos de trabajo automatizados y ver resultados al instante. Perfecto para automatizaciones diarias y flujos de trabajo complejos con agentes de IA.
El soporte para self-hosting y el editor low-code hacen de n8n el favorito de cualquier desarrollador. Si quieres máximo control, personalización y ahorrar costos a largo plazo, la versión self-hosted es ideal para ti.
¿Quieres alojar n8n tú mismo? Te guiamos paso a paso en la instalación y configuración, explicándote todo lo que debes saber.
Aunque n8n es ligero, el consumo de recursos puede aumentar según la cantidad de flujos, llamadas API y nodos que manejen muchos datos. Recomendamos el siguiente hardware para tu VPS para alojar n8n:
| Hardware | Mínimo | Recomendado |
|---|---|---|
| CPU | 1 núcleo vCPU | 2 núcleos vCPU |
| RAM | 2 GB | 4 GB |
| Almacenamiento | 20 GB | 50 GB |
Una vez Docker esté funcionando en tu servidor, verifica la instalación con:
docker --version
docker compose version
Crea un directorio de proyecto para guardar archivos locales y variables de entorno de n8n, y entra en él:
mkdir n8n-compose
cd n8n-compose
Dentro de n8n-compose, crea un archivo .env con nano .env y añade el siguiente código con las variables de entorno de n8n:
# DOMAIN_NAME y SUBDOMAIN determinan la dirección donde n8n será accesible
# Dominio de nivel superior
DOMAIN_NAME=zap.cloud
# Subdominio
SUBDOMAIN=silver-octopus-xxxxx
# El ejemplo anterior hace que n8n sea accesible en: https://silver-octopus-xxxxx.zap.cloud
# Zona horaria opcional usada por Cron y otros nodos de programación
GENERIC_TIMEZONE=Europe/Berlin
# Correo electrónico para la creación del certificado TLS/SSL
SSL_EMAIL=hello@zap-hosting.com
Hostname.
Introduce la parte zap.cloud en DOMAIN_NAME y la primera parte en SUBDOMAIN (por ejemplo, silver-octopus-xxxxx).
Requisito HTTPS No uses una dirección IP pura en el archivo .env. n8n requiere conexión HTTPS y los certificados SSL solo se emiten para dominios, no para IPs.
Si prefieres alojar n8n en tu propio dominio, crea un subdominio para n8n añadiendo un registro A en el administrador DNS de tu dominio que apunte a la IP de tu VPS.
| Nombre | Tipo | Valor | TTL | Prioridad |
|---|---|---|---|---|
| n8n (subdominio) | A | Dirección IPv4 | 1440 | 0 |
Dentro del directorio del proyecto, crea una carpeta llamada local-files para compartir archivos entre la instancia de n8n y el sistema host:
mkdir local-files
Crea el archivo Docker Compose compose.yaml con nano compose.yaml y pega el siguiente contenido:
services:
traefik:
image: "traefik"
restart: always
command:
- "--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
- traefik.http.routers.n8n.middlewares=n8n@docker
environment:
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_RUNNERS_ENABLED=true
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- TZ=${GENERIC_TIMEZONE}
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
volumes:
n8n_data:
traefik_data:
Esto instalará n8n, emitirá un certificado SSL, configurará y pondrá n8n en línea en el dominio.
Inicia n8n con:
sudo docker compose up -d
Puedes detener n8n con:
sudo docker compose stop
Después de iniciar, abre n8n en el navegador usando la URL (o el hostname si lo usaste). Primero deberás crear una cuenta de administrador.
Recuerda tu contraseña Guarda bien tu contraseña para uso futuro.
A continuación aparecerá una pequeña encuesta para ingresar algunos datos básicos.
Opcionalmente, puedes obtener acceso gratuito a algunas funciones de pago ingresando tu correo electrónico para recibir una clave de licencia por email. Si te interesa, introduce tu correo y solicita la clave.
La clave llegará inmediatamente por correo. Cópiala y pégala en Configuración > Uso y planes > Introducir clave de activación.
Luego puedes ir directamente al panel y comenzar a usar n8n.
Empieza con un lienzo en blanco o usa una plantilla predefinida. ¡Tu instalación de n8n está lista!
