Configurar Dominio Personalizado y SSL en n8n: Guía Completa

N8n dominio personalizado SSL es uno de los usos más prácticos de n8n. Acceder a n8n a través de https://n8n.tuempresa.com en lugar de una IP con puerto es esencial para cualquier instalación profesional. En esta guía te explico cómo configurar un dominio personalizado con SSL en n8n desde cero, incluyendo la configuración de DNS, el certificado HTTPS y las variables de entorno.

Por qué necesitas un dominio y SSL en n8n

Hay razones técnicas y de negocio para tener un dominio personalizado SSL en n8n:

  • Los webhooks necesitan una URL pública con HTTPS para recibir peticiones de servicios externos
  • Google, Stripe, WhatsApp y otros servicios rechazan webhooks HTTP sin SSL
  • Es mucho más profesional y fácil de recordar que una IP con puerto
  • Los certificados SSL son gratuitos con Let's Encrypt

Paso 1: Comprar o elegir un dominio

Si no tienes dominio, puedes comprar uno en Namecheap, GoDaddy o directamente en tu proveedor de hosting. El coste es de 10-15€/año para un .com.

También puedes usar un subdominio de un dominio que ya tengas. Por ejemplo, si tienes tuempresa.com, puedes crear n8n.tuempresa.com sin coste adicional.

Paso 2: Configurar los registros DNS

Para apuntar tu dominio al VPS donde está n8n, necesitas crear un registro DNS de tipo A:

Tipo Nombre Valor TTL
A n8n IP_DE_TU_VPS 300

Sustituye IP_DE_TU_VPS por la IP pública de tu servidor. Los cambios DNS pueden tardar entre 5 minutos y 48 horas en propagarse, aunque normalmente son efectivos en menos de 30 minutos.

Verifica que el DNS apunta correctamente con:

dig n8n.tudominio.com +short
# Debe devolver la IP de tu VPS

Paso 3: Configurar el firewall

Asegúrate de que los puertos 80 y 443 estén abiertos en tu VPS:

ufw allow 80/tcp
ufw allow 443/tcp
ufw reload

Paso 4: Instalar Nginx y Certbot

apt update
apt install nginx certbot python3-certbot-nginx -y

Paso 5: Configurar Nginx para n8n

Crea el archivo de configuración:

nano /etc/nginx/sites-available/n8n
server {
    listen 80;
    server_name n8n.tudominio.com;

    location / {
        proxy_pass http://localhost:5678;
        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;

        # Soporte WebSockets (obligatorio para n8n)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Paso 6: Obtener el certificado SSL gratuito

Con el dominio personalizado SSL para n8n ya apuntando al servidor, obtén el certificado:

certbot --nginx -d n8n.tudominio.com

Certbot te pedirá:

  • Tu email (para notificaciones de renovación)
  • Aceptar los términos de servicio
  • Si quieres redirigir HTTP a HTTPS (elige sí)

El certificado SSL gratuito de Let's Encrypt tiene validez de 90 días. Certbot instala automáticamente un cron job que lo renueva antes de que expire.

Paso 7: Configurar las variables de entorno de n8n

Con el dominio personalizado SSL ya funcionando, actualiza las variables de entorno de n8n:

# En tu docker-compose.yml o archivo .env
N8N_HOST=n8n.tudominio.com
N8N_PROTOCOL=https
N8N_PORT=5678
WEBHOOK_URL=https://n8n.tudominio.com/

WEBHOOK_URL es especialmente importante: determina la URL base que n8n usa para generar las URLs de webhooks. Sin esta variable configurada correctamente, los webhooks mostrarán URLs incorrectas.

Reinicia n8n para aplicar los cambios:

docker compose restart n8n

Verificar que el SSL funciona

Accede a https://n8n.tudominio.com desde tu navegador. Deberías ver:

  • El candado verde en la barra de direcciones
  • El certificado emitido por Let's Encrypt
  • n8n cargando correctamente

Prueba también que los webhooks se generan con la URL correcta creando un nodo Webhook en n8n y verificando que la URL mostrada es https://n8n.tudominio.com/webhook/....

Renovación automática del certificado

Certbot configura la renovación automática. Puedes verificarlo con:

certbot renew --dry-run

Si el dry-run es exitoso, los certificados se renovarán automáticamente cada 60 días.

Conclusión

Configurar un dominio personalizado con SSL en n8n es imprescindible para cualquier uso profesional. El proceso completo tarda menos de 20 minutos y el certificado SSL es completamente gratuito. Con HTTPS configurado, todos los webhooks funcionarán correctamente con los servicios externos que los requieran.