Calor de verano — todo se derrite, hasta nuestros precios.−25%−25 % en cada plan anual, hasta el 31 de agostoVer planes
EQVPS
Empezar

Cómo alojar un bot de Telegram en un VPS (y mantenerlo funcionando)

15 jun 2026 · 3 min de lectura · EQVPS Team

Un bot de Telegram que solo funciona mientras tu portátil está abierto no está realmente funcionando — está haciendo una demo. Para tenerlo de verdad en línea, respondiendo a las 3 de la madrugada, sobreviviendo a tus reinicios y a sus propios fallos, necesita vivir en un servidor. Aquí está todo el camino, de principio a fin, con los comandos.

Buenas noticias primero: un bot es un workload diminuto. Sobre todo reposa esperando mensajes, así que la máquina más barata lo ejecuta bien — sin IP dedicada, sin dominio, nada elaborado.

1. Consigue un token de BotFather

En Telegram, escribe a @BotFather, envía /newbot, elige un nombre y un nombre de usuario. Te entrega un token que se ve como 12345:AAH.... Trátalo como una contraseña — cualquiera que lo tenga controla tu bot.

2. Un bot mínimo

Conéctate por SSH al servidor, configura Python y la librería:

sudo apt update && sudo apt install -y python3-venv
mkdir ~/mybot && cd ~/mybot
python3 -m venv venv && source venv/bin/activate
pip install python-telegram-bot

Un bot que responde — ~/mybot/bot.py:

import os
from telegram.ext import ApplicationBuilder, CommandHandler

async def start(update, ctx):
    await update.message.reply_text("Alive and on a server. 🟢")

app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()

Fíjate en que lee el token de una variable de entorno — no codificado a fuego. Eso importa en el siguiente paso.

3. La parte que realmente lo mantiene funcionando: systemd

Si solo ejecutas python bot.py, muere en el momento en que cierras SSH. Un servicio systemd es lo que lo hace sobrevivir al cierre de sesión, los fallos y los reinicios. Crea /etc/systemd/system/mybot.service:

[Unit]
Description=Telegram bot
After=network-online.target

[Service]
WorkingDirectory=/home/youruser/mybot
Environment=BOT_TOKEN=12345:AAH...your-token
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser

[Install]
WantedBy=multi-user.target

Luego:

sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot      # debería decir active (running)
journalctl -u mybot -f           # logs en vivo

Restart=always es la línea que hace el trabajo real — se cae, y vuelve en 5 segundos. enable significa que arranca tras un reinicio. Esa es toda la diferencia entre «ejecuté un bot una vez» y «mi bot está arriba».

4. Por qué no hay dominio ni puertos abiertos

El bot usa long polling — sale hacia Telegram por actualizaciones, así que nada necesita alcanzar hacia dentro. Sin URL pública, sin regla de firewall entrante, sin IP dedicada. Por eso un VPS NAT (IP compartida, SSH en un puerto) es un hogar válido y barato para un bot. Los webhooks existen para volumen muy alto, pero casi con seguridad no los necesitas para empezar.

Salvedades honestas

Eso es todo. Cierra la máquina primero con la checklist de seguridad, coloca el servicio, y tu bot sigue en línea estés o no. En un VPS pagado con cripto puedes tenerlo funcionando un minuto después de decidirlo.

Preguntas frecuentes

¿Qué VPS necesito para un bot de Telegram?

El más pequeño. Un bot de Telegram está sobre todo inactivo, esperando actualizaciones, así que 1 GB de RAM y 2 núcleos es de sobra para la mayoría de los bots — incluso los bastante ocupados. Solo necesitas más si el bot hace trabajo pesado él mismo (procesamiento de imágenes, un modelo local, una gran base de datos).

¿Cómo mantengo un bot de Telegram funcionando después de cerrar SSH?

Ejecútalo como un servicio systemd. A diferencia de lanzarlo en tu terminal, systemd lo mantiene vivo después de cerrar sesión, lo reinicia si se cae, y lo inicia de nuevo tras un reinicio. Esa es la diferencia entre un juguete y algo que sigue arriba.

¿Por qué se detiene mi bot cuando me desconecto?

Porque lo iniciaste en tu sesión SSH, así que muere cuando esa sesión termina. Envuélvelo en un servicio systemd (o tmux para una prueba rápida) y funciona independientemente de tu inicio de sesión.

¿Necesito un dominio o webhook para un bot de Telegram?

No. El long polling (getUpdates) no necesita URL pública, ni dominio, ni puerto entrante — el bot sale hacia Telegram. Por eso un VPS NAT sin IP dedicada es perfectamente válido para un bot. Los webhooks son una optimización opcional para gran volumen.

¿Es seguro poner el token de mi bot en un VPS?

Sí, si lo tratas como una contraseña: mantenlo en una variable de entorno o un archivo legible solo por el usuario del bot, nunca lo subas a git, y cierra el servidor con claves SSH. Si un token se filtra, revócalo en BotFather y emite uno nuevo.

← Volver al blogVer planes y precios →

Comentarios

Aún no hay comentarios. Sé el primero.

Deja un comentario

Los comentarios se moderan antes de aparecer.