Configurar Ubuntu 24.04 + n8n para su uso con SSL (certificado SSL de IONOS)
Utilice la función «Imprimir» al final de la página para crear un PDF.
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 este artículo.
Resumen de los pasos necesarios
A continuación, te indicamos brevemente los pasos necesarios que debes seguir:
Instalar la imagen en el servidor
- Preparar la configuración
- Establecer una conexión SSH con el servidor
- Guardar los archivos de certificados SSL en el host
- Crear un archivo fullchain
- Configurar n8n para la conexión SSL
- Acceder a la interfaz n8n
Advertencia
Al reinstalar 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 no se puede deshacer. Asegúrate de crear una copia de seguridad del servidor antes de instalar la nueva imagen. De lo contrario, corres el riesgo de experimentar una 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.
Notas
Tras la instalación, los puertos 80, 443 y 5678 deben estar habilitados en el firewall. Encontrarás más información al respecto en el siguiente apartado de este artículo: «Preparar la configuración».
Tras la instalación, puedes acceder a tu instancia n8n utilizando la dirección IP de tu servidor y el número de puerto predeterminado de n8n: http://IP-ADRESSE_DES_SERVERS:5678.
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 has adquirido 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 subdominioSolicitar un certificado SSL
Configura un certificado SSL para tu subdominio. Si ya has configurado un certificado SSL Wildcard para el dominio, puedes omitir este paso. Los certificados SSL Wildcard son válidos tanto para el dominio como para el subdominio.
Si solicitas un certificado SSL Starter, puedes utilizarlo para tu subdominio. Consulta cómo configurar un certificado SSL en el siguiente enlace al artículo correspondiente: configurar un certificado SSL gestionado por el usuario (SSL Starter / SSL Starter Wildcard)Descargar archivos de certificado SSL para la instalación manual
Consulta las instrucciones sobre cómo descargar los archivos del certificado SSL para la instalación manual en el siguiente enlace al artículo correspondiente: descargar archivos de certificado SSL para la instalación manualConectar el dominio a la dirección IP estática del servidor
Consulta las instrucciones sobre cómo conectar tu dominio a la dirección IP estática de tu servidor en el siguiente enlace al artículo correspondiente: cambiar la dirección IPv4/IPv6 de un dominio (registro A/AAAA)Configuración de 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) Guardar los archivos de certificados SSL en el host
Para guardar los archivos de certificado SSL en el host, sigue estos pasos:
Los archivos del certificado ya se encuentran en el servidor:
Crea una carpeta en el directorio /opt/:
root@ubuntu:~# mkdir -p /opt/certs
Copia los archivos en la carpeta. Si los archivos del certificado ya se encuentran en el servidor, utiliza el siguiente comando y personalízalo:
root@ubuntu:~# cp /path/to/Certificado-SSL_PARA_DOMINIO.cer /opt/certs/
root@ubuntu:~# cp /path/to/CERTIFICADO_INTERMEDIO_1.cer /opt/certs/
root@ubuntu:~# cp /path/to/CERTIFICADO_INTERMEDIO_2.cer /opt/certs/
root@ubuntu:~# cp /path/to/Private_Key_PARA_DOMINIO.key /opt/certs/
Los archivos del certificado ya se encuentran en un equipo con el sistema operativo Microsoft Windows:
Si los archivos de certificado se encuentran en un equipo con el sistema operativo Microsoft Windows, sigue estos pasos:
- Introduce el comando cmd en la barra de búsqueda situada en la barra de tareas.
- Haz doble clic en Símbolo del sistema.
Utiliza el comando scp para copiar los archivos de Windows al sistema Linux. En el siguiente ejemplo, suponemos que los archivos de certificado se encuentran en la carpeta de certificados C:\SSL. Sustituye de acuerdo con las instrucciones:
- username: tu nombre de usuario real en el servidor
-remote-server-ip: dirección IP o el nombre de host de tu servidor
- Certificado-SSL_PARA_DOMINIO.cer: nombre de archivo real
- Private_Key_PARA_DOMINIO.key: nombre de archivo real
- CERTIFICADO_INTERMEDIO_1.cer: nombre de archivo real
- CERTIFICADO_INTERMEDIO_2.cer: nombre de archivo real
scp C:\Certificado-SSL\Certificado-SSL_PARA_DOMINIO.cer username@remote-server-ip:/opt/certs/
scp C:\Certificado-SSL\CERTIFICADO_INTERMEDIO_1.cer username@remote-server-ip:/opt/certs/
scp C:\Certificado-SSL\CERTIFICADO_INTERMEDIO_2.cer username@remote-server-ip:/opt/certs/
scp C:\Certificado-SSL\Private_Key_PARA_DOMINIO.key username@remote-server-ip:/opt/certs/
Alternativamente, puedes transferir los archivos de forma fácil y cómoda utilizando el programa WinSCP, un cliente gráfico SFTP y FTP de código abierto para Windows. Puedes descargar el programa en el siguiente enlace a la página del proveedor: descarga de WinSCP
Asignar derechos de lectura
Cambia al directorio en el que se encuentran los certificados SSL. Por ejemplo:
root@ubuntu:~# cd /opt/certs
Para habilitar la lectura de los archivos, introduce los siguientes comandos en el VPS:
sudo chmod 755 /path/to
sudo chmod 644 /path/to
Por ejemplo:
sudo chmod 755 /opt/certs
sudo chmod 644 /opt/certs/*
5) Crear un archivo fullchain
Para integrar los certificados intermedios, debes crear un único archivo de certificado que contenga toda la «cadena de confianza» (chain of trust). Para ello, sigue estos pasos:
Cambia al directorio /opt/certs:
root@ubuntu:~# cd /opt/certs
Crea un archivo fullchain con el siguiente comando. El comando cat agrega los archivos en el orden correcto. Sustituye el marcador de posición Certificado-SSL_PARA_DOMINIO por el certificado SSL de tu dominio y los marcadores de posición de los certificados intermedios. Asegúrate de que los nombres de los archivos son correctos.
root@ubuntu:/opt/certs# cat Certificado-SSL_PARA_DOMINIO.cer
intermediate1.cer intermediate2.cer > n8n.fullchain.cerAsí se creará el archivo fullchain.
6) 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 IONOS. Si realizas 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 el marcador de posición example.com y el marcador de posición de la zona horaria. Se hará referencia a estas variables en el archivo compose.yaml en un paso posterior y se utilizan para definir la configuración del dominio y la norma de zona horaria deseada.
# 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
GENERIC_TIMEZONE=Europe/Berlin- Pulsa la tecla [ESC].
Para salir de vi y guardar el archivo, introduce el siguiente comando y pulsa la tecla Intro:
:wq
Utiliza el siguiente comando para crear el archivo traefik.yaml:
root@ubuntu:~/n8n-compose# vi traefik.yaml
Inserta la siguiente información, prestando atención a las sangrías:
# Configuración estática Traefik (traefik.yaml)
api:
insecure: true # Permite el panel de control de Traefik (optional)
providers:
docker:
exposedByDefault: false # Solo se tienen en cuenta los contenedores con 'traefik.enable=true'
file:
directory: /etc/traefik/dynamic # Ruta *en contenedor*
watch: true # Supervisar los cambios
entryPoints:
web:
address: ":80"
# Redireccionamiento automático de HTTP a HTTPS
http:
middlewares:
- redirect-to-https@file
websecure:
address: ":443"
http:
tls: {} # Activar TLS de forma global para este punto de entrada- Pulsa la tecla [ESC].
Para salir de vi y guardar el archivo, introduce el siguiente comando y, a continuación, pulsa la tecla Intro:
:wq
Crea un nuevo directorio con el nombre dynamic:
root@ubuntu:~/n8n-compose# mkdir dynamic
Crea un archivo de certificado dinámico:
root@ubuntu:~/n8n-compose# vi dynamic/certificates.yaml
Inserta la siguiente información y reemplaza el marcador de posición Private_Key_PARA_DOMINIO.key. Presta atención a las sangrías:
# Configuración dinámica: certificados
tls:
certificates:
# Ruta *dentro del contenedor* a la cadena
- certFile: /opt/certs/n8n.fullchain.cer
keyFile: /opt/certs/Private_Key_PARA_DOMINIO.key
# Configuración dinámica: reenvío global de HTTP a HTTPS
http:
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
permanent: true- Comprueba las rutas en las líneas certFile y keyFile y ajústalas si es necesario.
- Pulsa la tecla [ESC].
Para salir de vi y guardar el archivo, introduce el siguiente comando y pulsa la tecla Intro:
:wq
Crea un directorio con el nombre local-files. Este es utilizado como bind mount 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
Añade la siguiente información y asegúrate de que las entradas de la sección # Definición de Security-Header-Middleware (Name: n8n-secure-headers) están en una línea.
services:
traefik:
image: "traefik:v2.11" # Versión fija para mayor estabilidad
restart: always
command:
- "--configFile=/etc/traefik/traefik.yaml"
ports:
- "80:80"
- "443:443"
- "127.0.0.1:8080:8080"
volumes:
- traefik_data:/data # Memoria interna para Traefik (por ejemplo, ACME info.P.ej. ACME infos, si se utiliza)
- /var/run/docker.sock:/var/run/docker.sock:ro
# Montar los certificados (como antes)
- /opt/certs:/opt/certs:ro
# Montar el nuevo archivo de configuración estática
- ./traefik.yaml:/etc/traefik/traefik.yaml:ro
# Montar la nueva carpeta de configuración dinámica
- ./dynamic:/etc/traefik/dynamic: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}`)
# El router solo responde a 'websecure' (HTTPS)
- traefik.http.routers.n8n.entrypoints=websecure
# Indica al router que utilice TLS
- traefik.http.routers.n8n.tls=true
# Definición de Security-Header-Middleware (Name: n8n-secure-headers)
- traefik.http.middlewares.n8n-secure-headers.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n-secure-headers.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n-secure-headers.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n-secure-headers.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n-secure-headers.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n-secure-headers.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n-secure-headers.headers.STSPreload=true
# Asignación de middleware al router
- traefik.http.routers.n8n.middlewares=n8n-secure-headers@docker
environment:
# Estas variables de entorno utilizan el archivo .env
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_RUNNERS_ENABLED=true
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- TZ=${GENERIC_TIMEZONE}
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
volumes:
n8n_data:
traefik_data:
- 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
Ayuda en caso de problemas
Si uno de los contenedores no tiene el estado «Up» (por ejemplo, «Restarting» o «Exited»), el error reside aquí. En este caso, comprueba las entradas de registro de Traefik. para ello, introduce el siguiente comando:
root@ubuntu:~/n8n-compose# docker logs n8n-compose-traefik-1
A continuación, busca mensajes de error, como por ejemplo:
- certificate not found
- unable to read
- permission denied (esto indicaría un problema de chmod)
- router not found for domain- Comprueba la configuración del firewall en Cloud Panel y asegúrate de que el tráfico entrante está autorizado para los puertos 80 (TCP) y 443 (TCP).
- Comprueba la accesibilidad del subdominio.
- Comprueba la sangría de los archivos .yaml.
7) Acceder a la interfaz n8n
Una vez que los servicios Docker (contenedores) se han iniciado correctamente, el acceso a n8n es gestionado por proxy Traefik. Traefik asegura el cifrado SSL y reenvía las peticiones a tu instancia n8n. El acceso es ahora exclusivamente a través del dominio que has configurado 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 de correo electrónico 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.

Contenido
- Resumen de los pasos necesarios
- 1) Instalar la imagen en el servidor
- 2) Preparar la configuración
- 3) Establecer una conexión SSH con el servidor
- 4) Guardar los archivos de certificados SSL en el host
- 5) Crear un archivo fullchain
- 6) Configurar n8n para la conexión SSL
- Ayuda en caso de problemas
- 7) Acceder a la interfaz n8n
- Arriba