OffshoreVps
Tutorial8 ott 20265 min di letturaDi il team di OffshoreVps

Come ospitare un bot Telegram su un VPS

Ottieni un token per il bot, scrivi un bot in Python, conserva il token in modo sicuro e tienilo attivo 24/7 con un servizio systemd.

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.

Finestra del terminale su un VPS che mostra i comandi usati per ospitare un bot Telegram, a partire da “sudo apt update && sudo apt install -y python3 p”
Il tipo di comandi che eseguirai sul tuo server in questa guida.

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.

I passaggi di questa guida in ordine: 1. Che dimensione di VPS?; 2. ottieni un token per il bot; 3. scrivi un piccolo bot; 4. conserva il token in modo sicuro; 5. Aggiornarlo e tenerlo d’occhio; 6. Polling o webhook?
I passaggi di questa guida, in ordine.

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.