Telegram-Bot 24/7 auf einem VPS betreiben (Python + systemd)
Ein Bot auf dem Laptop stirbt, sobald du den Deckel schließt. So läuft er auf einem VPS dauerhaft online, startet nach Absturz und Neustart selbst neu und kostet 10 Dollar im Monat.
Damit ein Telegram-Bot rund um die Uhr online ist, lege ihn auf einen VPS und starte ihn als systemd-Dienst. systemd startet den Bot beim Hochfahren und startet ihn nach einem Absturz binnen Sekunden neu. Dieser Leitfaden führt dich in etwa zehn Minuten von einem leeren Server zu einem laufenden Python-Bot, mit den genauen Befehlen.
Warum ein VPS und nicht dein Laptop
- Immer online — ein Laptop schläft, verliert das WLAN und startet für Updates neu; ein Server nicht.
- Startet selbst neu — systemd holt den Bot nach einem Absturz oder Neustart zurück, ohne dass du etwas tun musst.
- Günstig — ein Bot, der Telegram abfragt, braucht kaum CPU und RAM, der kleinste Tarif reicht.
Faustregel: Ein Bot mit Polling läuft problemlos auf 1 vCPU und 1 GB RAM. Der Tarif Quark von Neckrez (1 vCPU, 1 GB, 10 $ im Monat) passt. Wechsle zu Ion nur, wenn der Bot eine große Datenbank führt oder schwere Aufgaben erledigt.
So geht es bei Neckrez
- 1. Registriere dich per E-Mail — ohne KYC, ohne Karte und Telefonnummer.
- 2. Lade das Guthaben mit Krypto auf — ab 15 $. USDT auf BEP20, TON, Polygon oder Solana kostet nur Cent-Beträge an Netzwerkgebühren.
- 3. Stelle einen Server bereit — wähle Ubuntu, einen Standort in deiner Nähe und den Tarif Quark.
- 4. Warte etwa eine Minute — du erhältst eine eigene IPv4-Adresse und vollen Root-Zugriff.
- 5. Zahle stündlich — abgerechnet wird nur, solange der Server existiert; du kannst ihn jederzeit testen und löschen.
Mehr zu diesem Einsatz auf der Seite VPS für Bots.
Server vorbereiten
Verbinde dich als root mit der IP-Adresse aus deinem Dashboard, aktualisiere das System und lege einen eigenen Benutzer für den Bot an. Den Bot als root zu betreiben ist keine gute Idee: Wird der Bot kompromittiert, ist der ganze Server betroffen.
ssh root@YOUR_SERVER_IP
apt update && apt upgrade -y
apt install -y python3 python3-venv ufw
adduser --disabled-password --gecos "" botuserBot installieren
Wechsle zum neuen Benutzer, lege eine virtuelle Umgebung an, damit die Bibliotheken des Bots vom System getrennt bleiben, und installiere die Telegram-Bibliothek.
su - botuser
mkdir -p ~/bot && cd ~/bot
python3 -m venv venv
./venv/bin/pip install python-telegram-botSpeichere einen minimalen Bot als bot.py in diesem Ordner. Er antwortet auf /start, das genügt, um zu zeigen, dass alles funktioniert. Ersetze ihn später durch deinen eigenen Code.
import os
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("The bot is running 24/7")
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()Lass den Bot-Token nicht im Code stehen. Lege ihn in eine Datei, die nur der Bot-Benutzer lesen darf:
echo 'BOT_TOKEN=PASTE_YOUR_TOKEN_FROM_BOTFATHER' > ~/bot/.env
chmod 600 ~/bot/.env
exitAls systemd-Dienst ausführen
Erstelle wieder als root die Dienstdatei. Restart=always ist die Zeile, die den Bot am Leben hält.
nano /etc/systemd/system/bot.service[Unit]
Description=Telegram bot
After=network-online.target
Wants=network-online.target
[Service]
User=botuser
WorkingDirectory=/home/botuser/bot
EnvironmentFile=/home/botuser/bot/.env
ExecStart=/home/botuser/bot/venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetAktiviere den Start bei jedem Boot, starte den Dienst jetzt und prüfe, ob er läuft:
systemctl daemon-reload
systemctl enable --now bot
systemctl status bot
journalctl -u bot -fSende deinem Bot in Telegram /start: Er sollte antworten. Mit Strg+C verlässt du die Log-Ansicht. Nach Codeänderungen übernimmst du sie mit systemctl restart bot.
Server absichern
Ein Bot mit Polling baut nur ausgehende Verbindungen auf, daher muss nur SSH offen sein:
ufw allow OpenSSH
ufw enableEine ehrliche Einschränkung: Dieser Leitfaden nutzt Polling, den einfachsten Weg. Webhooks reagieren schneller, brauchen aber einen Domainnamen und HTTPS; starte also mit Polling und wechsle nur bei Bedarf.
Was für einen Bot-Server nützlich ist
- Stündliche Abrechnung — starte einen zweiten Server, um eine riskante Änderung zu testen, lösche ihn danach und zahle nur wenige Stunden.
- Snapshots — sichere vor einem großen Update; du kannst sie später auf einem neuen Server wiederherstellen (7 Tage aufbewahrt).
- Sofortiger IP-Tausch — auf Vultr-Servern kannst du eine auf einer Sperrliste gelandete Adresse ändern, ohne den Server neu aufzubauen.
- Kostenloser DDoS-Schutz in jedem Tarif.
FAQ
Brauche ich einen Domainnamen? Nein. Ein Bot mit Polling braucht nur die IP-Adresse des Servers.
Startet der Bot nach einem Neustart wieder? Ja. systemctl enable startet ihn beim Booten, und Restart=always holt ihn nach einem Absturz zurück.
Was kostet der Betrieb? Der Tarif Quark kostet 10 $ im Monat, stündlich abgerechnet, bezahlen kannst du mit Krypto.
Jetzt starten
Tarife ab 10 $ im Monat, stündlich abgerechnet. Server bereitstellen und den Bot starten.