n8n es una herramienta de automatización de flujos de trabajo open-source y self-hosted que te permite conectar cientos de aplicaciones sin escribir código (o con muy poco). Es la alternativa libre a Zapier, Make o IFTTT, y lo mejor: tú controlas tus datos porque corre en tu propio servidor.

En este tutorial te guío paso a paso para instalar n8n en un VPS con Docker, asegurarlo con SSL y dejarlo listo para producción.


1. ¿Por qué n8n en un VPS?

  • 🆓 Gratis e ilimitado — sin límite de ejecuciones ni pasos como en Zapier
  • 🔐 Tus datos son tuyos — nada pasa por servidores de terceros
  • 🧩 400+ integraciones — WhatsApp, Telegram, Gmail, Sheets, WordPress, IA, APIs REST...
  • 🤖 Nodos de IA nativos — conecta con OpenAI, Claude, Whisper, etc.
  • 📊 Interfaz visual tipo flowchart, fácil de usar

2. Prerrequisitos

  • 🔹 Un VPS con al menos 1 GB RAM y 20 GB disco (Hetzner, DigitalOcean, Vultr, Contabo...)
  • 🔹 Ubuntu 22.04 o 24.04 instalado
  • 🔹 Docker y Docker Compose instalados
  • 🔹 Un dominio apuntando al VPS (ej: n8n.tudominio.com)
  • 🔹 Acceso SSH al servidor

3. Instalar Docker y Docker Compose

Si aún no tienes Docker, instálalo en Ubuntu con:

# Actualizar paquetes
sudo apt update && sudo apt upgrade -y

# Instalar dependencias
sudo apt install -y ca-certificates curl gnupg

# Agregar repositorio 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
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instalar Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Agregar tu usuario al grupo docker (evita usar sudo)
sudo usermod -aG docker $USER
newgrp docker

# Verificar
docker --version
docker compose version

4. Crear el archivo docker-compose.yml

Crea una carpeta para n8n y el archivo de configuración:

mkdir ~/n8n && cd ~/n8n

Crea el archivo docker-compose.yml:

version: "3.8"

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n.tudominio.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.tudominio.com/
      - N8N_EDITOR_BASE_URL=https://n8n.tudominio.com/
      - GENERIC_TIMEZONE=America/Mexico_City
      - N8N_ENCRYPTION_KEY=cambia-esta-clave-por-una-segura
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local_files:/files

volumes:
  n8n_data:
⚠️ Importante: Cambia n8n.tudominio.com por tu dominio real y genera una N8N_ENCRYPTION_KEY segura (puedes usar openssl rand -hex 32).

5. Configurar SSL con Nginx Proxy Manager

Para HTTPS, usamos Nginx Proxy Manager que gestiona certificados SSL automáticamente con Let's Encrypt:

# Crear carpeta para NPM
mkdir ~/npm && cd ~/npm

# Crear docker-compose.yml para NPM
cat > docker-compose.yml << 'EOF'
version: "3.8"
services:
  app:
    image: jc21/nginx-proxy-manager:latest
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "81:81"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
EOF

docker compose up -d

Accede a http://TU_IP:81 con:

  • Email: admin@example.com
  • Password: changeme

Crea un Proxy Host:

  1. Domain: n8n.tudominio.com
  2. Forward Hostname/IP: TU_IP_DEL_VPS
  3. Forward Port: 5678
  4. ✅ Activar Websocket Support
  5. ✅ Solicitar certificado SSL con Let's Encrypt

6. Iniciar n8n

cd ~/n8n
docker compose up -d

# Verificar que está corriendo
docker compose ps
docker compose logs -f

Accede a https://n8n.tudominio.com. La primera vez te pedirá crear un usuario y contraseña.


7. Configuración Post-Instalación

Crear usuario administrador

Al entrar por primera vez, crea tu cuenta. Guarda bien las credenciales — no hay "recuperar contraseña" en la versión self-hosted.

Activar nodos de IA (opcional pero recomendado)

n8n incluye nodos nativos para IA. Actívalos desde Settings → Community Nodes o instala paquetes adicionales:

# Conectar al contenedor
docker exec -it n8n bash

# Instalar nodos extra
npm install -g n8n-nodes-chatgpt
exit

# Reiniciar
docker compose restart

Configurar backups automáticos

# Crear script de backup
cat > ~/backup-n8n.sh << 'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M)
mkdir -p ~/backups/n8n
cp -r ~/n8n/n8n_data ~/backups/n8n/backup_$DATE
echo "Backup completado: backup_$DATE"
EOF

chmod +x ~/backup-n8n.sh

# Agregar al cron (backup diario a las 3 AM)
(crontab -l 2>/dev/null; echo "0 3 * * * /home/tu_usuario/backup-n8n.sh") | crontab -

8. Tu Primer Flujo de Trabajo

Probemos que todo funciona con un flujo simple: Webhook → Filtro → Respuesta

  1. Arrastra un nodo Webhook al lienzo
  2. Configura el método como POST y copia la URL generada
  3. Agrega un nodo If (condición) para filtrar los datos
  4. Agrega un nodo Respond to Webhook con un mensaje personalizado
  5. Haz clic en Execute Workflow para probar
💡 Idea práctica: Conecta el nodo Webhook de WhatsApp (Twilio) a n8n y automatiza respuestas, guarda contactos en Google Sheets, envía notificaciones a Telegram, o dispara procesos en tu negocio.

9. Optimización y Monitoreo

  • 📊 Monitoreo con Portainer: docker run -d -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
  • 🔄 Actualizar n8n: docker compose pull && docker compose up -d
  • 🧹 Limpiar ejecuciones antiguas: desde Settings → Usage & Plan → Prune old executions
  • 📈 Límites de recursos: agrega mem_limit: 512m en docker-compose.yml si tu VPS es pequeño

10. Conclusión

Instalar n8n en tu propio VPS te da el poder de un Zapier o Make sin límites ni costos recurrentes. En ~30 minutos tienes un servidor de automatización corriendo con SSL, listo para conectar todas tus herramientas.

Lo mejor: al ser self-hosted, tus datos nunca salen de tu servidor. Tus flujos, tus APIs keys, tus conversaciones — todo bajo tu control.

¿El siguiente paso? Conecta n8n con la API de WhatsApp de Twilio (usa el tutorial de Twilio) y automatiza toda tu comunicación con clientes.


¿Te sirvió este tutorial? Compártelo y déjame tu comentario 👇