eco Principiante Tutorial/Cómo hacer

8n en VPS: instalación con Docker

calendar_month May 09, 2026 schedule 9 min de lectura visibility 49 vistas
Развёртывание n8n на VPS: установка через Docker, настройка PostgreSQL и SSL для автоматизации процессов
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Despliegue de n8n en VPS: instalación mediante Docker, configuración de PostgreSQL y SSL para la automatización de procesos

TL;DR

En esta guía, analizaremos el proceso de creación de su propia plataforma independiente para la automatización de procesos de negocio basada en n8n. Renunciaremos al uso de la base de datos integrada SQLite en favor de la eficiente PostgreSQL, configuraremos la obtención automática de certificados SSL a través del servidor proxy inverso Caddy y empaquetaremos todo en contenedores Docker para facilitar la gestión y las actualizaciones. Como resultado, obtendrá una herramienta potente capaz de sustituir las costosas suscripciones a Zapier o Make, manteniendo el control total sobre sus datos.

  • Stack tecnológico: Docker, Docker Compose, PostgreSQL 17, Caddy 2.7+, n8n.
  • Seguridad: HTTPS automático (Let's Encrypt), aislamiento de contenedores, configuración de Firewall.
  • Rendimiento: Optimización de PostgreSQL para las tareas de colas de n8n.
  • Fiabilidad: Configuración de copias de seguridad automáticas de la base de datos y archivos de configuración.
  • Tiempo de implementación: 30-40 minutos con un servidor listo.

1. Qué estamos configurando y por qué: n8n como centro de control de automatización

Esquema: 1. Qué estamos configurando y por qué: n8n como centro de control de automatización
Esquema: 1. Qué estamos configurando y por qué: n8n como centro de control de automatización

La automatización de procesos en 2026 se ha convertido en un estándar no solo para las grandes empresas, sino también para los desarrolladores individuales. n8n es una herramienta de automatización de flujos de trabajo extensible que utiliza el enfoque "fair-code". A diferencia de las plataformas en la nube cerradas, n8n permite diseñar visualmente cadenas de acciones complejas (workflows), integrando cientos de servicios a través de API.

Por qué una solución self-hosted en su propio VPS supera a los análogos en la nube (Zapier, Make, Pipedream):

  • Sin límites en el número de pasos: Solo paga por los recursos del servidor, no por cada ejecución del escenario.
  • Privacidad de datos: Sus claves API, datos personales de clientes y secretos corporativos no salen de su servidor.
  • Flexibilidad: Posibilidad de escribir sus propios nodos (nodes) en JavaScript e integrarse con bases de datos internas ubicadas en la misma red local.
  • Estabilidad: No depende de cambios en la política de tarifas o de la desconexión repentina de servicios en su región.

En este tutorial, crearemos una configuración de nivel industrial. No utilizaremos la instalación estándar a través de npm, ya que es difícil de actualizar y gestionar dependencias. En su lugar, aplicaremos Docker; esto garantizará el aislamiento de los componentes y permitirá trasladar todo el sistema a otro servidor en cuestión de minutos.

2. Qué configuración de VPS se necesita para esta tarea

Esquema: 2. Qué configuración de VPS se necesita para esta tarea
Esquema: 2. Qué configuración de VPS se necesita para esta tarea

n8n es una aplicación de Node.js que puede ser bastante exigente con la memoria RAM, especialmente al procesar grandes volúmenes de datos (JSON con miles de líneas o trabajo con archivos binarios). PostgreSQL también requiere recursos dedicados para el almacenamiento en caché de consultas.

Característica Requisitos mínimos Recomendados (Producción)
CPU 1 Núcleo (Compartido) 2 Núcleos (Dedicados)
RAM 2 GB 4 GB - 8 GB
Disco 20 GB SSD 50 GB+ NVMe
SO Ubuntu 24.04 LTS Ubuntu 24.04 / 26.04 LTS

Para un funcionamiento estable del sistema, especialmente si planea ejecutar más de 10 flujos de trabajo activos simultáneamente, lo mejor es adquirir un VPS adecuado con 4 GB de RAM. Esto proporcionará un margen de seguridad durante las cargas máximas, cuando se ejecutan varios escenarios pesados al mismo tiempo.

Ubicación del servidor: Elija la región más cercana posible a los servicios con los que se integra con más frecuencia. Si la mayoría de sus solicitudes se dirigen a API europeas, elija centros de datos en Ámsterdam, Frankfurt o Varsovia para minimizar la latencia.

3. Preparación del servidor: seguridad básica y utilidades del sistema

Esquema: 3. Preparación del servidor: seguridad básica y utilidades del sistema
Esquema: 3. Preparación del servidor: seguridad básica y utilidades del sistema

Antes de instalar n8n, es necesario preparar el entorno. Utilizaremos Ubuntu 24.04 o 26.04. En primer lugar, actualizaremos los paquetes y configuraremos la protección básica.


# Actualizamos la lista de paquetes e instalamos actualizaciones
sudo apt update && sudo apt upgrade -y

# Instalamos las utilidades del sistema necesarias
sudo apt install -y curl wget git software-properties-common ufw fail2ban
    

La configuración del firewall (UFW) es de vital importancia. Necesitamos abrir los puertos para SSH (por defecto 22), HTTP (80) y HTTPS (443). Todos los demás puertos deben estar cerrados para la red externa.


# Permitimos los puertos estándar
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Activamos el firewall
sudo ufw enable
    

También se recomienda crear un usuario independiente con privilegios sudo para no trabajar como root. Esto reduce los riesgos al ejecutar accidentalmente comandos destructivos.


# Creamos el usuario (reemplace 'deploy' por su nombre)
adduser deploy
# Añadimos al grupo sudo
usermod -aG sudo deploy
    

4. Instalación de Docker y Docker Compose (versiones actuales 2026)

Esquema: 4. Instalación de Docker y Docker Compose (versiones actuales 2026)
Esquema: 4. Instalación de Docker y Docker Compose (versiones actuales 2026)

En 2026, Docker Compose es un complemento integrado de Docker (comando docker compose sin guion). Utilizaremos el repositorio oficial de Docker para obtener las versiones más recientes del software.


# Añadimos la clave GPG oficial de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Añadimos el repositorio a la lista de fuentes de apt
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instalamos Docker Engine y el complemento Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Verificamos la instalación
docker --version
docker compose version
    

Añadiremos a nuestro usuario al grupo docker para ejecutar contenedores sin usar constantemente sudo:


sudo usermod -aG docker $USER
# Para que los cambios surtan efecto, vuelva a iniciar sesión o ejecute:
newgrp docker
    

5. Diseño de la arquitectura: Docker Compose y variables de entorno

Esquema: 5. Diseño de la arquitectura: Docker Compose y variables de entorno
Esquema: 5. Diseño de la arquitectura: Docker Compose y variables de entorno

Crearemos una estructura de directorios que permitirá gestionar fácilmente el proyecto y realizar copias de seguridad. La idea principal es separar la configuración (variables de entorno) y la descripción de la infraestructura (archivo YAML).


# Creamos el directorio de trabajo
mkdir -p ~/n8n-stack && cd ~/n8n-stack

# Creamos carpetas para los volúmenes de datos
mkdir -p n8n_data postgres_data caddy_data caddy_config
    

Ahora crearemos el archivo .env. Es el "cerebro" de nuestra configuración. Aquí se almacenan contraseñas, nombres de dominio y configuraciones de correo. Nunca entregue este archivo a terceros.


# Archivo ~/.env
DOMAIN_NAME=n8n.your-domain.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Moscow

# Configuración de PostgreSQL
POSTGRES_USER=n8n_user
POSTGRES_PASSWORD=your_strong_password_here
POSTGRES_DB=n8n_db

# Configuración de n8n
N8N_ENCRYPTION_KEY=make_a_random_string_here
WEBHOOK_URL=https://n8n.your-domain.com/
    

Consejo: Para generar N8N_ENCRYPTION_KEY, utilice el comando openssl rand -hex 24. Esta clave se utiliza para cifrar sus credenciales en la base de datos de n8n. Si la pierde, no podrá recuperar el acceso a las claves API guardadas.

6. Configuración de n8n y PostgreSQL: inmersión profunda en los archivos de configuración

6. Configuración de n8n y PostgreSQL: inmersión profunda en los archivos de configuración

Esquema: 6. Configuración de n8n y PostgreSQL: inmersión profunda en los archivos de configuración
Esquema: 6. Configuración de n8n y PostgreSQL: inmersión profunda en los archivos de configuración

Ahora crearemos el archivo docker-compose.yaml. Utilizaremos la imagen oficial de n8n y PostgreSQL 17. También añadiremos el reinicio automático de los contenedores en caso de fallo o reinicio del servidor.


services:
  postgres:
    image: postgres:17-alpine
    restart: always
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 5s
      timeout: 5s
      retries: 5

  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    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_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - WEBHOOK_URL=${WEBHOOK_URL}
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - ./n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

  caddy:
    image: caddy:2-alpine
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy_data:/data
      - ./caddy_config:/config
    depends_on:
      - n8n
    

En esta configuración, hemos mapeado el puerto de n8n solo a 127.0.0.1. Esto significa que no se puede acceder a n8n directamente desde Internet, lo que aumenta la seguridad. Todo el tráfico pasará a través de Caddy.

7. Configuración de SSL y proxy inverso a través de Caddy

Esquema: 7. Configuración de SSL y proxy inverso a través de Caddy
Esquema: 7. Configuración de SSL y proxy inverso a través de Caddy

Caddy es un servidor web moderno que obtiene y renueva automáticamente los certificados SSL de Let's Encrypt o ZeroSSL. Su configuración (Caddyfile) es mucho más sencilla que la de Nginx.

Cree un archivo Caddyfile en el mismo directorio:


{
    email [email protected]
}

n8n.your-domain.com {
    reverse_proxy n8n:5678 {
        flush_interval -1
    }
}
    

El parámetro flush_interval -1 es importante para n8n, ya que utiliza Server-Sent Events (SSE) para transmitir datos sobre el estado del flujo de trabajo en tiempo real. Sin este ajuste, la interfaz puede experimentar retrasos o mostrar desconexiones.

Ejecución del stack:


# Запускаем все сервисы в фоновом режиме
docker compose up -d

# Проверяем логи, если что-то пошло не так
docker compose logs -f n8n
    

Ahora puede ir a la dirección https://n8n.your-domain.com y ver la ventana de configuración inicial de n8n. Cree el primer usuario (administrador) y asegúrese de guardar la contraseña.

8. Copias de seguridad y mantenimiento: estrategia de supervivencia de datos

Esquema: 8. Copias de seguridad y mantenimiento: estrategia de supervivencia de datos
Esquema: 8. Copias de seguridad y mantenimiento: estrategia de supervivencia de datos

El auto-hospedaje conlleva la responsabilidad de la seguridad de los datos. En n8n, es necesario hacer copias de seguridad de tres cosas:

  1. Base de datos PostgreSQL (todos sus flujos de trabajo, historial de ejecuciones, credenciales).
  2. Archivos en .n8n (claves de cifrado, si no se definen mediante env, y datos binarios).
  3. Archivos de configuración (.env, docker-compose.yaml, Caddyfile).

Ejemplo de un script sencillo para la copia de seguridad de la base de datos (backup.sh):


#!/bin/bash
# Настройки
BACKUP_DIR="/home/deploy/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
source /home/deploy/n8n-stack/.env

mkdir -p $BACKUP_DIR

# Дамп базы данных
docker compose -f /home/deploy/n8n-stack/docker-compose.yaml exec -t postgres pg_dump -U $POSTGRES_USER $POSTGRES_DB > $BACKUP_DIR/n8n_db_$TIMESTAMP.sql

# Удаление старых бэкапов (старше 7 дней)
find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -delete
    

Añada este script a cron para que se ejecute cada noche:


# Открываем редактор cron
crontab -e
# Добавляем строку (запуск в 3 часа ночи)
0 3 * * * /bin/bash /home/deploy/n8n-stack/backup.sh
    

Actualización de n8n: Gracias a Docker, la actualización se reduce a tres comandos:


docker compose pull
docker compose up -d
docker image prune -f
    

9. Troubleshooting + FAQ: solución de problemas comunes

¿Por qué n8n consume demasiada memoria RAM?

Node.js, por defecto, puede intentar ocupar toda la memoria disponible. Si tiene un VPS con 2 GB de RAM, añada en environment la variable NODE_OPTIONS: --max-old-space-size=1536. Esto limitará el uso de memoria del proceso Node.js a 1.5 GB, dejando espacio para PostgreSQL y el sistema.

Error "Database is not migration-ready"

Suele ocurrir al intentar actualizar n8n a través de varias versiones mayores a la vez. Se recomienda actualizar de forma secuencial o realizar un volcado completo de la base de datos antes de la actualización. También verifique los registros de PostgreSQL; es posible que la base de datos se haya quedado sin espacio en el disco para ejecutar las migraciones.

¿Cómo conectar n8n a una base de datos local en el mismo servidor?

Si tiene otra base de datos fuera de Docker, utilice la dirección IP de la puerta de enlace de Docker (normalmente 172.17.0.1) para la conexión. No olvide configurar pg_hba.conf en PostgreSQL para permitir conexiones desde la subred de Docker.

¿Qué configuración de VPS es el mínimo aceptable?

Como mínimo, puede ejecutar n8n con 1 vCPU y 2 GB de RAM. Sin embargo, en esta configuración conviene desactivar el guardado del historial de ejecuciones (Execution History) para los lanzamientos exitosos, para no inflar la base de datos ni sobrecargar el disco. Para un funcionamiento fluido y escenarios complejos, 4 GB de RAM es el estándar para 2026.

¿Qué elegir: VPS o dedicado para esta tarea?

Para el 95% de las tareas de automatización, un VPS es suficiente. Un servidor dedicado (Dedicated) solo tiene sentido si planea usar n8n como una herramienta ETL para transferir terabytes de datos diariamente, donde la velocidad de las operaciones de disco y la ausencia de "vecinos ruidosos" en el procesador son críticas.

Problemas con Webhook: n8n devuelve 404 o tiempo de espera agotado

Asegúrese de que la variable WEBHOOK_URL en .env coincida exactamente con su dominio e incluya https://. Si utiliza webhooks de prueba, recuerde que solo funcionan cuando tiene abierta la pestaña con ese flujo de trabajo en el navegador.

10. Conclusiones y próximos pasos para el desarrollo del sistema

Hemos desplegado un entorno de automatización seguro y tolerante a fallos. Ahora dispone de una potente herramienta que le pertenece por completo. El uso de PostgreSQL en lugar de SQLite permitirá que el sistema escale hasta cientos de miles de ejecuciones al mes, mientras que Caddy proporcionará un cifrado fiable sin intervención manual.

Hacia dónde seguir:

  • Integración con monitoreo: Configure Prometheus y Grafana para rastrear la carga de CPU y memoria de su stack de n8n.
  • Colas de tareas: En caso de cargas muy elevadas, considere cambiar n8n al modo Queue Mode utilizando Redis y contenedores Worker independientes.
  • Seguridad: Configure la autenticación de dos factores (2FA) en el panel de n8n y limite el acceso al panel de administración mediante filtros de IP en el Caddyfile.

Recomendación práctica: comience automatizando tareas rutinarias sencillas, como recopilar notificaciones de diferentes servicios en un solo canal de Telegram, y pase gradualmente a cadenas de negocio complejas con procesamiento de datos.

¿Te fue útil esta guía?

despliegue de n8n en vps: instalación mediante docker, configuración de postgresql y ssl para la automatización de procesos
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.