Un bot Telegram deve essere sempre in esecuzione per rispondere ai messaggi. Eseguirlo sul portatile significa che va offline ogni volta che chiudi lo schermo. Un piccolo VPS risolve il problema per pochi dollari al mese. Questa guida esegue un bot Python come servizio systemd, così parte all’avvio e riparte dopo un crash.
Che dimensione di VPS?
La maggior parte dei bot è leggera. Un piano con da 1 a 2 vCPU e 2 GB di RAM è più che sufficiente. Vedi l’hosting per bot Telegram per i piani consigliati.
Passo 1: ottieni un token per il bot
Parla con @BotFather su Telegram, invia /newbot, scegli un nome e un username che termini con bot e copia il token. Trattalo come una password, perché chiunque lo abbia può controllare il bot.
Passo 2: prepara il server
sudo apt update && sudo apt install -y python3 python3-venv
sudo adduser --disabled-password --gecos "" botuser
sudo -iu botuser
mkdir ~/mybot && cd ~/mybot
python3 -m venv .venv
. .venv/bin/activate
pip install python-telegram-bot
Passo 3: scrivi un piccolo bot
# bot.py
import os
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
async def start(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Hello! I am running on a VPS.")
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
Il polling non richiede porte aperte, quindi non devi configurare un dominio né un webhook.
Passo 4: conserva il token in modo sicuro
echo "BOT_TOKEN=123456:ABC..." > ~/mybot/.env
chmod 600 ~/mybot/.env
Passo 5: eseguilo come servizio
Tornato come utente admin, crea /etc/systemd/system/mybot.service:
[Unit]
Description=Telegram bot
After=network-online.target
[Service]
User=botuser
WorkingDirectory=/home/botuser/mybot
EnvironmentFile=/home/botuser/mybot/.env
ExecStart=/home/botuser/mybot/.venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo journalctl -u mybot -f
Aggiornarlo e tenerlo d’occhio
- Aggiorna il codice, poi
sudo systemctl restart mybot. - Controlla i log con
journalctl -u mybot -n 100. - Usa i backup se il bot salva dati.
Polling o webhook?
Il polling è il più semplice e va bene per la maggior parte dei bot. Usa un webhook se ti serve una consegna istantanea ad alto volume, il che richiede un dominio e HTTPS. Leggi ospitare con Nginx e HTTPS.