¿Por qué instalar n8n en tu VPS?
n8n es una herramienta de automatización de flujos de trabajo (workflows) de código abierto: conecta APIs, bases de datos y servicios sin escribir código para tareas repetitivas. Instalarlo en tu propio VPS de PlatiniumHost te da control total de tus datos, sin límites de ejecuciones y sin la mensualidad de n8n Cloud. Este tutorial usa Docker, el método que n8n recomienda para producción.
- Un VPS activo de PlatiniumHost con acceso root por SSH
- Un dominio o subdominio apuntando a la IP de tu VPS (ej:
n8n.tudominio.com) - 10-15 minutos
Paso 1 — Conecta por SSH y actualiza el sistema
Conéctate a tu VPS y asegúrate de tener los paquetes al día:
ssh root@tu-ip-vps
apt update && apt upgrade -yPaso 2 — Instala Docker y Docker Compose
La forma más rápida en Ubuntu/Debian es el script oficial de Docker:
curl -fsSL https://get.docker.com | shDesde Docker v20.10, Docker Compose ya viene incluido como plugin (docker compose, sin guion). Verifica ambas instalaciones:
docker --version
docker compose versionPaso 3 — Crea el directorio del proyecto
- Crea una carpeta para n8n y entra en ella
- Crea un archivo
.envcon tus datos
mkdir -p /opt/n8n && cd /opt/n8n
cat > .env << 'ENVEOF'
DOMAIN_NAME=tudominio.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=America/Caracas
SSL_EMAIL=tu-email@tudominio.com
ENVEOFAjusta DOMAIN_NAME, SUBDOMAIN y SSL_EMAIL a tus datos reales.
Paso 4 — Crea el archivo docker-compose.yml
Este archivo levanta dos contenedores: n8n y Traefik (proxy que gestiona el certificado SSL automáticamente vía Let's Encrypt). Guárdalo como docker-compose.yml dentro de /opt/n8n:
services:
traefik:
image: traefik:v3.1
restart: always
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.mytlschallenge.acme.tlschallenge=true
- --certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}
- --certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.routers.n8n.entrypoints=web,websecure
volumes:
- n8n_data:/home/node/.n8n
volumes:
traefik_data:
n8n_data:Paso 5 — Levanta los contenedores
docker compose up -d
docker compose psDocker descargará las imágenes (1-2 minutos la primera vez). Ambos servicios deben mostrar estado Up.
Paso 6 — Accede a n8n
Abre https://n8n.tudominio.com (tu subdominio real) en el navegador. Traefik emite el certificado SSL automáticamente en el primer arranque — puede tardar 1-2 minutos. Verás el asistente de configuración de n8n: crea tu cuenta de administrador y listo.
n8n_data, así que sobreviven a reinicios y actualizaciones del contenedor. Revisa también Cómo instalar Claude Code en tu VPS.Recomendaciones para producción
- Base de datos: por defecto n8n usa SQLite. Para cargas de trabajo serias, migra a PostgreSQL agregando un servicio
postgresal docker-compose.yml. - Backups: respalda periódicamente el volumen
n8n_data— ahí vive toda tu configuración, credenciales y workflows. - Actualizar n8n:
docker compose pull && docker compose up -ddescarga la última versión y reinicia sin perder datos. - Seguridad: activa la gestión de usuarios de n8n (
N8N_USER_MANAGEMENT_DISABLED=false) si más de una persona va a usar la instancia.