Instalar N8N en VPS: guía paso a paso (Hostinger, Docker, PostgreSQL y dominio HTTPS) para un despliegue profesional

Instalar N8N en VPS: guía paso a paso (Hostinger, Docker, PostgreSQL y dominio HTTPS) para un despliegue profesional

Si buscas instalar N8N en VPS y olvidarte de límites, esta guía es para ti. Desplegar N8N en un VPS propio te da control total, ahorro frente a N8N Cloud, escalabilidad real y más seguridad. Aquí lo haremos con Docker y docker-compose, base de datos PostgreSQL (no SQLite en producción), dominio propio y HTTPS con Let’s Encrypt. Usaremos un VPS de Hostinger y un panel de aplicaciones (Doploy; alternativa: EasyPanel) para simplificar el despliegue.

En pocas palabras: montaje profesional, reproducible y listo para crecer. Sigue leyendo.

Tiempo de lectura estimado

12–15 minutos

Puntos clave

  • Producción real: N8N en Docker + PostgreSQL, dominio propio y HTTPS automático con Let’s Encrypt.
  • Rendimiento: concurrencia controlada, pruning de ejecuciones y límites de memoria para evitar caídas.
  • Escalabilidad: modo cola (Redis + workers), separación de componentes y redes internas seguras.
  • Seguridad: firewall mínimo, versiones ancladas, backups lógicos y snapshots antes de cambios.
  • IA lista: añade PGVector o Qdrant para memorias y búsquedas semánticas en tus agentes.
  • Ahorro y control: despliegue reproducible, fácil de mantener y con crecimiento sin fricción.

Tabla de contenidos

Requisitos previos y arquitectura deseada

Antes de tocar el servidor, deja clara la arquitectura. Definir bien tu objetivo y límites reduce errores y retrabajo. En términos prácticos, “definir” significa fijar lo que es y lo que no es una cosa, para que todos entendamos lo mismo; puedes contrastar la definición en Cambridge o revisar otra definición en Dictionary.com, y su explicación en Wikipedia.

Requisitos:

  • Cuenta en un proveedor de VPS (usaremos Hostinger como ejemplo).
  • Dominio propio y acceso al panel DNS de tu dominio.
  • Nociones básicas de DNS (crear un CNAME).
  • Correo válido para activar N8N y recibir avisos.
  • API keys (por ejemplo, OpenAI API) si vas a montar agentes de IA más adelante.

Arquitectura de referencia:

  • N8N en contenedor Docker.
  • PostgreSQL como base de datos de N8N (evitamos SQLite en producción para estabilidad y concurrencia).
  • Dominio propio con HTTPS (certificados SSL de Let’s Encrypt).
  • Servicios complementarios opcionales en el mismo VPS o en otro:
    • PostgreSQL adicional con extensión PGVector para memorias/IA.
    • Qdrant (base de datos vectorial), Evolution API (WhatsApp), Redis, etc.

“Lo que no se define, no se puede medir ni mejorar.” Establece límites y metas desde el inicio para minimizar retrabajo.

Sigue bajando: elegiremos el plan de VPS ideal y lo dejaremos listo en minutos.

Elegir y preparar el VPS en Hostinger

Para automatizaciones con N8N, el plan KVM2 de Hostinger suele dar el mejor equilibrio de recursos y precio. Con 2 vCPU y memoria suficiente para flujos medianos, es un punto de partida sólido con margen de escalado.

Qué mirar al elegir:

  • Procesador e I/O: AMD EPYC y discos SSD NVMe; latencia baja y tiempos de respuesta estables incluso con múltiples flujos.
  • Ubicación: elige el centro de datos más cercano a tus usuarios/sistemas para bajar la latencia.
  • Copias de seguridad: activa backups semanales (incluidos), considera snapshots antes de cambios grandes y evalúa backups diarios según criticidad.
  • Contratación: 12 o 24 meses suelen abaratar el costo. Si tienes cupón, mejor.
  • Escalado sin fricción: cuando la carga suba, pasa al siguiente plan sin reinstalar todo.

Consejo: anota tus límites objetivo (memoria, concurrencia, tamaño de base de datos). Así sabrás cuándo escalar sin esperar a que algo se caiga.

Próximo paso: instalar el panel y preparar el servidor.

Instalar el panel y preparar el servidor

En la creación del VPS en Hostinger:

  • Selecciona “Sistema operativo con panel” y elige Doploy. Alternativa: EasyPanel si ya lo conoces.
  • Establece la contraseña de root y lanza el aprovisionamiento. El panel desplegará Docker, docker-compose y una interfaz web para tus servicios.

Primer acceso y mantenimiento:

  • Entra al panel (URL y credenciales que te da Hostinger).
  • Haz una actualización inicial del panel y de las plantillas. Repite esto al menos 1 vez al mes para parches de seguridad.
  • Reglas básicas de firewall: deja abiertos únicamente los puertos necesarios (HTTP/HTTPS y los que use el panel). El resto, cerrados por defecto.

Listo el panel, toquemos N8N.

Despliegue de N8N con PostgreSQL usando plantillas

Crear el proyecto y usar una plantilla

  • En el panel (Doploy): crea un proyecto nuevo.
  • Create Service > Template > elige la plantilla de N8N con PostgreSQL.
  • Evita la versión “N8N con SQLite” para producción; SQLite se degrada cuando crecen los flujos y la concurrencia.

Revisión del docker-compose generado

Verás servicios como:

  • n8n: la app principal.
  • postgres: base de datos PostgreSQL dedicada a N8N.
  • volúmenes: para persistir datos (base de datos y archivos de N8N).
  • puertos: generalmente 5678 interno para N8N; el panel suele manejar el proxy reverso y TLS.

Comprueba:

  • Volúmenes montados (para no perder nada tras un reinicio).
  • Dependencias: n8n depende de postgres.
  • Healthchecks: opcional pero útil para reinicios automáticos si algo falla.

Variables de entorno clave para producción

Estas variables marcan la diferencia entre un demo y un despliegue profesional. Ajusta según tu carga:

Ejecuciones (pruning y guardado):

  • EXECUTIONS_DATA_SAVE_ON_ERROR: true para depurar fallos clave.
  • EXECUTIONS_DATA_SAVE_ON_SUCCESS: false o “none” para no inflar la base.
  • EXECUTIONS_DATA_MAX_AGE: por ejemplo 14d (borra ejecuciones viejas).
  • EXECUTIONS_DATA_PRUNE: true para activar la poda automática.
  • EXECUTIONS_DATA_PRUNE_MAX_COUNT: un tope de seguridad (por ejemplo 10.000).

Rendimiento y estabilidad:

  • N8N_CONCURRENCY (o N8N_CONCURRENCY_PRODUCTION_LIMIT): empieza con 5–10 en KVM2; sube con pruebas.
  • NODE_ENV=production: habilita optimizaciones de producción.

Memoria:

  • N8N_MEMORY_LIMIT o MAX_OLD_SPACE_SIZE: reserva memoria para Node.js. En un VPS con 4 GB, asigna 1024–2048 MB a N8N para evitar OOM. Recuerda dejar espacio a PostgreSQL y al sistema.

Zona horaria:

  • TZ: define tu zona (ej. Europe/Madrid o America/Mexico_City) para triggers y logs coherentes.

Base URL y webhooks:

  • N8N_HOST: tu subdominio (ej. automatiza.midominio.com).
  • N8N_PROTOCOL: https.
  • WEBHOOK_URL: la URL pública completa para webhooks; debe coincidir con tu dominio y protocolo.

Estas “definiciones” precisas evitan ambigüedades y errores de OAuth/webhooks.

Deploy y verificación de logs

  • Haz Deploy desde el panel.
  • Abre los logs de n8n y postgres:
    • n8n debe mostrar “Migrations finished” y “Editor is now accessible”.
    • postgres debe iniciar sin errores de autenticación.
  • Entra a la URL temporal del servicio (la que da el panel) y crea el usuario administrador con tu correo.

¿Abre, pero sin dominio propio aún? Perfecto. En el siguiente paso lo conectamos y activamos HTTPS.

Configurar dominio y HTTPS (Let’s Encrypt)

Crear CNAME en el DNS

  • En el DNS de tu dominio, crea un CNAME:
    • Nombre/host: el subdominio que quieres (por ejemplo, automatiza).
    • Valor: el dominio público del servicio N8N que te muestra el panel (suele ser algo como n8n-proyecto.tu-panel.app).
  • TTL: 5–15 minutos para propagación rápida. Espera a que resuelva correctamente.

Asignar el host personalizado y emitir certificados SSL

  • En el servicio N8N (dentro del panel), añade el “Custom Domain” con tu subdominio (automatiza.midominio.com).
  • Activa HTTPS con Let’s Encrypt:
    • El panel solicitará y renovará automáticamente el certificado SSL.
    • Si falla: revisa que el CNAME apunte exacto, no existan A/AAAA en conflicto, y que el puerto 80/443 estén accesibles.

Ajustar variables N8N_HOST/WEBHOOK_URL y redeploy

  • Actualiza N8N_HOST con tu dominio y N8N_PROTOCOL=https.
  • Ajusta WEBHOOK_URL a la URL final con https.
  • Redeploy. Prueba el editor en https://automatiza.midominio.com y ejecuta un webhook de prueba.

Nota clave: HTTPS es obligatorio para credenciales OAuth (Google Drive, Gmail, etc.). Muchos proveedores rechazan callbacks sin TLS válido. Sin HTTPS activo, los “callback URLs” no coinciden y OAuth no funciona.

Transición: con el dominio y SSL listos, tu N8N ya puede recibir webhooks públicos y autenticar con Google, Slack y más. Falta un toque final que te dará funciones avanzadas sin coste.

Activar el plan Community de N8N (opcional pero recomendado)

  • Pide la licencia gratuita “Community” de N8N con tu email corporativo.
  • En N8N: Settings > Enter Activation Key e introduce la clave.
  • Beneficios: carpetas, mejoras de UI/UX y características útiles para equipos pequeños sin pasar por caja.

Ya tienes N8N pro corriendo en un VPS con Docker, PostgreSQL, dominio y HTTPS. En la segunda parte optimizaremos concurrencia, límite de memoria y pruning de ejecuciones, veremos backups/snapshots, y añadiremos servicios como PGVector o Qdrant para agentes de IA. Sigue bajando cuando estés listo para afinar y escalar.

Buenas prácticas de producción y seguridad

Concurrencia controlada y modo cola

  • Empieza con un límite de concurrencia realista (5–10 en KVM2) y súbelo con métricas.
  • Si recibes picos o procesos largos, activa el modo cola (queue mode) para ejecutar peticiones en cola y evitar saturación. El modo cola usa Redis y permite añadir “workers” sin bloquear el editor.

Límite de memoria y procesos “pesados”

  • Define N8N_MEMORY_LIMIT o MAX_OLD_SPACE_SIZE para que un flujo no consuma toda la RAM.
  • Evita cargar datasets gigantes en un solo nodo. Prefiere paginación o procesar por lotes.
  • Reserva RAM para PostgreSQL y el sistema. Como regla simple: 50–60% para N8N, 20–30% para PostgreSQL y resto para OS/servicios.

Pruning de ejecuciones y tamaño de base de datos

  • Elige una edad máxima (por ejemplo 14–30 días) y un tope de conteo. Activa EXECUTIONS_DATA_PRUNE.
  • Guarda solo lo útil: on error sí, on success no. Así bajas el tamaño de la base, evitas I/O excesivo en SSD NVMe y mantienes baja latencia.

Backups y snapshots con estrategia clara

  • Backup lógico diario de PostgreSQL (pg_dump) y prueba de restauración mensual.
  • Snapshots del VPS antes de cambios grandes (actualizaciones, migraciones).
  • Definir con precisión qué cubre un backup y qué no reduce ambigüedades y errores en crisis; apóyate también en la definición tradicional para alinear criterios.

Actualizaciones y hardening

  • Actualiza imágenes Docker y el panel 1 vez al mes. Ancla versiones (tags) para despliegues reproducibles.
  • HTTPS forzado, contraseñas robustas y 2FA en el panel.
  • Firewall mínimo: abre solo 80/443 (proxy) y el puerto del panel. El resto, cerrado.
  • Registra cambios (changelog interno) y audita accesos.

Ubicación y rendimiento

  • Mantén servicios cerca de tus usuarios y fuentes de datos. Menos “saltos” = menos latencia.
  • Infraestructura con AMD EPYC y SSD NVMe ayuda a flujos con I/O intenso y tareas concurrentes.

Añadir servicios complementarios (ecosistema de automatizaciones)

PostgreSQL adicional con PGVector

  • Crea un servicio PostgreSQL aparte para tus apps (no mezcles con la base de N8N).
  • Usa una imagen con PGVector si planeas memorias/IA y búsquedas semánticas.
  • Conéctalo desde N8N con el host interno (nombre del servicio en Docker), puerto 5432 y credenciales del servicio.
  • Asegúrate de que N8N y PostgreSQL-IA estén en la misma red interna (networks) del panel.

Qdrant, Redis, Evolution API y más

  • Qdrant: base vectorial veloz, ideal para embeddings y recuperación semántica.
  • Redis: colas, cache, rate-limiting; clave si activas queue mode.
  • Evolution API (WhatsApp): para bots y notificaciones.
  • Añade otros componentes (MySQL, Redis, chatbot frameworks) usando templates del panel. Todos dentro de la red interna para máxima seguridad.

Nota breve sobre licencias

  • N8N es fair-code. Revisa condiciones de uso comercial antes de revender o empaquetar. Muchas piezas del stack son open source; combina de forma compatible con tus requisitos legales.

Ejemplo express: un agente de IA con memoria en PostgreSQL

Objetivo: un asistente que recuerde datos del usuario (nombre, preferencia) entre conversaciones.

Preparar la base de memoria

  • En tu PostgreSQL-IA, crea una tabla simple:
    • Tabla memories: id, user_id, key, value, updated_at.
  • Opcional: habilita PGVector y agrega una columna embedding para recuerdos semánticos.

Workflow en N8N (resumen)

  • Trigger: Webhook o node “Chat” con entrada de usuario.
  • Nodo PostgreSQL (Read): recupera recuerdos por user_id (ej., nombre, preferencias).
  • Nodo de “Set”/“Function”: construye el contexto (system prompt) con los recuerdos.
  • Nodo OpenAI (Chat): usa tu OpenAI API Key, con temperatura baja para respuestas estables.
  • Nodo PostgreSQL (Upsert): si el usuario dice “Mi nombre es Ana”, guarda/actualiza key=name, value=Ana.
  • Respuesta: devuelve el texto al usuario. En la próxima vuelta, el modelo ya recuerda.

Variante con PGVector

  • Agrega un nodo de embeddings (OpenAI Embeddings).
  • Guarda vector + texto en la base (PGVector o Qdrant).
  • Antes de responder, consulta por similitud y agrega los resultados relevantes como memoria contextual.

Buenas prácticas

  • Limita el prompt y la cantidad de recuerdos para no inflar latencias.
  • Pseudonimiza user_id si manejas datos sensibles.
  • Loguea tokens y latencia para saber si necesitas subir plan del VPS o activar queue mode.

Escalado y alternativas de despliegue

Modo cola (queue mode) y workers

  • Variables clave: habilita queue mode y añade Redis.
  • Arquitectura: un contenedor “main” (editor + orquestación) y N contenedores “worker”.
  • Beneficio: ejecutas decenas o cientos de flujos en paralelo, con control fino de concurrencia por worker.

Separación de componentes

  • Mueve PostgreSQL a otro VPS o servicio gestionado cuando:
    • La base supera decenas de GB, hay picos de escritura/lectura, o necesitas alta disponibilidad.
  • Aísla Qdrant/Redis en instancias propias si compiten por RAM/CPU con N8N.
  • Si la latencia entre N8N y tu base aumenta, acerca físicamente (misma región).

¿Cuándo preferir N8N Cloud?

  • No hay equipo DevOps, necesitas SLA y soporte 24/7, o compliance exigente.
  • Picos impredecibles que prefieres pagar como servicio, no administrar.
  • Aun así, esta guía de instalar N8N en VPS te da control y ahorro cuando el stack es estable.

Solución de problemas comunes

  • Error de conexión a PostgreSQL:
    • Usa el host interno (nombre del servicio), puerto 5432, misma red Docker.
    • Verifica usuario/contraseña y que el contenedor está healthy.
  • Certificado SSL no emite:
    • Revisa CNAME, elimina A/AAAA en conflicto, espera propagación DNS.
    • Asegura puertos 80/443 abiertos. Vuelve a solicitar Let’s Encrypt.
  • OAuth no funciona:
    • Comprueba N8N_HOST, N8N_PROTOCOL=https y WEBHOOK_URL exactos.
    • El callback en Google/Slack debe coincidir 1:1 con tu base URL.
  • Uso alto de RAM/CPU:
    • Baja N8N_CONCURRENCY, sube límite de memoria de container, aplica pruning.
    • Divide flujos grandes en subflujos y usa paginación.
  • Webhooks con timeout:
    • Aumenta timeouts del proxy, usa queue mode para tareas largas y responde pronto (ack + job).
  • Zona horaria incorrecta:
    • Ajusta TZ (ej. America/Mexico_City) y redeploy.
  • Logs vacíos o ruido excesivo:
    • Verifica niveles de log. Guarda solo lo útil, especialmente en producción.

Checklist final de instalación

  • VPS Hostinger creado (plan KVM2 recomendado), región cercana a tus usuarios.
  • Panel Doploy/EasyPanel instalado y actualizado; firewall básico aplicado.
  • N8N + PostgreSQL desplegados con docker-compose; volúmenes persistentes; healthchecks OK.
  • Variables de entorno ajustadas: N8N_HOST, N8N_PROTOCOL, WEBHOOK_URL, TZ, límites de memoria y concurrencia.
  • Dominio con CNAME al servicio; HTTPS activo con Let’s Encrypt (certificados SSL renovándose).
  • Pruning de ejecuciones configurado; backups diarios y snapshots antes de cambios.
  • (Opcional) N8N Community activado.
  • (Opcional) Servicios extra: PostgreSQL con PGVector, Qdrant, Redis, Evolution API; conectados por red interna.
  • Monitoreo básico: uso de CPU/RAM/disco, latencia y tamaño de base.

Cierre y próximos pasos

  • Descarga o crea plantillas (templates) de N8N para acelerar entregas repetitivas.
  • Integra Google Workspace, tu CRM, WhatsApp (Evolution API) y webhooks externos.
  • Agrega PGVector o Qdrant para agentes de IA con memoria real y búsquedas semánticas.
  • Considera queue mode y workers si crece la concurrencia. Escala el VPS o separa bases cuando haga falta.
  • Documenta tu arquitectura y límites. Una definición clara de alcance evita malentendidos técnicos y de negocio.

Conclusión

Con este paso a paso dejaste N8N en Docker con PostgreSQL, dominio propio y HTTPS sólido, listo para producción. Ajustaste concurrencia, memoria y pruning; definiste backups y abriste la puerta a servicios como PGVector o Qdrant. Es un despliegue profesional, reproducible y seguro. Cuando necesites más, activa queue mode, separa la base y escala sin drama. Si buscas control y ahorro, instalar N8N en VPS es una decisión inteligente.

Preguntas frecuentes (FAQ)

¿Puedo instalar N8N sin panel (solo SSH)?

Sí. Instala Docker y docker-compose, crea tu docker-compose.yml, exporta variables y levanta con docker-compose up -d. El panel simplifica SSL, redes y plantillas, pero no es obligatorio.

¿Por qué PostgreSQL y no SQLite en producción?

SQLite funciona para demos, pero su manejo de concurrencia y bloqueo de archivos no escala con flujos reales. PostgreSQL ofrece estabilidad, transacciones y mejor rendimiento con múltiples ejecuciones.

¿Cómo actualizo N8N en Docker?

  • Cambia la etiqueta (tag) de la imagen a la versión nueva.
  • Haz backup de la base (pg_dump), luego docker-compose pull y docker-compose up -d.
  • Revisa logs y aplica migraciones automáticamente. Si algo falla, vuelve al tag anterior.

¿Qué tamaño de VPS elijo?

KVM2 es un buen inicio para automatizaciones medianas. Si tu base crece o usas IA intensiva, sube a un plan con más RAM/CPU. Mira el uso real y la latencia antes de decidir.

¿Cómo recupero si se rompe la base?

Restaura desde el último pg_dump y, si hace falta, desde snapshot del VPS. Testea la restauración cada mes para asegurar tiempos (RTO) aceptables.

¿Es seguro exponer N8N a internet?

Sí, con HTTPS, firewall estricto, contraseñas fuertes y actualizaciones al día. Limita el acceso al editor con IP allowlist si es posible y guarda lo mínimo de datos sensibles.

¿Puedo usar el dominio raíz en lugar de un subdominio?

Puedes, pero se recomienda un subdominio (ej. automatiza.midominio.com) para separar servicios y simplificar DNS/SSL.

¿Cómo migro de N8N Cloud a mi VPS?

Exporta credenciales y workflows desde N8N Cloud, importa en tu instancia, crea las credenciales otra vez si hay secretos cifrados y ajusta WEBHOOK_URL/N8N_HOST. Prueba webhooks y OAuth antes de cortar tráfico.

¿Cuándo activar el modo cola (queue mode)?

Cuando los webhooks tarden demasiado, haya picos fuertes o necesites escalar horizontalmente. Añade Redis y workers dedicados para ejecutar en paralelo sin bloquear el editor.

¿Puedo usar Qdrant en lugar de PGVector?

Sí. Qdrant es una base vectorial especializada y muy rápida. Si ya usas PostgreSQL y quieres mantener todo en SQL, PGVector es práctico. Elige según tu stack y necesidades.

¿Dónde entra OpenAI API en este stack?

En los nodos de IA de N8N. Añade tu API Key, crea prompts y, si quieres memoria, guarda datos en PostgreSQL/PGVector o Qdrant. Es clave para agentes de IA en producción.

Si te quedó alguna duda puntual sobre cómo instalar N8N en VPS con tu contexto, deja un comentario y ajustamos la guía a tu caso.

Cover Image