Ein auf Ihrem Computer gestarteter Telegram-Bot wird beendet, sobald Sie ihn schließen. Auf einem VPS läuft er ununterbrochen, startet nach einem Fehler automatisch neu und ist von jedem Gerät aus erreichbar. Diese Anleitung beginnt bei Null: Erstellung des Bots, erstes Python-Skript, dauerhafter Betrieb, Wahl zwischen Polling und Webhook sowie bewährte Sicherheitspraktiken.
1. Erstellen Sie den Bot mit BotFather
- Öffnen Sie in Telegram einen Chat mit @BotFather, dem offiziellen Konto.
- Senden Sie
/newbot, wählen Sie anschließend einen Namen und eine Kennung, die mitbot. - BotFather stellt Ihnen ein Token zur Verfügung. Damit erhalten Sie die vollständige Kontrolle über den Bot: Veröffentlichen Sie es niemals und legen Sie es niemals in einem Git-Repository ab.
Sollte der Spielstein verloren gehen, /revoke in BotFather wird dies sofort ersetzt.
2. Das VPS vorbereiten
Ein einfacher Bot hat einen sehr geringen Ressourcenverbrauch: 1 GB RAM reicht zu Beginn völlig aus. Beginnen Sie mit einem gesicherten Debian- oder Ubuntu-VPS (siehe Erste Schritte und Debian oder Ubuntu). Erstellen Sie einen eigenen Benutzer ohne Administratorrechte:
apt update && apt install -y python3 python3-venv
adduser --disabled-password --gecos "" bot
su - bot
mkdir ~/monbot && cd ~/monbot
python3 -m venv venv
venv/bin/pip install python-telegram-bot
3. Das erste Skript
Erstellen Sie ~/monbot/bot.py :
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Bonjour, je tourne sur un VPS !")
app = Application.builder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
Das Token wird aus einer Umgebungsvariablen eingelesen und erscheint daher nicht im Code. Führen Sie einen Test durch und beenden Sie den Vorgang anschließend mit Ctrl+C :
BOT_TOKEN="VOTRE_JETON" venv/bin/python bot.py
Senden Sie /start an Ihren Bot in Telegram: Er muss antworten.
4. Den Dienst mit systemd im Dauerbetrieb ausführen
Legen Sie als Root das Token in einer Datei ab, auf die nur Root Lesezugriff hat:
install -m 600 /dev/null /etc/monbot.env
echo 'BOT_TOKEN=VOTRE_JETON' > /etc/monbot.env
Erstellen Sie anschließend /etc/systemd/system/monbot.service :
[Unit]
Description=Bot Telegram
After=network-online.target
Wants=network-online.target
[Service]
User=bot
WorkingDirectory=/home/bot/monbot
EnvironmentFile=/etc/monbot.env
ExecStart=/home/bot/monbot/venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Aktivieren Sie den Dienst:
systemctl daemon-reload
systemctl enable --now monbot
systemctl status monbot
journalctl -u monbot -f # journal en direct
Der Bot startet nun nach einem Fehler und nach einem Neustart des VPS wieder. Nach einer Änderung am Code: systemctl restart monbot. Bei einem Bot in Node.js funktioniert dieselbe Methode, und PM2 ist eine weitere gängige Option.
5. Polling oder Webhook?
Telegram bietet zwei Möglichkeiten, Nachrichten zu empfangen, die sich gegenseitig ausschließen: Solange ein Webhook konfiguriert ist, getUpdates funktioniert nicht.
| Kriterium | Abfrage (getUpdates) | Webhook (setWebhook) |
|---|---|---|
| Grundsatz | Ihr Bot fragt Telegram ab | Telegram sendet jede Nachricht an Ihre URL |
| Einrichtung | Keine, funktioniert sofort | Domäne oder IP-Adresse mit obligatorischem HTTPS |
| Zu öffnende Ports | Keine | Nur 443, 80, 88 oder 8443 |
| Ideal für | Die meisten Bots | Bots mit hohem Datenverkehr oder solche, die in eine Website integriert sind |
Beginnen Sie mit dem Polling: Dabei werden keine Ports freigegeben, und diese Methode eignet sich sehr gut für einen VPS, der ständig in Betrieb ist. Sollte der Bot ausgeschaltet sein, speichert Telegram die Nachrichten bis zu 24 Stunden lang in der Warteschlange. Informationen zum Umstieg auf den Webhook finden Sie unter Nginx und SSL.
Conflict: terminated by other getUpdates request Das bedeutet, dass zwei Instanzen Ihres Bots mit demselben Token laufen, beispielsweise auf Ihrem PC und auf dem VPS. Beenden Sie eine davon.6. Sicherheit und bewährte Verfahren
- Beschränken Sie sensible Befehle an Ihre Telegram-ID:
if update.effective_user.id != MON_ID: return. - Vertrauen Sie niemals den erhaltenen Nachrichten : Überprüfen Sie die von den Benutzern übermittelten Daten, insbesondere wenn der Bot eine Aktion auf dem Server ausführt oder eine Datenbank abfragt.
- Mit Git bereitstellen und fügen Sie Ihre Geheimnisdateien zu
.gitignore. - Aktualisieren Sie das System und die Abhängigkeiten und aktivieren Sie die Firewall.
- Sichern Sie Ihre Daten je nachdem, ob der Bot eine SQLite-Datenbank oder einen Dateiordner verwendet. Siehe Sicherungen mit Borg.
7. Welcher VPS ist für Ihren Bot geeignet?
| Bot-Typ | RAM |
|---|---|
| Einfache Befehle, Benachrichtigungen, Warnmeldungen | 1 bis 2 GB |
| Mit Datenbank, mehrere Tausend Benutzer | 2 bis 4 GB |
| Verarbeitung von Bildern oder Dateien, mehrere Bots | 4 bis 8 GB |
| Lokales KI-Modell über Ollama | 8 GB und mehr |
Auf einem einzigen VPS können mehrere Bots gehostet werden: Richten Sie für jeden Bot einen eigenen Dienst ein, jeweils mit einem eigenen Token. Lesen Sie dazu unsere Linux-VPS mit NVMe. Entwickeln Sie eher für Discord? Siehe die Seite VPS für Discord-Bot.
Häufig gestellte Fragen
Benötigt man einen VPS, um einen Telegram-Bot zu hosten?
Nicht zum Testen: Ihr Computer reicht aus. Für einen ständig verfügbaren Bot benötigen Sie einen Rechner, der stets eingeschaltet und mit dem Internet verbunden ist – genau das bietet ein VPS.
Wie viel RAM benötigt ein Telegram-Bot?
1 GB reicht für einen einfachen Bot aus. Planen Sie mehr ein, wenn Sie eine Datenbank, Dateiverarbeitung oder mehrere Bots auf demselben Server hinzufügen.
Muss ich einen Port auf meinem VPS öffnen?
Nicht per Polling, da Ihr Bot die Verbindung zu Telegram herstellt. Bei einem Webhook muss einer der HTTPS-Ports 443, 80, 88 oder 8443 erreichbar sein.
Gehen meinem Bot während eines Ausfalls Nachrichten verloren?
Telegram speichert ausstehende Nachrichten bis zu 24 Stunden lang. Der Bot ruft diese beim Neustart ab, sofern die Unterbrechung diese Zeitspanne nicht überschreitet.
Was soll ich tun, wenn mein Chip undicht geworden ist?
Senden Sie den Befehl „/revoke“ an BotFather, um ein neues Token zu generieren, aktualisieren Sie anschließend die entsprechende Einstellung in Ihrer Umgebungsdatei und starten Sie den Dienst neu.










