¡Pregunte, nosotros le respondemos!

Aplicaciones y Guías

Cómo instalar N8N

Los agentes de IA en 2025 siguen siendo uno de los enfoques más prometedores para resolver tareas complejas utilizando grandes modelos lingüísticos. Estos agentes son autónomos y capaces de seleccionar por sí mismos diversas herramientas para realizar las tareas asignadas. Este enfoque permite obtener resultados con menor intervención humana y mayor calidad. También abre oportunidades para descubrir formas más originales y eficaces de abordar los problemas.

En lugar de limitarse a formular una tarea, se ordena a la red neuronal que la resuelva de forma autónoma, en función de los recursos que se le asignen. Sin embargo, para que este esquema funcione, tiene que haber un mecanismo que conecte las interfaces de las redes neuronales con diversas herramientas, ya sea una búsqueda en la web o una base de datos vectorial para almacenar resultados intermedios.

n8n es una plataforma de automatización que admite la integración con diversas redes neuronales y servicios públicos. Los usuarios pueden diseñar visualmente cómo se procesarán los datos y qué resultado final debe obtenerse. A diferencia de las soluciones clásicas sin código, n8n permite incluir código arbitrario en cualquier fase del proceso, lo que resulta especialmente útil cuando la funcionalidad incorporada no es suficiente.

El resultado es un sistema que combina la sencillez del no-code con la flexibilidad de la programación tradicional. Sin embargo, para entenderlo completamente, todavía necesitarás pasar algún tiempo explorando y revisando ejemplos de flujos de trabajo para una mejor comprensión. En este artículo, le mostraremos cómo implementar n8n en servidores LeaderGPU.

Preparación del servidor

Actualizar el sistema

Actualice la lista de paquetes y actualice todos los paquetes instalados:

sudo apt update && sudo apt -y upgrade

Instala automáticamente el controlador NVIDIA® recomendado (propietario) o utiliza nuestra guía paso a paso Instalar controladores NVIDIA® en Linux:

sudo ubuntu-drivers autoinstall

Ahora reinicia el servidor:

sudo shutdown -r now

Instalar Docker

Puedes usar el script de instalación oficial:

curl -sSL https://get.docker.com/ | sh

Añadamos la clave GPG y el repositorio de NVIDIA® container toolkit para la integración en Docker:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

Actualiza la lista de paquetes e instala NVIDIA® container toolkit:

sudo apt update && sudo apt -y install nvidia-container-toolkit

Reinicia Docker para aplicar los cambios y activar el kit de herramientas instalado:

sudo systemctl restart docker

Instalar n8n

Para que el sistema pueda almacenar datos, es necesario crear un volumen antes de lanzar el contenedor:

sudo docker volume create n8n_data

Ahora, vamos a lanzar un contenedor que abrirá el puerto 5678 para conexiones externas y montará el volumen n8n_data creado en el directorio /home/node/.n8n dentro del contenedor:

sudo docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

La primera vez que lances la aplicación, puede que te sorprenda el siguiente mensaje de error:

TLS-error N8N

Esto no es exactamente un error, es más bien una advertencia sobre cómo configurar correctamente el sistema para el acceso. El problema es que, por defecto, el sistema no tiene un certificado TLS/HTTPS. Sin él, la conexión no será segura. Así que tienes tres opciones:

  1. Connect your own certificate. Puedes hacerlo especificando las rutas a los archivos de certificado mediante variables de entorno, o configurando un servidor proxy inverso.
  2. Create an SSH tunnel and forward port 5678 a localhost en el ordenador desde el que te estás conectando. De esta forma, obtendrás inmediatamente una conexión personal segura. Sin embargo, nadie más podrá acceder externamente al servidor.
  3. Bypass the warning. Si se trata de un servidor de pruebas que no está pensado para su uso en producción y no te preocupa la seguridad, puedes desactivar la advertencia estableciendo la variable de entorno N8N_SECURE_COOKIE en FALSE. Esto se desaconseja totalmente, ya que hace que el servidor sea vulnerable a posibles ataques. Aún así, puede ser aceptable en escenarios específicos.

Este artículo explorará cada opción en detalle para que puedas elegir la correcta.

Conexión al servidor

Si aún no dispone de un certificado SSL, le recomendamos que solicite uno a LeaderSSL. Se puede utilizar para cualquier sitio web, tienda en línea o para verificar la autenticidad de un correo electrónico.

Uso de variables de entorno

La forma más sencilla de configurar HTTPS es cargar el certificado en el servidor y especificarlo mediante variables de entorno Docker. Comience por crear un directorio para los archivos del certificado:

mkdir ~/n8n-certs

Puedes subir estos archivos (normalmente cert.crt y privkey.key) a este directorio usando cualquier método. Para obtener información más detallada, consulte:

Ahora, vamos a lanzar el contenedor utilizando un comando completo:

sudo docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-v ~/n8n-certs:/certs \
-e N8N_PROTOCOL=https \
-e N8N_SSL_CERT="/certs/cert.crt" \
-e N8N_SSL_KEY="/certs/privkey.key" \
docker.n8n.io/n8nio/n8n

Aquí tienes un desglose de cada argumento:

  • sudo docker run -d lanza el contenedor Docker en modo demonio (en segundo plano)
  • --name n8n asigna un nombre al contenedor n8n
  • -p 5678:5678 reenvía el puerto 5678 al contenedor
  • -v n8n_data:/home/node/.n8n crea y monta un volumen llamado n8n_data en el directorio oculto /home/node/.n8n dentro del contenedor
  • -v ~/n8n-certs:/certs monta el directorio de certificados
  • -e N8N_PROTOCOL=https obliga a N8N a utilizar el protocolo HTTPS
  • -e N8N_SSL_CERT="/certs/cert.crt" establece la ruta al archivo del certificado
  • -e N8N_SSL_KEY="/certs/privkey.key" establece la ruta a la clave del certificado
  • docker.n8n.io/n8nio/n8n fuente de la imagen del contenedor

Traefik

Una configuración ligeramente más compleja pero flexible implica el uso del servidor proxy inverso Traefik para asegurar la conexión a N8N. El archivo de configuración se basa en el método oficial especificado en la documentación. En primer lugar, instale la herramienta docker-compose:

sudo apt -y install docker-compose

Desplegaremos Traefik y N8N juntos, y necesitan estar en la misma red. Crea una red llamada web.

sudo docker network create web

Ahora, crea un archivo docker-compose.yml para definir y ejecutar ambos contenedores:

nano docker-compose.yml
services:
  traefik:
    image: "traefik"
    container_name: "proxy"
    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
    networks:
      - web

  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: "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_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
      - ./local-files:/files
    networks:
      - web

volumes:
  n8n_data:
  traefik_data:

networks:
  web:
    name: web

Además del archivo docker-compose.yml, crearemos otro archivo llamado .env. Este archivo contendrá variables como el nombre de dominio y la dirección de correo electrónico utilizados para solicitar un certificado SSL a Let's Encrypt. Si alguna vez necesitamos cambiar algo, como el nombre de dominio, sólo tendremos que actualizarlo en este archivo y luego volver a crear el contenedor.

nano .env
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Amsterdam
SSL_EMAIL=user@example.com

Por último, despliega ambos contenedores:

sudo docker-compose up -d
Ahora, N8N está disponible aquí: https://n8n.example.com.

Gestor de proxy Nginx

A diferencia de Traefik, que se configura a través de archivos, Nginx Proxy Manager ofrece una interfaz web fácil de usar. Sin embargo, no detecta servicios dinámicamente, sino que hay que añadirlos manualmente. Aún así, funciona bien para servicios estáticos como N8N.

Crea otro archivo docker-compose.yml en un directorio separado con el siguiente contenido:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: proxy
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - web

  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PORT=5678
      - WEBHOOK_URL=https://n8n.example.com/
      - N8N_PROTOCOL=http
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - web

volumes:
  n8n_data:

networks:
  web:
    external: true

Desplegar con:

sudo docker-compose up -d

A continuación, abra la interfaz web en: http://your_hostname_or_ip:81

  • Nombre de usuario: admin@example.com
  • Contraseña: changeme

Se te pedirá que actualices tus credenciales. A continuación, abra Hosts → Proxy Hosts → Add Proxy Host, introduzca su nombre de dominio (por ejemplo, n8n.example.com):

Add domain N8N

Rellena los campos necesarios:

  • Establezca Destination/IP en n8n.
  • Establezca Port en 5678.
  • En la pestaña SSL, seleccione Request a new SSL certificate with Let’s Encrypt.
  • Introduzca su correo electrónico y acepte las condiciones.
  • Haga clic en Websockets support.
  • Opcionalmente, haga clic en Force SSL.

Tras pulsar el botón Save, se solicitará e instalará el certificado:

Nginx Proxy Manager ready

Una vez hecho esto, al abrir su dominio accederá a la interfaz N8N.

Túnel SSH

Si no necesita la accesibilidad externa de N8N, puede reenviar el puerto 5678 a través de SSH. Esto encripta todo el tráfico, y N8N estará disponible en http://localhost:5678/.

Nota: Esta configuración no funcionará para integraciones con servicios externos como mensajeros que requieren acceso HTTPS público.

La forma más sencilla de redireccionar el puerto es con el popular cliente SSH PuTTY. Una vez instalado, abra SSH → Tunnels y configure Source port - 5678 y Destination - localhost:5678. A continuación, haga clic en Add.

PuTTY port forwarding

Vuelva a Session, introduzca la IP de su servidor y haga clic en Open. Una vez autenticado, el túnel estará activo. Abra http://localhost:5678 en un navegador para acceder a N8N.

Nota: La conexión sólo funciona mientras la sesión SSH está activa. Cerrar PuTTY terminará el túnel.

Pasar por alto

No se recomienda utilizar este método en redes públicas. Si lanza el contenedor con la variable de entorno N8N_SECURE_COOKIE=false, la advertencia desaparecerá, y obtendrá acceso a través de HTTP:

sudo docker run -d --name n8n -p 5678:5678 -e N8N_SECURE_COOKIE=false -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

Warning: esto expone el panel de administración de N8N a través de HTTP sin cifrar, haciéndolo vulnerable a ataques MITM (Man-In-The-Middle) y potencialmente permite a un atacante tomar completamente el control de su servidor.

Véase también:



Actualizado: 12.08.2025

Publicado: 23.06.2025