Ein Telegram-Bot, der nur läuft, während dein Laptop offen ist, läuft nicht wirklich — er zeigt eine Demo. Damit er tatsächlich online ist, um 3 Uhr antwortet, deine Neustarts und seine eigenen Abstürze übersteht, muss er auf einem Server leben. Hier ist der ganze Weg, von Anfang bis Ende, mit den Befehlen.
Zuerst die gute Nachricht: ein Bot ist eine winzige Workload. Er sitzt meist untätig und wartet auf Nachrichten, also betreibt ihn die günstigste Maschine gut — keine dedizierte IP, keine Domain, nichts Ausgefallenes.
1. Ein Token von BotFather holen
Schreib in Telegram @BotFather, sende /newbot, wähle einen Namen und Benutzernamen. Er gibt dir ein Token, das wie 12345:AAH... aussieht. Behandle es wie ein Passwort — wer es hat, kontrolliert deinen Bot.
2. Ein minimaler Bot
Logge dich per SSH auf den Server, richte Python und die Bibliothek ein:
sudo apt update && sudo apt install -y python3-venv
mkdir ~/mybot && cd ~/mybot
python3 -m venv venv && source venv/bin/activate
pip install python-telegram-bot
Ein Bot, der antwortet — ~/mybot/bot.py:
import os
from telegram.ext import ApplicationBuilder, CommandHandler
async def start(update, ctx):
await update.message.reply_text("Alive and on a server. 🟢")
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
Beachte, dass er das Token aus einer Umgebungsvariablen liest — nicht fest codiert. Das ist im nächsten Schritt wichtig.
3. Der Teil, der ihn wirklich am Laufen hält: systemd
Wenn du nur python bot.py ausführst, stirbt er in dem Moment, in dem du SSH schließt. Ein systemd-Dienst ist das, was ihn das Abmelden, Abstürze und Neustarts überleben lässt. Erstelle /etc/systemd/system/mybot.service:
[Unit]
Description=Telegram bot
After=network-online.target
[Service]
WorkingDirectory=/home/youruser/mybot
Environment=BOT_TOKEN=12345:AAH...your-token
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser
[Install]
WantedBy=multi-user.target
Dann:
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot # sollte active (running) sagen
journalctl -u mybot -f # Live-Logs
Restart=always ist die Zeile, die die eigentliche Arbeit macht — Absturz, und er ist in 5 Sekunden zurück. enable bedeutet, dass er nach einem Neustart hochkommt. Das ist der ganze Unterschied zwischen „ich habe einen Bot einmal ausgeführt“ und „mein Bot ist oben“.
4. Warum keine Domain oder offene Ports
Der Bot nutzt Long Polling — er greift zu Telegram nach Updates hinaus, also muss nichts hereinreichen. Keine öffentliche URL, keine eingehende Firewall-Regel, keine dedizierte IP. Genau deshalb ist ein NAT-VPS (geteilte IP, SSH auf einem Port) ein gutes und günstiges Zuhause für einen Bot. Webhooks gibt es für sehr hohes Volumen, aber du brauchst sie zum Start mit ziemlicher Sicherheit nicht.
Ehrliche Einschränkungen
- Token-Hygiene: hier steht es der Klarheit halber inline in der Unit-Datei — okay auf einer abgeriegelten Maschine, aber für alles Geteilte lade es stattdessen aus einer nur-root-
EnvironmentFileund committe es nie in Git. Geleakt? In BotFather widerrufen, ein neues ausstellen. - Schwere Bots: wenn dein Bot die Arbeit selbst macht (Bildgenerierung, ein lokales Modell), ist er nicht mehr winzig — skaliere entsprechend hoch.
Das war's. Riegle die Maschine zuerst mit der Sicherheits-Checkliste ab, wirf den Dienst hinein, und dein Bot bleibt online, egal ob du es bist. Auf einem krypto-bezahlten VPS kannst du ihn eine Minute, nachdem du dich entscheidest, laufen haben.
Kommentare
Noch keine Kommentare. Sei der Erste.