Para VPS y Servidor Cloud migrado

En este artículo te mostramos cómo instalar la imagen Ubuntu 24.04 + n8n en tu servidor. La herramienta n8n se proporciona en un contenedor Docker como parte de la instalación. La imagen n8n proporcionada por IONOS no contiene un certificado SSL para la dirección IP suministrada, esto significa que el acceso únicamente es posible inicialmente a través del protocolo HTTP sin cifrar. Para acceder a n8n a través de una conexión cifrada, es necesario realizar una configuración manual. Cómo preparar la configuración y configurar n8n se explica más adelante en el artículo.

Resumen de los pasos necesarios

A continuación se indican brevemente los pasos necesarios:

  • Instalar la imagen en el servidor
  • Preparar la configuración
  • Establecer una conexión SSH con el servidor
  • Configurar el n8n para la conexión SSL
  • Acceder a la interfaz del n8n

Advertencia

Si reinstalas una imagen en un servidor existente, todos los datos existentes en el servidor se eliminarán irremediablemente y se sustituirán por los datos de la imagen recién instalada. Este proceso ya no se puede deshacer. Asegúrate de crear una copia de seguridad del servidor antes de instalar la imagen. De lo contrario, existe riesgo de pérdida de datos.

1) Instalar la imagen en el servidor

Para instalar la imagen «Ubuntu 24.04 + n8n», sigue las siguientes instrucciones:

  • Inicia sesión en tu cuenta IONOS.
  • Haz clic en Menú > Servidores & Cloud en la barra de menú superior. 
    Opcional: Si tienes varios contratos, selecciona el pertinente. 

  • En la barra de navegación izquierda, haz clic en Infraestructura > Servidores.
  • Haz clic en Acciones.
  • Haz clic en Reinstalar imagen. Se abrirá el área Reinstalar imagen.
Captura de pantalla: aparece el menú de acciones con la opción para reinstalar imagen en la sección Infraestructura > Servidores resaltada
Figura: menú de acciones con la opción para reinstalar imagen en la sección Infraestructura > Servidores
  • Haz clic en la flecha que apunta hacia abajo en el mosaico de Ubuntu.
  • Selecciona la imagen Ubuntu 24.04 + n8n.
  • Haz clic en Reinstalar imagen. La imagen se instalará. Este proceso puede tardar unos minutos.
  • Anota la dirección IP del servidor. Esto será necesario más adelante para conectar tu dominio.

2) Preparar la configuración

Para establecer una conexión cifrada con n8n, se necesita un dominio al que se pueda acceder. Además, se requiere un certificado SSL emitido para el dominio.

3) Establecer una conexión SSH con el servidor

Para el siguiente paso, establece una conexión SSH a tu servidor. Para ello, inicia sesión como root. Consulta las instrucciones en los siguientes enlaces a los artículos correspondientes: 

4) Configurar n8n para la conexión SSL

Advertencia

Estos pasos desactivarán la instancia no segura instalada e instalarán una nueva instancia n8n segura con un certificado SSL de Let's Encrypt. Si llevas a cabo estos pasos después de haber estado trabajando con la instancia no segura durante algún tiempo, te recomendamos que primero exportes cualquier flujo de trabajo y otro contenido que hayas creado para poder importarlos a la nueva instancia. Consulta cómo funciona en el siguiente enlace a la documentación de  n8n: exportar e importar flujos de trabajo | n8n Docs

  • Para crear un nuevo directorio llamado n8n-compose en tu servidor, introduce el siguiente comando:

    root@ubuntu:~# mkdir n8n-compose

  • Para continuar trabajando en el directorio recién creado, cambia al nuevo directorio:

    root@ubuntu:~# cd n8n-compose

  • En este directorio, utiliza el editor vi para crear un archivo con la extensión .env. Este archivo se utiliza para definir las variables de entorno que se utilizan en el archivo Docker Compose.

    root@ubuntu:~/n8n-compose# vi .env

Nota

El editor vi tiene un modo de inserción y un modo de comandos. Puedes activar el modo de inserción con la tecla [i]. En este modo, los caracteres introducidos se insertan inmediatamente en el texto. Para salir del modo de inserción y activar el modo de comandos, pulsa [ESC]. Si utilizas el modo de comandos, las entradas del teclado se interpretan como comandos.

  • Añade la siguiente información al archivo .env y sustituye los marcadores de posición example.com y el marcador de posición de la zona horaria. Estas variables se referencian en el archivo compose.yaml en un paso posterior y se utilizan para especificar la configuración del dominio, el estándar de zona horaria deseado y la dirección de correo electrónico para los certificados SSL.

    # DOMAIN_NAME and SUBDOMAIN together determine where n8n will be reachable from
    # The top level domain to serve from
    DOMAIN_NAME=example.com

    # The subdomain to serve from
    SUBDOMAIN=n8n

    # The above example serves n8n at:https://n8n.example.com

    # Optional timezone to set which gets used by Cron and other scheduling nodes
    # New York is the default value if not set
    GENERIC_TIMEZONE=Europe/Berlin 

    # The email address to use for the TLS/SSL certificate creation
    SSL_EMAIL=user@example.com

  • Sustituye el marcador de posición user@example.com en la línea SSL_EMAIL.
  • Pulsa la tecla [ESC].
  • Para salir de vi y guardar el archivo, introduce el siguiente comando y, a continuación, pulsa la tecla Intro:

    root@ubuntu:~# :wq

  • Crea un directorio con el nombre local-files. Esto se utiliza como un montaje de enlace para permitir el acceso a los archivos desde el contenedor. Para ello, introduce el siguiente comando:

    root@ubuntu:~/n8n-compose# mkdir local-files

  • Para crear el archivo Docker Compose necesario, introduce el siguiente comando:

    root@ubuntu:~/n8n-compose# vi compose.yaml

  • Ahora añade la siguiente información

    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=producción
    - WEBHOOK_URL=https://${SUBDOMINIO}.${DOMAIN_NAME}/
    - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    - TZ=${GENERIC_TIMEZONE}
      volumes:
    - n8n_data:/home/node/.n8n
    - ./local-files:/files

      volumes:
    n8n_data:
    traefik_data:

Nota

La entrada - «--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json» debe estar en una línea.

  • Pulsa la tecla [ESC].
  • Para salir de vi y guardar el archivo, introduce el siguiente comando y pulsa la tecla Intro:

    :wq

  • Para saber qué proceso está utilizando el puerto 5678, introduce el siguiente comando:

    root@ubuntu:~/n8n-compose# sudo lsof -i :5678

  • Para terminar un proceso, personaliza el siguiente comando e introdúcelo:

    root@ubuntu:~/n8n-compose# sudo kill PID_INSERTAR_AQUÍ

  • Después de la personalización, introduce el siguiente comando para detener los contenedores antiguos:

    root@ubuntu:~/n8n-compose# docker compose down

  • Para iniciar los contenedores definidos en compose.yaml como daemons en segundo plano, introduce el siguiente comando. Este comando inicia y configura las instancias Traefik y n8n.

    root@ubuntu:~/n8n-compose# docker compose up -d

  • Para comprobar si los contenedores se están ejecutando, introduce el siguiente comando:

    root@ubuntu:~/n8n-compose# docker ps

  • Asegúrate de que los siguientes 2 contenedores se están ejecutando y su estado es «Up». Para ello, introduce los siguientes comandos.

    root@ubuntu:~/n8n-compose# n8n-compose-traefik-1
    root@ubuntu:~/n8n-compose# n8n-compose-n8n-1

5) Acceder a la interfaz n8n

Una vez que los servicios Docker (contenedores) se han iniciado correctamente, el acceso a n8n es gestionado por el proxy Traefik. Traefik asegura el cifrado SSL y reenvía las peticiones a su instancia n8n. El acceso es ahora exclusivamente a través del dominio que configuraste previamente en el archivo .env.

Importante

El acceso directo a través de http://SERVER-IP:5678 ya no es posible. La configuración en compose.yaml (en puertos: - «127.0.0.1:5678:5678») asegura que n8n solo es accesible internamente (para Traefik), pero no públicamente a través de la IP del servidor.

  • Abre tu navegador.
  • Introduce la URL completa y segura, formada por las variables SUBDOMAIN y DOMAIN_NAME de tu archivo .env
    Por ejemplo:https://n8n.example.com
  • La ventana Set up owner account se muestra la primera vez que se accede a ella. Introduce la dirección deseada en el campo Email.
  • Introduce el nombre y apellidos deseados en los campos First Name y Last Name.
  • Introduce una contraseña en el campo Password.
  • Pulsa Next. Se abrirá la ventana Customize n8n to you.
Caputura de pantalla: se resalta el botón para continuar en la ventana de configuración de la cuenta
Figura: botón para continuar en la ventana de configuración de la cuenta
    • Responde a las preguntas de la ventana Customize n8n to you y haz clic en Get started. Ahora ya podrás utilizar n8n.
       
Captura de pantalla: se resalta el botón para comenzar en la ventana de personalización n8n
Figura: botón para comenzar en la ventana de personalización n8n