
// Guía de n8n
Cómo instalar n8n con Docker en tu propio servidor
Del servidor vacío a un n8n en producción: Docker, self-hosted, HTTPS y también en local, paso a paso.
Guía completa · por Miguel López · Actualizado 7 de julio de 2026
Instalar n8n en tu propio servidor se hace con Docker en menos de una hora, y a partir de ahí tienes ejecuciones ilimitadas sin pagar por operación. La vía recomendada es levantar n8n con Docker Compose junto a una base de datos PostgreSQL sobre un VPS con Ubuntu, y protegerlo con HTTPS mediante un proxy inverso. En esta guía vas del servidor vacío a un n8n funcionando en producción, y también te enseño la versión exprés para instalarlo en local y probarlo en tu ordenador en cinco minutos.
Antes de empezar conviene tener clara la decisión de fondo: puedes usar n8n en su nube gestionada, donde no tocas nada pero pagas por ejecuciones, o self-hosted en un servidor tuyo, con coste fijo y ejecuciones ilimitadas a cambio de encargarte del mantenimiento. Si todavía dudas cuál te conviene, lo desgloso en la guía sobre qué es n8n. Esta página va sobre la segunda opción, que es la que de verdad saca partido a la herramienta.
Requisitos antes de instalar n8n self-hosted
Lo único imprescindible es un servidor con Docker, un dominio y unos minutos de terminal, pero la elección del servidor marca la diferencia entre una instalación estable y una que se cae sola. Para self-hosting real necesitas un VPS, que no es más que un servidor virtual en la nube que alquilas por meses en proveedores como Contabo, Hetzner o DigitalOcean. La tentación es coger el plan más barato, y ahí va el aviso que te ahorra un mal rato: el VPS de gama mínima, con 4 GB de RAM, se queda corto y n8n empieza a caerse en cuanto le metes un par de flujos con base de datos. Por poco más, en torno a 8 € al mes, tienes una máquina de 6 núcleos y 12 GB de RAM que aguanta todo lo que le eches, incluso si vendes automatizaciones a clientes desde ella. Otro detalle práctico con Contabo: entre el plan mínimo y ese siguiente no hay migración, así que si empiezas por el pequeño y necesitas subir, pierdes la configuración; a partir del nivel recomendado sí puedes escalar sin perder nada.
En cuanto al sistema operativo, pide el servidor con Ubuntu (la versión 20.04 o superior funciona sin problemas), define una contraseña de root y guarda la IP que te llegará por correo. Con eso ya puedes conectarte por SSH desde tu ordenador y empezar. Necesitas también un dominio propio, porque para que n8n funcione con HTTPS y reciba webhooks vas a apuntar un par de subdominios hacia la IP del servidor.
Instalar n8n con Docker (la forma recomendada)
Docker es la manera más limpia y fiable de instalar n8n, porque encapsula la aplicación y sus dependencias sin ensuciar el sistema. Una vez conectado por SSH al servidor, el primer paso es instalar Docker y Docker Compose:
# Actualizar el sistema
sudo apt update && sudo apt upgrade -y
# Instalar Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# Instalar Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Para una prueba rápida puedes arrancar n8n con un solo contenedor, pero como esa configuración usa una base de datos SQLite que no aguanta producción, lo suyo es pasar directamente a Docker Compose con PostgreSQL, que es lo que verás en el siguiente apartado. La documentación oficial mantiene al día los detalles de cada método en su guía de hosting de n8n, que conviene tener a mano.

Instalar n8n con Docker Compose y PostgreSQL
Para producción, n8n debe apoyarse en PostgreSQL en lugar de la base de datos SQLite que trae por defecto, porque SQLite se corrompe con cierta carga y no escala. La forma de montar ambos servicios juntos es un archivo docker-compose.yml que define n8n y su base de datos en el mismo stack:
version: '3.8'
services:
postgres:
image: postgres:15
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=tu_password_seguro
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=tu_password_seguro
- GENERIC_TIMEZONE=Europe/Madrid
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
volumes:
postgres_data:
n8n_data:
Guardas ese archivo, ejecutas docker-compose up -d y n8n arranca en el puerto 5678 conectado a su PostgreSQL. El volumen n8n_data guarda tus workflows y credenciales, así que ese directorio es justo lo que tendrás que respaldar. Fíjate en el ajuste de zona horaria: sin él, los Schedule Triggers se disparan a horas raras, un fallo silencioso que da muchos dolores de cabeza cuando no sabes de dónde viene.
HTTPS y dominio: n8n en producción con un proxy inverso
Un n8n de producción necesita HTTPS, tanto por seguridad como porque muchas integraciones rechazan webhooks que no van cifrados. La forma estándar de conseguirlo es poner un proxy inverso delante que gestione los certificados SSL automáticamente, y Traefik es el más cómodo para esto porque los renueva solo con Let's Encrypt. La idea es apuntar dos subdominios de tu dominio (uno para el panel y otro para los webhooks) hacia la IP del servidor mediante registros DNS, y luego declarar Traefik y n8n en el mismo docker-compose.yml con las etiquetas que enrutan el tráfico:
traefik:
image: traefik:v2.10
restart: always
command:
- "--providers.docker=true"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.le.acme.email=tu@email.com"
- "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
- "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "letsencrypt:/letsencrypt"
Un apunte que ahorra bloqueos: al crear los subdominios conviene anteponer un par de letras al nombre del servicio en lugar de dejarlo tal cual, porque algunos buscadores marcan como sospechosos los subdominios con nombres de herramientas conocidas. Con el DNS propagado y Traefik levantado, tu n8n queda accesible por HTTPS y listo para recibir webhooks del mundo real.
La vía rápida: un panel que instala n8n y sus dependencias
Si toda la parte de Docker y proxy inverso te intimida, existe un atajo que deja el mismo resultado sin escribir apenas configuración. Hay paneles de auto-hospedaje de código abierto que, con un solo comando pegado en la terminal, instalan Docker, el proxy inverso, un gestor visual de contenedores y n8n con su PostgreSQL, y solo te piden responder unas preguntas: el subdominio, un usuario, una contraseña y el correo para los certificados. En diez minutos tienes n8n funcionando con HTTPS sin haber tocado un solo archivo YAML a mano. Estos paneles suelen incluir además decenas de herramientas open-source listas para instalar del mismo modo, así que el día que quieras añadir una base de datos vectorial, un almacenamiento de archivos o cualquier otro servicio, es cuestión de repetir el proceso. Para quien empieza, es la ruta con menos fricción hacia un self-hosting serio.
Si vas a conectar n8n con Gmail para enviar correos, ten en cuenta que Google no acepta tu contraseña normal: hay que activar la verificación en dos pasos en tu cuenta y generar una contraseña de aplicación específica, que es la que pondrás en la configuración SMTP junto al host smtp.gmail.com y el puerto 465.
Instalar n8n en local en tu ordenador
Para probar n8n sin alquilar nada, puedes instalarlo en local en tu propio ordenador, ideal para aprender y montar flujos antes de llevarlos al servidor. Con Node.js instalado, un npx n8n lo levanta al momento en http://localhost:5678, sin configuración previa. Si prefieres no tocar Node, el mismo Docker sirve en local con un contenedor suelto:
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n n8nio/n8n
La instalación local es perfecta para experimentar, pero recuerda que solo funciona mientras tu ordenador está encendido y no recibe webhooks desde internet, así que para automatizaciones que deban correr 24/7 el destino sigue siendo el servidor.
Backups y mantenimiento de n8n
Un n8n self-hosted es responsabilidad tuya, y eso incluye los backups: un fallo del servidor sin copia se lleva por delante todos tus workflows. El respaldo mínimo son dos piezas, el volumen de datos de n8n y la base de datos PostgreSQL, y se automatiza con un pequeño script en cron:
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups/n8n"
mkdir -p $BACKUP_DIR
# Backup del volumen de n8n
docker run --rm -v n8n_data:/source -v $BACKUP_DIR:/backup \
alpine tar czf /backup/n8n_$DATE.tar.gz -C /source .
# Backup de la base de datos
docker exec postgres pg_dump -U n8n n8n > $BACKUP_DIR/db_$DATE.sql
# Borrar copias de más de 30 días
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
Actualizar n8n a la última versión es igual de directo: docker-compose pull n8n seguido de docker-compose up -d, y para revisar cómo va el servicio tienes docker-compose logs -f n8n. Con los backups programados y esos dos comandos, el mantenimiento de tu instancia se reduce a unos minutos al mes.
Con n8n ya funcionando, el paso divertido es llenarlo de automatizaciones: si es tu primera vez, sigue el tutorial de n8n para montar tu primer workflow paso a paso, y luego puedes arrancar con nuestras plantillas de n8n gratis, importarlas en un clic y adaptarlas a tu negocio. Y si prefieres saltarte todo el montaje y quedarte solo con el resultado, en AutomatizaPyme montamos automatización de procesos a medida sobre n8n.
Preguntas frecuentes
Lo que más nos preguntan sobre n8n, resuelto.
Con Docker Compose sobre un VPS, junto a PostgreSQL y un proxy inverso para el HTTPS. Es la configuración estándar para producción porque es estable, portable y fácil de respaldar y actualizar. Para solo probar, npx n8n en local es más que suficiente.
Como mínimo funciona con 2 GB, pero para uso real conviene un servidor de al menos 8-12 GB de RAM. Los planes de 4 GB tienden a quedarse cortos y provocan caídas cuando ejecutas varios flujos con base de datos a la vez.
Para producción, sí. El dominio te permite servir n8n por HTTPS y recibir webhooks, algo que muchas integraciones exigen. Para probar en local no hace falta: te vale directamente localhost.
El software de n8n es gratuito y de código abierto en su versión self-hosted, con ejecuciones ilimitadas. El único coste es el servidor donde lo alojas, desde unos 5-8 € al mes según los recursos que elijas.
Docker aísla n8n y sus dependencias en contenedores, lo que lo hace más estable y fácil de mantener y respaldar, y es la opción recomendada para servidores. La instalación con npm o npx es más ligera y cómoda para probar en local, pero menos robusta para producción.
¿Prefieres que te lo montemos nosotros?
Diseñamos, instalamos y mantenemos tus automatizaciones con n8n para que solo te quedes con el resultado. Cuéntanos tu proceso y te decimos cómo automatizarlo.
Diagnóstico gratuito
