Skip to content
BotServBotServ
n8nSelf-HostingProductionReverse ProxyHTTPS

n8n Self-Hosting

n8n self-hosting: setup production, reverse proxy, HTTPS, base de datos, backup, monitoreo y ejemplos prácticos.

S

schutzgeist

5 min read
n8n Self-Hosting

n8n Self-Hosting

Qué cubre este artículo sobre n8n Self-Hosting

  • Cómo configurar n8n para producción.
  • Cómo configurar HTTPS, Reverse Proxy y base de datos.
  • Cómo establecer copias de seguridad, monitoreo y actualizaciones.
  • Cómo preparar n8n para múltiples usuarios y equipos.
  • Mejores prácticas para seguridad, disponibilidad y mantenimiento.

Introducción: n8n Self-Hosting explicado

Instalar n8n es sencillo. Configurarlo para producción es otra cosa: HTTPS, Reverse Proxy, base de datos, copias de seguridad, monitoreo, gestión de usuarios. Este artículo te muestra cómo no solo poner n8n en funcionamiento, sino operarlo de manera confiable.

Este artículo está dirigido a usuarios que desean operar n8n en producción. Deberías tener n8n ya instalado. Consulta n8n instalar para la instalación básica.

¿Por qué necesito n8n Self-Hosting?

Imagina que has instalado n8n localmente y construido algunos workflows. Ahora quieres usarlo en tu equipo, con HTTPS, múltiples usuarios, copias de seguridad y monitoreo. La instalación local no es suficiente: necesitas un setup de producción.

n8n Self-Hosting en pocas palabras

n8n Self-Hosting significa operar n8n en tu servidor: con HTTPS, Reverse Proxy, base de datos, copias de seguridad y monitoreo. No solo para probar, sino para el funcionamiento diario.

La idea central es simple: no solo instalar n8n, sino operarlo de forma confiable.

¿Para quién es este artículo?

  • Administradores de sistemas que operan n8n en producción.
  • Equipos que configuran n8n para múltiples usuarios.
  • Self-hosters que operan n8n profesionalmente.
  • Tomadores de decisiones que evalúan n8n para su empresa.

Se requieren conocimientos previos en Docker, n8n y Linux.

Términos importantes

  • n8n - Automatización de workflows. Cuándo es útil: la herramienta misma.
  • Reverse Proxy - Intermediario frente a n8n. Cuándo es útil: para HTTPS y enrutamiento.
  • Docker - Plataforma de contenedores. Cuándo es útil: para operación.
  • Docker Compose - Multi-contenedor. Cuándo es útil: para setups complejos.
  • PostgreSQL - Base de datos. Cuándo es útil: en lugar de SQLite para producción.
  • Backup - Copia de seguridad de datos. Cuándo es útil: para workflows y credenciales.
  • Monitoring - Supervisión. Cuándo es útil: para disponibilidad.

Setup de producción

Docker Compose para producción

version: "3.8"

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"  # Solo localhost, Reverse Proxy adelante
    environment:
      - N8N_HOST=0.0.0.0
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.deine-domain.de/
      - GENERIC_TIMEZONE=Europe/Berlin
      - TZ=Europe/Berlin
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=${DB_PASSWORD}
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=30
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - n8n-network
    depends_on:
      - postgres

  postgres:
    image: postgres:16-alpine
    container_name: n8n-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_DB=n8n
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=${DB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - n8n-network

volumes:
  n8n_data:
  postgres_data:

networks:
  n8n-network:
    driver: bridge

Reverse Proxy con Nginx

# /etc/nginx/sites-available/n8n
server {
    listen 443 ssl http2;
    server_name n8n.deine-domain.de;

    ssl_certificate /etc/letsencrypt/live/n8n.deine-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/n8n.deine-domain.de/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Certificado TLS con Let’s Encrypt

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d n8n.deine-domain.de

Consulta Certificados TLS para más detalles.

Base de datos: SQLite vs. PostgreSQL

SQLitePostgreSQL
Simple, sin instalación adicionalRobusto, para producción
Para setups pequeñosPara setups grandes
Un usuarioMúltiples usuarios
Menos rendimientoMayor rendimiento
Backup simple (archivo)Backup más complejo (pg_dump)

Para producción: PostgreSQL recomendado.

Copia de seguridad

Asegurar datos de n8n

# Respaldar volumen
docker run --rm \
  -v n8n_data:/data \
  -v $(pwd)/backup:/backup \
  alpine tar czf /backup/n8n-backup.tar.gz -C /data .

# Respaldar PostgreSQL
docker exec n8n-postgres pg_dump -U n8n n8n > backup/n8n-db.sql

Backup automático

# Trabajo cron para backup diario
0 3 * * * docker run --rm -v n8n_data:/data -v /backup:/backup alpine tar czf /backup/n8n-$(date +\%Y\%m\%d).tar.gz -C /data .

Consulta Backup para más detalles.

Monitoreo

Health-Check

# Endpoint de salud de n8n
curl http://localhost:5678/healthz

Monitoreo con Prometheus

# Extender docker-compose.yml
services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"

Consulta Monitoring para más detalles.

Gestión de usuarios

Múltiples usuarios

n8n admite múltiples usuarios con diferentes roles:

environment:
  - N8N_USER_MANAGEMENT_DISABLED=false
  - N8N_USER_MANAGEMENT_SMTP_HOST=smtp.example.com
  - N8N_USER_MANAGEMENT_SMTP_PORT=587
  - N8N_USER_MANAGEMENT_SMTP_USER=n8n@example.com
  - N8N_USER_MANAGEMENT_SMTP_PASS=${SMTP_PASSWORD}
  - N8N_USER_MANAGEMENT_SMTP_SENDER=n8n@example.com

Notas de seguridad

  • Forzar HTTPS: N8N_PROTOCOL=https, WEBHOOK_URL=https.
  • Política de contraseñas: Contraseñas fuertes para todos los usuarios.
  • Autenticación de dos factores: Activar si está disponible.
  • Firewall: Solo puerto 443 (HTTPS) abierto hacia afuera.
  • Encriptación: N8N_ENCRYPTION_KEY para credenciales.
  • Actualizaciones regulares: Mantener n8n actualizado. Consulta Docker Updates.
  • Audit Logging: Registra accesos. Consulta Audit Logging.

Ejemplo práctico: n8n para equipo

# docker-compose.yml para setup de equipo
services:
  n8n:
    image: n8nio/n8n:latest
    environment:
      - N8N_HOST=0.0.0.0
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.company.de/
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - N8N_USER_MANAGEMENT_DISABLED=false
      - N8N_USER_MANAGEMENT_SMTP_HOST=smtp.company.de
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=90
    # ... Resto como arriba

Errores comunes

  • SQLite en producción: SQLite es para setups pequeños, no para producción. Usa PostgreSQL.
  • Sin HTTPS: n8n sin HTTPS no es seguro. Activa TLS.
  • Sin backup: Sin backup, los workflows desaparecen en caso de fallo.
  • Sin monitoring: Sin monitorización no te enteras de los problemas.
  • Credenciales en texto plano: N8N_ENCRYPTION_KEY debe estar configurada.
  • Ejecuciones antiguas: Activa EXECUTIONS_DATA_PRUNE, si no la base de datos se llena.

Enlaces relacionados

Puntos clave:

  • n8n Self-Hosting: HTTPS, reverse proxy, PostgreSQL, backup, monitorización.
  • SQLite para setups pequeños, PostgreSQL para producción.
  • Reverse proxy (Nginx) para HTTPS y enrutamiento.
  • Backup: volumen + base de datos regularmente.
  • Seguridad: HTTPS, política de contraseñas, firewall, cifrado.

FAQ

¿Qué significa n8n Self-Hosting?

n8n Self-Hosting significa ejecutar n8n en tu propio servidor. Controlas los datos, la seguridad y la disponibilidad. No solo se trata de instalar, sino de mantener operativo de forma confiable.

¿SQLite o PostgreSQL?

SQLite para setups pequeños (1-5 usuarios), PostgreSQL para producción. PostgreSQL es más robusto, rápido y mejor para múltiples usuarios.

¿Necesito un reverse proxy?

Sí, para producción. El reverse proxy (Nginx, Traefik) se encarga de HTTPS, certificados TLS y enrutamiento. n8n no debe estar expuesto directamente a Internet.

¿Cómo activo HTTPS?

Con un reverse proxy y Let’s Encrypt. Certbot crea certificados TLS gratuitos. Configura N8N_PROTOCOL=https y WEBHOOK_URL=https://…

¿Cómo hago backup de n8n?

Respalda el volumen n8n_data (workflows, credenciales) y la base de datos (PostgreSQL con pg_dump). Automatiza con Cron.

¿Cómo monitorizo n8n?

n8n tiene un health endpoint (/healthz). Usa Prometheus, Grafana o health checks simples. Monitoriza también CPU, RAM y disco.

¿Puedo tener múltiples usuarios?

Sí. Activa N8N_USER_MANAGEMENT_DISABLED=false y configura SMTP para invitaciones por correo. Los usuarios pueden ser invitados y tener diferentes roles.

¿Cómo aseguro n8n?

Enforce HTTPS, contraseñas fuertes, firewall (solo puerto 443 abierto), configura N8N_ENCRYPTION_KEY, actualizaciones regulares, audit logging.

¿Cómo actualizo n8n?

docker compose pull && docker compose up -d. Haz backup antes. n8n actualiza la base de datos automáticamente.

¿Cuánto cuesta n8n Self-Hosting?

n8n es Open Source, gratuito. Solo pagas costes de servidor (5-20 euros/mes) y opcionalmente un dominio (5-10 euros/año).

Referencias y lecturas complementarias

Volver al blog
Share:

Entradas relacionadas