Cómo Controlar tu VPS con un Bot de Telegram y n8n (Guía Definitiva)

¿Sigues entrando por SSH cada vez que quieres ver si tu servidor está vivo? Por favor, estamos en 2026. Si tu infraestructura no te rinde cuentas por el móvil mientras te tomas un café, es que estás perdiendo el tiempo.

Hoy en ComandoIT te voy a enseñar a montar un centro de mando de élite usando n8n y un Bot de Telegram.

Prepárate, porque vamos a convertir tu Telegram en el mando a distancia de tu vida digital… Y no, no es apto para aficionados.

Antes de empezar, si todavía no tienes el «n8n» montado, hazte un favor y lee primero esto: Deja de trabajar como un esclavo: Instala n8n en Linux/Windows y automatiza tu vida (o sigue perdiendo el tiempo). Una vez que lo tengas listo, vuelve aquí y prepárate, porque vamos a convertir tu Telegram en el mando a distancia de tu vida digital.

El Portero de Discoteca: Nginx con SSL (Seguridad ante todo)

Lo primero es lo primero: la elegancia. No vamos a dejar tu n8n expuesto en el puerto 5678 como si fuera una feria. Le hemos puesto un traje de gala con Nginx.

Configuramos un Proxy Inverso para tu dominio que tengas sea la puerta de entrada, blindada con certificados SSL de Let’s Encrypt. Si el candado no está verde, no pasas. Esta capa no solo es por seguridad, sino para que los Webhooks de Telegram vuelen sin errores.

Si tu conexión no es HTTPS, Telegram ni te mira a la cara.

1. Entra en tu VPS y crea el archivo para tu dominio:

sudo nano /etc/nginx/sites-available/n8n.tuweb.com

2. Pega esta configuración fíjate que estamos redirigiendo todo el tráfico al puerto 5678, que es donde vive n8n:

server {
    listen 80;
    server_name n8n.tuweb.com;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
    }
}

3. Activar el sitio y verificar

No te olvides de crear el enlace simbólico y reiniciar Nginx, o estarás gritándole a una pared:

sudo ln -s /etc/nginx/sites-available/n8n.tuweb.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx

Instalando elCertificado SSL

Si dejas el sitio en HTTP (puerto 80), Telegram pasará de ti olímpicamente por seguridad. Necesitas Certbot para ponerle el traje de gala (HTTPS).

Ejecuta este comando y deja que la magia de Let’s Encrypt haga el trabajo sucio:

sudo apt update && sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d n8n.tuweb.com

El «Webhook URL»: El último ajuste en n8n

Para que n8n sepa que ahora vive detrás de un dominio con SSL, debes avisarle en su configuración. Si no lo haces, los Webhooks de Telegram fallarán.

El Comando Maestro de Despliegue (Docker Run)

Si no usas Docker Compose y prefieres la vieja escuela de la terminal, este es el comando definitivo.

Fíjate en los flags -e (Environment) y los -v (Volumes) para el socket de Docker y la persistencia de datos:

docker run -d \
  --name n8n-tuweb \
  --network host \
  -e N8N_PROTOCOL=https \
  -e N8N_HOST=n8n.tuweb.com \
  -e WEBHOOK_URL=https://n8n.tuweb.com/ \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/bin/docker:/usr/bin/docker \
  -v ~/.n8n:/home/node/.n8n \
  --restart unless-stopped \
  docker.n8n.io/n8nio/n8n

¿Y si prefieres Docker Compose? (Más profesional)

version: '3.8'
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n-tuweb
    restart: unless-stopped
    network_mode: host
    environment:
      - N8N_PROTOCOL=https
      - N8N_HOST=n8n.tuweb.com
      - WEBHOOK_URL=https://n8n.tuweb.com/
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - ~/.n8n:/home/node/.n8n

Configurando El Flujo en n8n

Ya tienes el motor rugiendo en tu VPS, pero ahora toca enseñarle a n8n a interpretar tus órdenes.

No queremos un bot tonto; queremos un asistente de operaciones.

Sigue estos pasos para conectar los nodos como un profesional.

En ComandoIT no pedimos las cosas por favor, las configuramos con precisión.


Creando a tu «Secuaz» en Telegram

Antes de tocar una sola línea de código en n8n, necesitas un token. Y para eso, tienes que hablar con el jefe de la mafia de los bots: @BotFather. Es el bot oficial de Telegram que gestiona a todos los demás.

Sigue estos pasos o quédate fuera del juego:

1. Encuentra al «Padre»

Abre tu Telegram, busca a @BotFather (fíjate que tenga el check azul de verificado, no queremos impostores) y dale al botón de Start.

2. El Comando Sagrado: /newbot

Escribe /newbot. El «Padre» te preguntará dos cosas:

  1. Nombre del bot: Cómo quieres que se llame (ej: ComandoIT Monitor). Esto es lo que verás en el chat.
  2. Username del bot: La dirección única. OJO: Tiene que terminar obligatoriamente en bot (ej: comandoit_vps_bot). Si el nombre ya está cogido, te tocará ser creativo.

3. El Tesoro: El API Token

Una vez aceptado el nombre, BotFather te soltará un texto largo lleno de letras y números. Ese es tu HTTP API Token. > ⚠️ REGLA DE ORO DE COMANDOIT: No le pases este token ni a tu madre. Si alguien tiene este código, tiene las llaves de tu servidor. Guárdalo como si fuera oro líquido.

4. Configuración Extra (Para que quede Pro)

No seas cutre y personaliza a tu secuaz:

  • /setuserpic: Para subirle el logo que tu quieras y que imponga respeto.
  • /setdescription: Para que cuando alguien lo abra, sepa que está ante un sistema de monitorización de élite.

Una vez hecho lo de Telegram, nos queda configurar el token de n8n.

Conectando el Token en n8n

Ahora que tienes el Token, vuelve a tu panel de n8n:

  1. Ve a Credentials -> Add Credential.
  2. Busca Telegram API.
  3. Pega el Token que te dio el BotFather.
  4. ¡Listo! Ya tienes el canal de comunicación abierto entre tu VPS y tu bolsillo.

Montando el Flujo: La Ingeniería de Nodos

Ahora que ya tienes el Bot de Telegram y tu n8n bien configurado detrás del proxy, toca entrar en el editor de n8n y arrastrar los componentes. Sigue este orden para construir una herramienta de precisión.

Paso 1: El Nodo «Telegram Trigger» (La Oreja)

Este es el inicio de todo. Añade el nodo Telegram Trigger.

  1. Credentials: Selecciona las credenciales de Telegram que creaste con tu Token.
  2. Updates: Déjalo en Message.
  3. Filtro: No toques nada más por ahora. Este nodo se quedará «escuchando» y se activará cada vez que alguien le escriba a tu bot.

Paso 2: El Nodo «IF» (El Portero)

Justo después del Trigger, saca un cable y conéctalo a un nodo IF. Aquí es donde aplicamos la Seguridad ComandoIT.

  • Tipo de comparación: Number.
  • Valor 1: {{ $json.message.from.id }} (esto lo sacas del nodo anterior).
  • Operación: Equal.
  • Valor 2: Pega aquí tu Chat ID (el número que te dio @userinfobot).
  • Lógica: Si alguien que no eres tú intenta usar el bot, el flujo irá por la rama False y no pasará nada. Si eres tú, irá por la rama True.

Paso 3: El Nodo «Switch» (El Cerebro)

Conecta la salida True del IF a un nodo Switch. Este nodo decide qué comando has escrito.

  • Property: {{ $json.message.text }}
  • Routing Rules: Crea las reglas según tus necesidades:
    • Rule 1: Si el texto es igual a /status.
    • Rule 2: Si el texto es igual a /docker.
    • Rule 3: Si el texto empieza por /stop.

Paso 4: Los Nodos «Execute Command» (El Músculo)

Para cada regla del Switch, añade un nodo Execute Command. Aquí es donde la magia de la terminal ocurre.

  • Rama /status: Pega el comando de salud del sistema (RAM, CPU, Disco).
echo "📊 *Estado del Servidor (n8n.tudominio)*" && \
echo "--------------------------" && \
echo "🕒 *Uptime:* $(uptime | awk -F, '{print $1}')" && \
echo "💾 *RAM:* $(free -h | awk '/Mem:/ {print $4 " libres de " $2}')" && \
echo "💿 *Disco:* $(df -h / | awk 'NR==2 {print $4 " disponibles"}')" && \
echo "🔥 *Carga CPU:* $(uptime | awk -F'load average:' '{print $2}')"
  • Rama /docker: Pega el comando para listar contenedores.
echo "🐳 *Estado de Servicios (n8n.tudominio)*" && \
echo "--------------------------" && \
docker ps --format "table {{.Names}}\t{{.Status}}" | grep -v "NAMES" | sed 's/Up/✅ Up/g' | sed 's/Exited/❌ Down/g' | sed 's/running/✅ Up/g'

💡 Truco Pro de ComandoIT: En los ajustes del nodo, asegúrate de que la opción «Execute Once» esté marcada si solo esperas un resultado.

Paso 5: El Nodo «Telegram Send Message» (La Voz)

Conecta las salidas de todos tus nodos de comandos a un único nodo de Telegram (Send Message).

  1. Chat ID: Vuelve a poner tu ID o usa la expresión {{ $node["Telegram Trigger"].json.message.chat.id }}.
  2. Text: Escribe la expresión {{ $json.stdout }}. Esto enviará al chat lo que la terminal respondió.
  3. Markdown: En Add Option, selecciona Parse Mode y ponlo en Markdown. Esto hará que los reportes se vean limpios y profesionales.

Si has llegado hasta aquí, ya tienes los nodos conectados y los comandos listos. Pero cuidado, que aquí es donde muchos fallan y se quedan rascándose la cabeza porque el bot «no responde solo«.

Para que tu bot sea un centinela 24/7 y no dependa de que tengas el navegador abierto, tienes que aplicar el protocolo de activación de ComandoIT.

1. El Interruptor Maestro (Modo Active)

En la esquina superior derecha de n8n verás un interruptor que dice Inactive. Ese es el seguro de la pistola.

  • Pásalo a «Active»: En ese momento, n8n registra el Webhook en los servidores de Telegram.
  • A partir de ahora: Tu bot está vivo. Ya puedes cerrar la pestaña, apagar tu PC de casa y dedicarte a otra cosa. Tu VPS ahora tiene ojos y oídos.

2. La Prueba de Fuego (El Test Real)

Olvida el botón de «Execute Workflow» del editor. Abre tu Telegram, busca a tu bot y lánzale un dardo:

/status

Si el bot te responde en menos de un segundo con la RAM libre y la carga de la CPU con sus emojis correspondientes… ¡Enhorabuena! Acabas de subir de nivel. Ya no eres un esclavo de la terminal; ahora eres el director de orquesta.

Te debería quedar de esta manera:

En ComandoIT no automatizamos porque seamos vagos (bueno, un poco sí), sino porque el tiempo es el recurso más valioso.

Poder monitorizar tu WordPress, ver si un contenedor ha caído o reiniciar un servicio crítico desde la cola del supermercado o mientras te tomas una caña, no tiene precio. Es control total. Es seguridad. Es, simplemente, trabajar de forma inteligente.

Si este tutorial te ha servido para domar tu VPS, no te lo guardes. Comparte el post, deja un comentario con tus dudas y dinos qué otros comandos te gustaría que integráramos en el bot.

¡A darle caña a esa infraestructura!