Puedes usar una Raspberry Pi para correr tu bot de Telegram 24/7
Ventajas sobre PythonAnywhere
- Sin límite de 1 Always-on task.
- Puedes tener varios bots de Telegram, scrapers, servicios Flask/FastAPI y cron jobs en simultáneo.
- Sin costos mensuales adicionales.
Paso 1: Preparar tu Raspberry Pi
-
Instalar el sistema operativo
- Descarga Raspberry Pi Imager.
- Graba Raspberry Pi OS Lite (Bookworm) – 32 bits en la microSD.
- Inserta la microSD en la Pi y enciéndela.
Use una Raspberry Pi 2 con una MicroSD de 8 GB
Paso 2: Instalar Python y dependencias
- Accede a la terminal. Puedes hacerlo desde otra PC usando SSH:
ssh pi@<ip_de_tu_pi>
Si es una instalación limpia de Raspberry Pi OS, el usuario predeterminado es pi
y la contraseña raspberry
Yo configure el usuario cómo realyussel
. Entonces:
ssh realyussel@192.168.1.105
- Raspberry Pi OS ya trae Python, pero actualiza todo por si acaso:
sudo apt update && sudo apt upgrade -y
sudo apt install python3-dev python3-pip python3-setuptools python3-wheel libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libopenjp2-7-dev libtiff5-dev tk-dev tcl-dev
- Utiliza
venv
para instalar dependencias
Tu Raspberry Pi (con Raspberry Pi OS Bookworm o Debian 12) ahora sigue PEP 668, lo que restringe el uso de pip install
a nivel global (system-wide) y obliga a usar apt
para instalar paquetes de Python empaquetados por Debian. O utilizar entornos virtuales (venv
) para paquetes externos (PyPI).
A) Instala python3-venv
si no está instalado:
sudo apt update
sudo apt install python3-venv -y
B) Crea un entorno virtual:
python3 -m venv botenv
C) Activa el entorno virtual:
source botenv/bin/activate
Ahora tu prompt cambiará a: (botenv) pi@raspberrypi:~$
D) Instala paquetes dentro del entorno....>
README
deactivate
Paso 3: Bot
- Sube tus archivos a la Raspberry Pi. Puedes hacerlo con
scp
desde tu PC:
scp club_cafe_bot.py consumos.csv precios_actuales.json realyussel@192.168.1.105:/home/realyussel
- Ejecutar el bot
python3 club_cafe_bot.py
- ¡Listo!....> El bot ya está funcionando.
tmux
: Mantiene el bot activo.
- Instala
tmux
:
sudo apt install tmux
- Crea una sesión nueva:
tmux new -s cafe_bot
- Ejecuta el bot:
python3 club_cafe_bot.py
-
Presiona Ctrl + B, luego D para salir del tmux (dejas el bot corriendo en segundo plano).
-
Ahora puedes cerrar SSH y la terminal con seguridad:
exit
- Para volver:
tmux attach -t cafe_bot
cron
: Reinicia el bot automáticamente
En caso de fallo o si reinicias la Pi, deberás lanzar tmux
de nuevo, o automatizar el arranque al encender la Pi:
No se creá la sesión tmux
al reiniciar, aunque cron
intentá correrlo. Posiblemente por entorno o tiempo de arranque.
Exportar:
crontab -l > mis_tareas_cron.txt
Verifica rutas absolutas y usa esas rutas completas en el cron:
which tmux
which python3
- Edita el archivo
crontab
:
crontab -e
- Selecciona el editor
nano
(generalmente opción 1 o 2) - Agrega al final:
@reboot sleep 60 && /usr/bin/tmux new -d -s cafe_bot '/usr/bin/python3 /home/realyussel/club_cafe_bot.py' >> /home/realyussel/cron_tmux.log 2>&1
Usamos rutas absolutas para evitar problemas de PATH en cron, retrasamos la ejecución 20 segundos tras el reinicio para que la red esté lista y registra salida de errores para depuración.
- Presiona Ctrl + O para Guardar cambios
- Presiona Enter para confirmar.
- Presiona Ctrl + X para salir de nano.
- Verificar que se guardó correctamente
crontab -l
Mejor alternativa 24/7: usa systemd
systemd
es más confiable para procesos persistentes, maneja reinicios automáticos y arranca después de que la red esté disponible. Sin depender de tmux
ni cron
.
Crea:
sudo nano /etc/systemd/system/cafe_bot.service
Pega este contenido:
[Unit]
Description=Club Cafe Telegram Bot
After=network-online.target
Wants=network-online.target
[Service]
User=realyussel
WorkingDirectory=/home/realyussel
ExecStart=/home/realyussel/botenv/bin/python /home/realyussel/club_cafe_bot.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Recargar systemd para detectar el nuevo servicio
sudo systemctl daemon-reload
Habilitar el servicio para iniciar automáticamente al arrancar
sudo systemctl enable cafe_bot.service
Iniciar el servicio inmediatamente
sudo systemctl start cafe_bot.service
Verificar que está corriendo correctamente (debería indicar: "Active: active (running)")
sudo systemctl status cafe_bot.service
Como ya usarás systemd
, elimina tu línea en crontab
Parar o reiniciar
- Para detener:
sudo systemctl stop cafe_bot.service
- Para reiniciar (tras modificar tu bot):
sudo systemctl restart cafe_bot.service
- Revisa logs, 🚩 Si algo falla:
journalctl -u cafe_bot.service -xe
- Ver logs en tiempo real:
journalctl -u cafe_bot.service -f