# Despliegue Rápido de un Bot de Telegram en VPS: De Ejecución Local a Disponibilidad 24/7
Has terminado de desarrollar tu bot de Telegram, pero ejecutarlo localmente no garantiza una disponibilidad constante. La mayoría de los desarrolladores luchan con el despliegue en producción, abrumados por información interminable sobre Docker y Kubernetes. En realidad, puedes desplegarlo en solo 8 minutos con recursos mínimos. Esta guía muestra cómo desplegar un bot de aiogram en un VPS económico sin configuraciones complejas, usando herramientas básicas de Linux.
Preparando la Infraestructura
Elegir un proveedor de nube es crucial para el funcionamiento confiable del bot. Timeweb Cloud ofrece acceso a servidores en 12 regiones geográficas, incluyendo ubicaciones fuera de Rusia. Esto es esencial para usar APIs bloqueadas en Rusia (Groq, ChatGPT y otros servicios de IA). Para bots sin dependencias externas, los centros de datos rusos están bien.
Parámetros clave del servidor:
- SO: Ubuntu 24.04 LTS
- Configuración: mínima (1 vCPU, 1 GB RAM, 25 GB SSD)
- Costo: desde 290 ₽/mes
- Copias de seguridad: se recomienda activarlas
Al crear la instancia, verifica la sección de copias de seguridad. Las copias de seguridad protegen contra:
- Fallos del servidor
- Corrupción de la base de datos SQLite
- Errores en actualizaciones de código
- Eliminación accidental de archivos
El sistema de copias de seguridad de Timeweb te permite restaurar el estado del proyecto de los últimos 7 días en intervalos de 24 horas. Esto es crucial para evitar la pérdida de datos al probar nuevas funciones.
Configurando el Entorno del Servidor
Después de activar el servidor, conéctate vía SSH:
ssh root@your_IP_address
Actualiza los paquetes del sistema e instala los componentes requeridos:
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip git -y
npm install pm2 -g
Importante: verifica la versión de Python antes de instalar dependencias:
python3 --version
Para proyectos que usan un entorno virtual, ejecuta:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Transfiriendo el Proyecto y Lanzándolo
Usa SFTP para transferir archivos. En FileZilla, ingresa:
- Host: dirección IP del servidor
- Usuario: root
- Contraseña: del panel de control
- Puerto: 22
Después de copiar el proyecto al servidor:
- Navega al directorio del proyecto
- Activa el entorno virtual
- Instala las dependencias
- Lanza el bot vía PM2
cd /root/your_project
source venv/bin/activate
pm2 start main.py --name "telegram-bot"
PM2 asegura el reinicio automático después de reinicios y monitorea fallos. Verifica el estado del proceso:
pm2 status
Mantenimiento y Actualizaciones
Al realizar cambios en el código, sigue esta lista de verificación estricta:
- Edita archivos vía SFTP (FileZilla → Ver/Editar)
- Guarda los cambios (Ctrl+S)
- Confirma la sincronización en FileZilla
- Reinicia el proceso en PM2
pm2 restart telegram-bot
Para solucionar problemas, usa:
pm2 logs— ver logs en vivopm2 monit— monitorear recursospm2 resurrect— recuperar después de fallos
Puntos clave
- Siempre usa .env para almacenar tokens
- Configura copias de seguridad automáticas cada 24 horas
- Prueba actualizaciones en una rama aislada
- Monitorea el uso de memoria con htop
- Actualiza regularmente los paquetes del sistema
Optimización de Rendimiento
Para bots de alta carga (más de 1000 usuarios activos), pasos recomendados:
- Configurando un archivo de intercambio
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
- Limitando recursos de PM2
En ecosystem.config.js:
module.exports = {
apps: [{
name: 'telegram-bot',
script: 'main.py',
instances: 1,
autorestart: true,
max_memory_restart: '300M'
}]
}
- Configuración del firewall
sudo ufw allow OpenSSH
sudo ufw allow 22/tcp
sudo ufw enable
Un error común de principiantes es ejecutar el bot sin daemonización. Cerrar la sesión SSH mata el proceso. PM2 lo soluciona, pero requiere configuración adecuada de inicio automático:
pm2 startup
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp /root
Para monitorear la disponibilidad, agrega un endpoint simple de verificación de salud en el código de tu bot:
from aiogram import Router
router = Router()
@router.message(Command('health'))
async def health_check(message: Message):
await message.answer('Bot is running')
Revisa regularmente los logs en busca de errores de conexión a la API de Telegram. Problemas típicos:
- Token inválido en .env
- Dirección IP bloqueada
- Límites de tasa excedidos
- Errores en manejo de webhooks
Al usar webhooks, configura Nginx como proxy inverso con un certificado SSL. Para bots de baja carga, el modo polling es suficiente y no requiere infraestructura extra.
— Editorial Team
Aún no hay comentarios.