n8n en la nube de AWS paso a paso

Guía de Configuración AWS con Docker, Nginx y Certificado SSL para n8n
¡ATENCIÓN! Los elementos resaltados en rojo requieren tu personalización. Por favor, modifícalos con tus valores reales.

Guía de Configuración AWS con Docker, Nginx y Certificado SSL para n8n

Esta guía te ayudará a configurar una instancia EC2 de AWS con Docker, Nginx como proxy reverso, y un certificado SSL para ejecutar n8n de forma segura.

Paso 1: Conectar a la Instancia EC2 de AWS via SSH

Utiliza tu clave privada para conectarte a tu instancia EC2:

ssh -i tuarchivo.pem ec2-user@ip-publica

Nota: Reemplaza tuarchivo.pem con el nombre de tu archivo de clave privada y ip-publica con la dirección IP pública de tu instancia.

Paso 2: Actualizar el Sistema e Instalar Docker

Actualiza todos los paquetes del sistema e instala Docker:

sudo yum update -y
sudo yum install -y docker

Este comando actualiza el sistema operativo y descarga Docker desde los repositorios oficiales de Amazon Linux.

Paso 3: Iniciar y Habilitar el Servicio Docker

Inicia Docker y configúralo para que se ejecute automáticamente al arrancar el sistema:

sudo systemctl start docker
sudo systemctl enable docker

El primer comando inicia el servicio Docker inmediatamente, mientras que el segundo asegura que Docker se inicie automáticamente cada vez que reinicies la instancia.

Paso 4: Agregar Usuario al Grupo Docker

Permite que tu usuario ejecute comandos Docker sin necesidad de usar sudo:

sudo usermod -aG docker ec2-user

Este comando agrega tu usuario al grupo docker, lo que te permitirá ejecutar comandos Docker sin permisos de administrador.

Paso 5: Salir de la Sesión SSH

Cierra la sesión actual para que los cambios de grupo tomen efecto:

exit

Es necesario cerrar y volver a abrir la sesión para que el sistema reconozca que tu usuario ahora pertenece al grupo Docker.

Paso 6: Reconectar a la Instancia EC2

Vuelve a conectarte a tu instancia para continuar con la configuración:

ssh -i tuarchivo.pem ec2-user@ip-publica

Recuerda: Usar tuarchivo.pem y ip-publica con tus valores reales.

Paso 7: Instalar Docker Compose

Descarga e instala Docker Compose, una herramienta para definir y ejecutar aplicaciones Docker multi-contenedor:

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

El primer comando descarga la última versión de Docker Compose, y el segundo le otorga permisos de ejecución.

Paso 8: Ejecutar el Contenedor Docker de N8N

Lanza n8n en un contenedor Docker con la configuración necesaria:

sudo docker run -d --restart unless-stopped -it \
--name n8n \
-p 5678:5678 \
-e N8N_HOST="tu-nombre-de-dominio" \
-e WEBHOOK_TUNNEL_URL="https://tu-nombre-de-dominio/" \
-e WEBHOOK_URL="https://tu-nombre-de-dominio/" \
-v ~/.n8n:/root/.n8n \
n8nio/n8n

Parámetros explicados:

  • -d: Ejecuta el contenedor en segundo plano
  • --restart unless-stopped: Reinicia automáticamente el contenedor si se detiene
  • -p 5678:5678: Mapea el puerto 5678 del contenedor al puerto 5678 del host
  • -e: Define variables de entorno para n8n
  • -v: Monta un volumen para persistir los datos de n8n

Importante: Reemplaza tu-nombre-de-dominio con tu dominio real.

Paso 9: Instalar y Configurar Nginx

Instala Nginx y configúralo como servidor web y proxy reverso:

sudo dnf install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

Nginx actuará como proxy reverso, redirigiendo las peticiones HTTP/HTTPS hacia tu aplicación n8n que corre en el puerto 5678.

Paso 10: Configurar Nginx como Proxy Reverso para N8N

Crea un archivo de configuración específico para n8n:

sudo nano /etc/nginx/conf.d/n8n.conf

Agrega el siguiente contenido en el archivo n8n.conf:

server {
    listen 80;
    server_name tu-nombre-de-dominio;

    location / {
        proxy_pass http://localhost:5678;
        proxy_http_version 1.1;
        chunked_transfer_encoding off;
        proxy_buffering off;
        proxy_cache off;

        # Headers para soporte de WebSocket
        proxy_set_header Connection 'Upgrade';
        proxy_set_header Upgrade $http_upgrade;

        # Headers adicionales para reenviar información del cliente
        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;
    }
}

Para guardar y salir del editor nano:

CTRL+O, ENTER, CTRL+X

Importante: Reemplaza tu-nombre-de-dominio con tu dominio real.

Paso 11: Verificar y Reiniciar Nginx

Verifica que la configuración de Nginx sea correcta y reinicia el servicio:

sudo nginx -t
sudo systemctl restart nginx

El primer comando verifica la sintaxis de la configuración. Si no hay errores, el segundo comando reinicia Nginx con la nueva configuración.

Paso 12: Configurar Certificado SSL con Certbot

Sección A: Instalación de Certbot

Instala Certbot y el plugin para Nginx que te permitirá obtener certificados SSL gratuitos de Let's Encrypt:

sudo dnf install -y certbot python3-certbot-nginx

Certbot es una herramienta automática que simplifica el proceso de obtención y renovación de certificados SSL.

Sección B: Obtener y Configurar el Certificado SSL

Ejecuta Certbot para obtener automáticamente el certificado SSL y configurar Nginx:

sudo certbot --nginx -d tu-nombre-de-dominio

Durante este proceso:

  • Certbot verificará que tu dominio apunte a tu servidor
  • Obtendrá un certificado SSL válido de Let's Encrypt
  • Modificará automáticamente tu configuración de Nginx para usar HTTPS
  • Configurará la redirección automática de HTTP a HTTPS

Importante: Reemplaza tu-nombre-de-dominio con tu dominio real.

Sección C: Finalizar y Verificar la Configuración

Reinicia Nginx para asegurar que todos los cambios se apliquen correctamente:

sudo systemctl restart nginx

Verificaciones finales:

  • Accede a tu dominio usando HTTPS (https://tu-nombre-de-dominio) - donde tu-nombre-de-dominio es tu dominio real
  • Verifica que el certificado SSL esté funcionando correctamente
  • Confirma que n8n esté accesible y funcionando

Configuración de renovación automática:

Certbot configura automáticamente la renovación de certificados. Puedes verificar que funcione con:

sudo certbot renew --dry-run

¡Felicidades! Ahora tienes n8n ejecutándose de forma segura en tu instancia AWS EC2 con un certificado SSL válido.

Resumen de valores que debes personalizar:

  • tuarchivo.pem - Tu archivo de clave privada de AWS
  • ip-publica - La IP pública de tu instancia EC2
  • tu-nombre-de-dominio - Tu dominio real (ej: miapp.com)