
En este artículo
n8n es probablemente la herramienta de automatización que más ha crecido en el último año, y gran parte de culpa la tienen los agentes de IA. Puedes usarlo en su nube, que se paga por ejecuciones, o instalarlo en tu propio servidor y olvidarte de los límites. Esta guía es la segunda opción, hecha como la haríamos nosotros en un VPS limpio.
Lo que necesitas
- Un VPS con Ubuntu 24.04 o Debian 12, con al menos 2 vCPU y 2 GB de RAM. Con agentes de IA o muchos flujos, mejor 4 GB.
- Acceso root por SSH.
- Un subdominio (por ejemplo
n8n.tuempresa.es) con un registro A apuntando a la IP del VPS. Si no sabes cómo, te lo contamos en qué son los DNS.
Si no quieres hacerlo tú, en nuestro VPS para n8n te lo entregamos instalado. Tienes acceso root igualmente, así que puedes seguir esta guía para entender qué hay montado.
Paso 1: prepara el servidor
apt update && apt upgrade -y
apt install -y ufw
ufw allow OpenSSH
ufw allow 80
ufw allow 443
ufw enable
Si es un VPS recién estrenado, dedica cinco minutos a lo básico de seguridad (claves SSH, actualizaciones automáticas). Lo tienes en lo primero que hay que hacer al estrenar un VPS.
Paso 2: instala Docker
curl -fsSL https://get.docker.com | sh
docker compose version
Si es la primera vez que usas Docker, aquí tienes una explicación sin tecnicismos de qué es Docker y para qué sirve.
Paso 3: el docker-compose
Vamos a levantar n8n con Caddy delante. Caddy hace de proxy y pide y renueva el certificado SSL él solo, sin Certbot ni cron.
mkdir -p /opt/n8n && cd /opt/n8n
Fichero docker-compose.yml (cambia el dominio):
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
environment:
- N8N_HOST=n8n.tuempresa.es
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.tuempresa.es/
- GENERIC_TIMEZONE=Europe/Madrid
- TZ=Europe/Madrid
- NODE_ENV=production
volumes:
- n8n_data:/home/node/.n8n
caddy:
image: caddy:2
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
n8n_data:
caddy_data:
caddy_config:
Y el Caddyfile:
n8n.tuempresa.es {
reverse_proxy n8n:5678
}
Paso 4: arranca
docker compose up -d
docker compose logs -f caddy
Cuando veas en los logs que el certificado se ha obtenido, entra en https://n8n.tuempresa.es y crea la cuenta de propietario. Usa una contraseña larga y activa la verificación en dos pasos desde tu perfil: n8n va a estar en internet y va a guardar credenciales de tus otras herramientas.
¿SQLite o PostgreSQL?
Por defecto n8n guarda todo en SQLite, dentro del volumen. Para una empresa pequeña con unos cuantos flujos va perfecto. Pásate a PostgreSQL si vas a tener muchas ejecuciones al día, quieres guardar el historial de ejecuciones mucho tiempo o piensas escalar con varios workers. Basta con añadir un servicio postgres al compose y las variables DB_TYPE=postgresdb, DB_POSTGRESDB_HOST, DB_POSTGRESDB_USER y DB_POSTGRESDB_PASSWORD.
Configura la limpieza del historial de ejecuciones (EXECUTIONS_DATA_PRUNE=true y EXECUTIONS_DATA_MAX_AGE=336, en horas). Si no, la base de datos crece sin parar y un día te quedas sin disco.
Actualizar n8n
cd /opt/n8n
docker compose pull
docker compose up -d
docker image prune -f
n8n saca versiones casi cada semana. No hace falta estar siempre en la última, pero no te quedes meses atrás: lee las notas de versión antes de un salto grande y haz una copia antes.
Copias de seguridad
Flujos, credenciales y la clave de cifrado viven en el volumen n8n_data:
docker run --rm -v n8n_n8n_data:/data -v /root/backups:/backup alpine \
tar czf /backup/n8n-$(date +%F).tar.gz -C /data .
Programa ese comando en el cron y saca las copias del servidor. Y apunta aparte la clave de cifrado (está en el fichero config del volumen): sin ella, una copia restaurada en otro servidor no puede descifrar tus credenciales.
Errores habituales (y cómo arreglarlos)
EACCES: permission denied, open '/home/node/.n8n/config'
Usaste una carpeta del host en vez de un volumen. Dale propiedad al usuario de n8n: chown -R 1000:1000 ./n8n_data.
Los webhooks devuelven una URL con localhost
Falta WEBHOOK_URL o no tiene la barra final. Corrígelo y recrea el contenedor.
Caddy no consigue el certificado
El DNS aún no apunta al VPS o los puertos 80 y 443 están cerrados. Comprueba con dig n8n.tuempresa.es.
«Connection lost» en el editor
El proxy no deja pasar websockets. Con Caddy no pasa; con Nginx, añade las cabeceras Upgrade y Connection.
¿Qué VPS elegir?
| Uso | Recursos |
|---|---|
| Empezar, flujos sencillos | 2 vCPU · 2 GB RAM |
| Muchos flujos, webhooks frecuentes, agentes de IA | 4 vCPU · 4 GB RAM |
| n8n con PostgreSQL y otras aplicaciones | 4 vCPU · 8 GB RAM |
No necesitas GPU: los agentes de IA de n8n usan los modelos de OpenAI, Anthropic o Google a través de su API. Si te interesa ese tema, tienes nuestra guía para crear un agente de IA con n8n.
Equipo de Rackmarkt
Escrito por el equipo técnico que administra nuestra plataforma de hosting, VPS y servidores. Conoce a nuestro soporte.




