Configurar Ubuntu 24.04 + n8n para su uso con SSL (certificado SSL de Let's Encrypt)
Utilice la función «Imprimir» al final de la página para crear un PDF.
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.

- 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.
Adquirir un dominio
Si aún no adquiriste un dominio para tu servidor, puedes solicitarlo en cualquier momento. Consulta las instrucciones en el siguiente enlace al artículo correspondiente: solicitar un dominio como cliente de IONOSCrear un subdominio
Crea un subdominio con el siguiente formato: n8n.ejemplo.com
Sustituye el marcador de posición ejemplo.com por el dominio que hayas elegido. Consulta cómo crear un subdominio en tu cuenta IONOS en el siguiente enlace al artículo correspondiente: crear un subdominioConectar el dominio a la dirección IP estática del servidor
Consulta cómo crear un subdominio en tu cuenta IONOS en el siguiente enlace al artículo correspondiente: cambiar la dirección IPv4/IPv6 de un dominio (registro A/AAAA)Configuración del firewall
Asegúrate de que los siguientes puertos están habilitados en las políticas de firewall:
- Puerto 80
- Puerto 443
- Puerto 5678
Consulta las instrucciones en el siguiente artículo: modificar una política de firewall (VPS y Servidor Cloud migrado)
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.

- Responde a las preguntas de la ventana Customize n8n to you y haz clic en Get started. Ahora ya podrás utilizar n8n.
- Responde a las preguntas de la ventana Customize n8n to you y haz clic en Get started. Ahora ya podrás utilizar n8n.
