Back to blog
n8n autoalojado

Cómo desplegar n8n con Docker en un VPS propio?

Oct 6, 2026

Ejecutar n8n con Docker en un VPS propio te permite controlar tu entorno de automatización, tus datos, tus flujos de trabajo y los recursos del servidor. Tu instancia de n8n puede permanecer en línea las 24 horas, ejecutar flujos de trabajo programados y recibir webhooks sin depender de tu ordenador local.

Puedes configurar el entorno manualmente con Docker Compose o utilizar la plantilla de despliegue de n8n de Time4VPS para reducir el trabajo de configuración inicial. En esta guía explicamos ambas opciones y ofrecemos ejemplos prácticos de configuración.

¿Qué es n8n con Docker?

n8n es una plataforma de automatización de flujos de trabajo que conecta aplicaciones, API, bases de datos y otros servicios. Puedes utilizarla para sincronizar datos, procesar pedidos, generar informes, enviar notificaciones operativas o crear flujos de trabajo basados en inteligencia artificial.

Docker agrupa n8n y sus dependencias dentro de un contenedor. Esto crea un entorno aislado y reproducible que puedes trasladar, reiniciar o actualizar sin instalar n8n directamente en el sistema operativo del VPS.

Un despliegue típico de n8n con Docker puede incluir varios componentes:

  • La aplicación n8n
  • Una base de datos PostgreSQL
  • Un proxy inverso como Traefik
  • Certificados HTTPS
  • Volúmenes persistentes de Docker
  • Variables de entorno y claves de cifrado

¿Qué es n8n con Docker Compose?

Docker Compose te permite definir y gestionar varios contenedores mediante un único archivo compose.yaml. En lugar de iniciar n8n, PostgreSQL y Traefik por separado, describes todo el conjunto de servicios en una sola configuración.

Con Docker Compose, puedes iniciar todo el entorno de n8n con un único comando:

docker compose up -d

La opción -d ejecuta los contenedores en segundo plano, lo que permite que n8n siga funcionando después de desconectarte del VPS.

La documentación oficial de n8n sobre Docker Compose también ofrece un ejemplo de despliegue con almacenamiento persistente, Traefik y HTTPS.

¿Por qué ejecutar n8n con Docker en un VPS?

Ejecutar n8n en un VPS proporciona un entorno siempre disponible para los flujos de trabajo que necesitan funcionar de forma continua. También te ofrece más control que ejecutar n8n localmente o utilizar un entorno de alojamiento con limitaciones.

Las principales ventajas incluyen:

  • Ejecución de flujos de trabajo las 24 horas: Los flujos de trabajo programados pueden ejecutarse incluso cuando tu ordenador está apagado.
  • Disponibilidad de webhooks: Las aplicaciones externas pueden enviar datos a un endpoint HTTPS público.
  • Control sobre tus datos: Tú decides dónde se alojan la aplicación y su base de datos.
  • Recursos de servidor asignados: Tu instancia de n8n utiliza la CPU, la memoria y el almacenamiento incluidos en tu VPS.
  • Almacenamiento persistente: Los flujos de trabajo, las credenciales y los datos de ejecución siguen disponibles después de reiniciar los contenedores.
  • Configuración flexible: Puedes cambiar variables de entorno, instalar herramientas adicionales y configurar el servidor según tu carga de trabajo.
  • Actualizaciones más sencillas: Las imágenes de Docker pueden actualizarse sin reinstalar manualmente toda la aplicación.

Un VPS para n8n autoalojado es especialmente adecuado para desarrolladores, administradores de sistemas, profesionales de la automatización y equipos técnicos familiarizados con la gestión de servidores Linux.

¿Qué necesitas antes de desplegar n8n con Docker?

Para realizar un despliegue manual, necesitarás:

  • Un VPS Linux con recursos suficientes para tus flujos de trabajo
  • Acceso root o sudo
  • Docker Engine y Docker Compose
  • Un dominio o subdominio que apunte al VPS
  • Conocimientos básicos de SSH y comandos de Linux
  • Un plan para la seguridad del servidor, las actualizaciones, la monitorización y las copias de seguridad

En Time4VPS, nuestros planes de VPS Linux ofrecen acceso root completo y recursos de servidor escalables. Esto te permite configurar el entorno de n8n con Docker según tus necesidades.

Despliega n8n con Docker más rápido con Time4VPS

Si no quieres configurar manualmente todos los servicios de n8n con Docker Compose, Time4VPS ofrece una plantilla de despliegue de n8n para un VPS autogestionado.

La plantilla utiliza Ubuntu 24.04 y Docker, con n8n preinstalado. Prepara los principales componentes necesarios para empezar a utilizar tu instancia de n8n autoalojado, reduciendo el tiempo de configuración y el riesgo de errores.

Para instalar la plantilla:

  1. Inicia sesión en el área de clientes de Time4VPS.
  2. Abre Services → VPS.
  3. Selecciona Manage junto a tu VPS.
  4. Haz clic en Install OS.
  5. Elige n8n (Ubuntu 24.04, Docker) (64-bit).
  6. Confirma la instalación y espera a que termine el proceso.

La instalación suele tardar entre 10 y 20 minutos. Cuando termine, conéctate al servidor mediante SSH:

ssh root@your_server_ip

Sustituye your_server_ip por la dirección IP asignada a tu VPS.

Los datos de acceso generados automáticamente se guardan en:

/root/n8n_logins

Puedes consultarlos con:

cat /root/n8n_logins

Después de obtener las credenciales, abre el nombre de host asignado a tu servidor:

https://your_hostname.time4vps.cloud

Introduce las credenciales de acceso adicionales y, a continuación, crea la cuenta del propietario de tu panel de n8n. Encontrarás el proceso completo en nuestra guía de la plantilla de n8n de Time4VPS.

Cómo desplegar n8n manualmente con Docker Compose

La plantilla de Time4VPS es la opción más rápida, pero también puedes realizar tu propio despliegue si necesitas una configuración personalizada.

El siguiente ejemplo utiliza:

  • n8n
  • PostgreSQL
  • Traefik
  • Certificados HTTPS de Let’s Encrypt
  • Volúmenes persistentes de Docker

Paso 1: Apunta un subdominio a tu VPS

Crea un registro A en tu configuración DNS:

Tipo: A
Nombre: n8n
Valor: your_server_ip

En este ejemplo, n8n estará disponible en:

https://n8n.example.com

Los cambios en el DNS pueden tardar un tiempo en hacerse efectivos.

Paso 2: Conéctate al VPS

Conéctate mediante SSH:

ssh root@your_server_ip

Comprueba que Docker y Docker Compose estén disponibles:

docker –version
docker compose version

Si alguno de los comandos no está disponible, instala la versión compatible actual siguiendo las instrucciones oficiales de Docker para tu distribución de Linux.

Paso 3: Crea el directorio del proyecto

Crea un directorio independiente para el despliegue de n8n con Docker:

mkdir -p /opt/n8n
cd /opt/n8n

Crea un archivo de variables de entorno:

nano .env

Añade los siguientes valores:

N8N_HOST=n8n.example.com
GENERIC_TIMEZONE=Europe/Vilnius
[email protected]

POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=replace_with_a_long_random_password

N8N_ENCRYPTION_KEY=replace_with_a_long_random_encryption_key

Sustituye el dominio, la dirección de correo electrónico, la zona horaria y las contraseñas del ejemplo por tus propios valores.

Puedes generar valores aleatorios con:

openssl rand -hex 32

Ejecuta el comando por separado para la contraseña de PostgreSQL y la clave de cifrado de n8n. Después, restringe el acceso al archivo:

chmod 600 .env

Guarda la clave de cifrado en un lugar seguro. n8n la utiliza para cifrar las credenciales guardadas, por lo que perderla o cambiarla de forma inesperada puede hacer que esas credenciales dejen de funcionar.

Paso 4: Crea el archivo de Docker Compose para n8n

Crea el archivo de Compose:

nano compose.yaml

Añade la siguiente configuración:

services: 
  postgres: 
    image: postgres:16 
    restart: unless-stopped 
    environment: 
      POSTGRES_DB: ${POSTGRES_DB} 
      POSTGRES_USER: ${POSTGRES_USER} 
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} 
    volumes: 
      – postgres_data:/var/lib/postgresql/data 
    healthcheck: 
      test: 
        – CMD-SHELL 
        – pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB} 
      interval: 5s 
      timeout: 5s 
      retries: 10 
    networks: 
      – internal 
 
  n8n: 
    image: docker.n8n.io/n8nio/n8n:stable 
    restart: unless-stopped 
    environment: 
      DB_TYPE: postgresdb 
      DB_POSTGRESDB_HOST: postgres 
      DB_POSTGRESDB_PORT: 5432 
      DB_POSTGRESDB_DATABASE: ${POSTGRES_DB} 
      DB_POSTGRESDB_USER: ${POSTGRES_USER} 
      DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD} 
 
      N8N_HOST: ${N8N_HOST} 
      N8N_PORT: 5678 
      N8N_PROTOCOL: https 
      N8N_WEBHOOK_URL: https://${N8N_HOST}/ 
      N8N_PROXY_HOPS: 1 
 
      GENERIC_TIMEZONE: ${GENERIC_TIMEZONE} 
      TZ: ${GENERIC_TIMEZONE} 
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY} 
      N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: «true» 
    volumes: 
      – n8n_data:/home/node/.n8n 
    depends_on: 
      postgres: 
        condition: service_healthy 
    labels: 
      – «traefik.enable=true» 
      – «traefik.docker.network=n8n_proxy» 
      – «traefik.http.routers.n8n.rule=Host(`${N8N_HOST}`)» 
      – «traefik.http.routers.n8n.entrypoints=websecure» 
      – «traefik.http.routers.n8n.tls=true» 
      – «traefik.http.routers.n8n.tls.certresolver=letsencrypt» 
      – «traefik.http.services.n8n.loadbalancer.server.port=5678» 
    networks: 
      – internal 
      – proxy 
 
  traefik: 
    image: traefik:v3 
    restart: unless-stopped 
    command: 
      – «–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.letsencrypt.acme.tlschallenge=true» 
      – «–certificatesresolvers.letsencrypt.acme.email=${SSL_EMAIL}» 
      – «–certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json» 
    ports: 
      – «80:80» 
      – «443:443» 
    volumes: 
      – traefik_data:/letsencrypt 
      – /var/run/docker.sock:/var/run/docker.sock:ro 
    networks: 
      – proxy 
 
volumes: 
  postgres_data: 
  n8n_data: 
  traefik_data: 
 
networks: 
  internal: 
    name: n8n_internal 
  proxy: 
    name: n8n_proxy 
 

El valor N8N_WEBHOOK_URL indica a n8n qué dirección pública deben utilizar los servicios externos para los webhooks. Como Traefik actúa como proxy inverso, N8N_PROXY_HOPS se establece en 1. Estos ajustes siguen las recomendaciones actuales de n8n para la configuración de un proxy inverso.

Paso 5: Comprueba la configuración

Antes de iniciar los contenedores, valida la configuración:

docker compose config

Si el comando muestra la configuración resuelta sin errores, descarga las imágenes necesarias:

docker compose pull

Inicia el conjunto de servicios de n8n con Docker Compose:

docker compose up -d

Comprueba el estado de los contenedores:

docker compose ps

Los tres servicios deberían estar en ejecución. Puedes consultar los registros de n8n con:

docker compose logs –tail=100 n8n

Para seguir las nuevas entradas de los registros en tiempo real, utiliza:

docker compose logs -f n8n

Pulsa Ctrl + C para dejar de seguir los registros. Esto no detiene el contenedor de n8n.

Paso 6: Configura el cortafuegos

Tu VPS debe permitir el tráfico SSH, HTTP y HTTPS. En Ubuntu con UFW, los comandos son:

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status

Comprueba que el acceso SSH funcione correctamente antes de activar el cortafuegos. De lo contrario, podrías bloquear tu propio acceso al servidor.

Paso 7: Abre n8n

Visita el subdominio que hayas elegido:

https://n8n.example.com

Traefik solicitará el certificado HTTPS y n8n mostrará la pantalla de configuración de la cuenta del propietario. Crea tu cuenta antes de conectar aplicaciones o activar flujos de trabajo.

Cómo actualizar n8n con Docker

Antes de actualizar, realiza una copia de seguridad de tu base de datos, los datos persistentes y la configuración. También debes revisar las notas de la versión de n8n para detectar cambios que puedan afectar al funcionamiento o a la compatibilidad.

Para descargar la imagen actual y volver a crear el contenedor, ejecuta:

cd /opt/n8n
docker compose pull
docker compose up -d
docker compose ps

Docker Compose conserva los volúmenes con nombre, pero esto no sustituye una estrategia adecuada de copias de seguridad.

Puedes crear una exportación básica de la base de datos PostgreSQL con:

mkdir -p /root/n8n-backups

docker compose exec -T postgres \
sh -c ‘pg_dump -U «$POSTGRES_USER» «$POSTGRES_DB»‘ \
>/root/n8n-backups/n8n-$(date +%F).sql

Tu plan de copias de seguridad debe incluir:

  • La base de datos PostgreSQL
  • El volumen persistente de n8n
  • El archivo .env
  • La clave de cifrado de n8n
  • Todos los archivos locales utilizados por los flujos de trabajo

Prueba el procedimiento de restauración antes de utilizar el entorno para flujos de trabajo importantes.

Autoalojado no significa totalmente gestionado

Tanto si despliegas n8n con Docker manualmente como si eliges la plantilla de Time4VPS, el VPS sigue siendo autogestionado.

Eres responsable de:

  • La administración del servidor Linux
  • Las actualizaciones de n8n y del sistema operativo
  • La configuración del cortafuegos y de SSH
  • La monitorización del uso de recursos
  • La protección de las credenciales y las claves de cifrado
  • La configuración y verificación de las copias de seguridad
  • El mantenimiento de los flujos de trabajo y las integraciones
  • La resolución de problemas de n8n y de los servicios conectados

Time4VPS proporciona la infraestructura VPS y la plantilla de despliegue de n8n, pero no ofrece un servicio de n8n totalmente gestionado.

Preguntas frecuentes

¿Cuál es la diferencia entre n8n con Docker y n8n con Docker Compose?

Docker puede ejecutar un contenedor individual de n8n. Docker Compose define y gestiona varios servicios relacionados, como n8n, PostgreSQL y Traefik, mediante un único archivo de configuración.

¿Puede n8n con Docker funcionar de forma continua en un VPS?

Sí. Un VPS puede mantener el contenedor de n8n en funcionamiento las 24 horas, lo que permite que los flujos de trabajo programados y los webhooks funcionen sin depender de tu ordenador personal.

¿Necesito un dominio para utilizar n8n con Docker?

Se recomienda un dominio o subdominio para un despliegue manual accesible públicamente, ya que proporciona una dirección estable para HTTPS y webhooks. También puedes acceder a la plantilla de n8n de Time4VPS mediante el nombre de host asignado al VPS.

¿El VPS de n8n de Time4VPS es gestionado?

No. La plantilla de n8n de Time4VPS se instala en un VPS autogestionado. n8n está preinstalado, pero sigues siendo responsable de la administración del servidor, la seguridad, las actualizaciones, las copias de seguridad y la gestión de los flujos de trabajo.

¿Por qué utilizar la plantilla de n8n de Time4VPS?

La plantilla reduce el número de pasos de instalación manual necesarios para poner en marcha n8n con Docker. Es adecuada para quienes quieren empezar con un entorno preparado y conservar el control completo sobre su VPS y la configuración de n8n.

Pon en marcha tu VPS para n8n autoalojado con Time4VPS

Un despliegue de n8n con Docker correctamente configurado proporciona un entorno flexible para ejecutar flujos de trabajo, recibir webhooks y conectar aplicaciones. Docker Compose facilita la organización de los distintos componentes, mientras que un VPS mantiene tu plataforma de automatización disponible de forma continua.

Con la plantilla de n8n de Time4VPS, puedes evitar gran parte del trabajo de instalación inicial y empezar con n8n ya desplegado en un entorno Docker sobre Ubuntu 24.04. Elige un plan de VPS, instala la plantilla de n8n y empieza a crear tus flujos de trabajo de automatización con n8n autoalojado.

¡Empieza a trabajar en tu proyecto hoy mismo!

¡Con nuestras soluciones fáciles de instalar y un soporte al cliente excepcional, tu VPS estará en funcionamiento en solo 10 minutos!

Elige tu plan