Zum Inhalt springen

Lösungen · Bots

VPS für einen Telegram-Bot mieten

Ein Bot belegt im Leerlauf unter hundert Megabyte und verbringt sein Leben mit Warten, die Maschine ist also fast nie der Engpass: U1-1 für $6.90 im Monat betreibt einen problemlos. Was Ihre Rechnung tatsächlich bestimmt, sind Medien und ob Sie einen eigenen Bot-API-Server betreiben. Beides ist Rechnerei, und beides steht unten.

Die Entscheidung hinter der Entscheidung

Webhook oder Long Polling

Das entscheidet, nicht der Tarif, ob Ihr Bot eine Domain, ein Zertifikat und einen offenen Port braucht.

Long Polling

Ihr Bot verbindet sich ausgehend mit Telegram und wartet auf Updates. Keine Domain, kein TLS-Zertifikat, kein zum Internet offener Port, funktioniert hinter NAT. So bekommen Sie am schnellsten etwas zum Laufen, und für die meisten Bots ist das eine völlig gute Dauerlösung.

Webhook

Telegram verbindet sich mit Ihnen. Erfordert eine öffentliche Adresse, ein gültiges Zertifikat und einen offenen Port, was jeder Tarif hier kann; im Gegenzug gibt es keine Polling-Schleife und es skaliert besser unter echter Last. Wechseln Sie, wenn Last oder Latenz es verlangen, nicht früher.

Die Rechnung

Wie viele Bots ein Tarif tatsächlich trägt

Bots = (RAM − 300 MB Betriebssystem) ÷ Bedarf eines Bots. Die beiden Spalten sind ein zustandsloser Befehls-Bot und einer mit ORM, Scheduler und Cache.

Bot-Prozess-Kapazität und monatliches Traffic-Inklusivvolumen je Tarif, mit aktuellen Preisen
TarifRAMLeichte BotsSchwere BotsTrafficPreisBereitstellen
U1-1Ein Bot, jede Publikumsgröße1 GB124Unmetered$6.90Bereitstellen
C1-1-25Ein Bot, mit Trafficzählung, aber günstig1 GB1241 TB$9.90Bereitstellen
GL2-4Mehrere Bots oder ein Bot mit Datenbank4 GB6325Unmetered$11.90Bereitstellen
BD-8Ein selbst gehosteter Bot-API-Server8 GB1315232 TB$12.90Bereitstellen

Die Zahl der Nutzer Ihres Bots kommt in dieser Rechnung nicht vor, weil sie im Problem nicht vorkommt: Telegram übergibt Ihrem Prozess Updates nacheinander, statt pro Nutzer eine Verbindung zu öffnen. Was die Antwort ändert, ist Zustand, den Sie selbst halten: ein großer Cache, eine Datenbank im Prozess, ein Modell.

Die Zahl, die über die Rechnung entscheidet

Medien, nicht Arbeitsspeicher

Durchschnittliche Dateigröße × Nachrichten pro Tag × 30. Beide Richtungen zählen: Auch eine empfangene Datei ist Traffic.

Monatlicher Traffic nach Nachrichtentyp bei hundert, fünftausend und fünfzigtausend Nachrichten pro Tag
Was der Bot überträgt100/Tag5,000/Tag50,000/Tag
Nur TextEin Befehl und eine Antwort. Praktisch vernachlässigbar.< 1 GB< 1 GB3 GB
FotosEin komprimiertes Bild, gesendet und empfangen.< 1 GB44 GB439 GB
Sprachnachrichten und kurze VideosDie übliche Last eines Community-Bots.9 GB439 GB4.3 TB
Dokumente und lange VideosTelegrams eigene Download-Obergrenze für einen einfachen Bot.59 GB2.9 TB28.6 TB

Das Einzige, was die Maschine ändert

Ein Bot an der öffentlichen Bot API kann Dateien bis 20 MB herunterladen und bis 50 MB hochladen (Telegrams Grenzen, nicht unsere), und die Dateien berühren Ihre Festplatte nie. Betreiben Sie einen eigenen Bot-API-Server, liegt die Obergrenze bei 2 GB und jede Datei landet auf Ihrem Server. Ab hier sind Speicherplatz und Traffic nicht mehr nebensächlich: BD-8 bietet 100 GB SSD und 32 TB für $12.90, genau das passende Profil. Wenn Sie das nicht tun, zahlen Sie nicht dafür.

Ehrlich gesagt

Was wir tatsächlich kaufen würden

Wir betreiben selbst einen Telegram-Bot. Auf diese Maschine würden wir ihn setzen.

Für einen Bot

U1-1 · $6.90/Monat

1 Kern, 1 GB, 15 GB SSD und kein Traffic-Zähler: Ein Bot, der unerwartet Medien überträgt, kann Ihnen keine unerwartete Rechnung bescheren. Betreiben Sie den Bot unter systemd mit Restart=always, dann kann er nur noch durch Ihren eigenen Code ausfallen. Wenn Sie herauswachsen, heißt einen Bot umziehen: ein Verzeichnis und ein Token kopieren.

Fragen

Was Kunden vor dem Kauf fragen.

Wie viel RAM braucht ein Telegram-Bot?
Viel weniger, als meist verkauft wird. Ein Bot ist ein langlebiger Prozess, der fast die ganze Zeit wartet: Ein zustandsloser Befehls-Bot liegt bei etwa 60 MB, einer mit ORM, Scheduler und Cache eher bei 150 MB. Nachdem das Betriebssystem seine rund 300 MB belegt hat, bietet eine Maschine mit 1 GB noch Platz für 4 schwere oder 12 leichte Bots. Die Zahl der NUTZER spielt kaum eine Rolle, weil Telegram Updates einzeln an Ihren Prozess liefert, nicht eine Verbindung pro Nutzer. Was die Antwort ändert, ist Zustand, den Sie selbst im Speicher halten: ein großer Cache, eine In-Process-Datenbank, ein Modell.
Webhook oder Long Polling?
Zum Start Long Polling, Webhooks, wenn es darauf ankommt. Bei Long Polling baut Ihr Bot eine ausgehende Verbindung zu Telegram auf und wartet: Er braucht keine Domain, kein Zertifikat und keinen offenen Port, funktioniert also hinter NAT und ist der schnellste Weg, etwas zum Laufen zu bringen. Bei einem Webhook verbindet sich Telegram mit IHNEN, daher braucht er eine öffentliche Adresse, ein gültiges TLS-Zertifikat und einen zum Internet offenen Port; im Gegenzug entfällt die Polling-Schleife vollständig und er skaliert besser, wenn der Bot wirklich ausgelastet ist. Beides läuft problemlos auf der kleinsten Maschine hier. Der ehrliche Grund zu wechseln ist Last oder Latenz, nicht Mode.
Wie groß dürfen Dateien sein?
Das sind Telegrams eigene Grenzen, nicht unsere: Ein Bot, der die öffentliche Bot API nutzt, kann Dateien bis 20 MB herunterladen und bis 50 MB hochladen. Ein eigener Bot-API-Server hebt das auf 2 GB an und sorgt vor allem dafür, dass die Dateien auf dem Speicherplatz Ihres Servers landen, statt über Telegram zu laufen. Das ist die eine Änderung, die wirklich bestimmt, welche Maschine Sie brauchen: Plötzlich zählen Speicherplatz und Traffic, und deshalb steht in der Tabelle oben BD-8 bei dieser Zeile und nicht bei den anderen.
Geht mir die Bandbreite aus?
Ein Text-Bot nie. Ein Medien-Bot möglicherweise, und dreißig Sekunden Rechnen lohnen sich: durchschnittliche Dateigröße × Nachrichten pro Tag × 30. Fünfzigtausend Sprachnachrichten am Tag à 3 MB ergeben etwa 4.3 TB im Monat, mehr als das Inklusivvolumen der meisten günstigen Tarife und weit unter den 32 TB bei BD-8, oder der Linie Unmetered, bei der sich die Frage nicht stellt. Beide Richtungen zählen: Eine Datei, die Ihr Bot empfängt, und eine, die er sendet, sind beide Traffic.
Wie bleibt der Bot aktiv, nachdem ich das Terminal schließe?
Eine systemd-Unit, keine screen-Sitzung. Schreiben Sie eine kleine Service-Datei mit Restart=always, aktivieren Sie sie, und der Bot startet nach einem Absturz und nach einem Neustart wieder, ohne dass Sie dafür wach sein müssen. Das ist der häufigste Grund, warum ein Bot auf einem VPS „ausfällt“, und es ist kein Hosting-Problem: Ein von Hand gestarteter Prozess endet mit der SSH-Sitzung, die ihn gestartet hat. Docker mit einer Restart-Policy erledigt dasselbe, wenn Sie es lieber so verpacken.
Kann ich mehrere Bots auf einem Server betreiben?
Ja, und die meisten sollten das tun. Jeder ist ein eigener Prozess mit eigener systemd-Unit und eigenem Token; sie teilen sich die Maschine, auf Wunsch die Datenbank, und sonst nichts. Die Rechnung in der Tabelle beantwortet genau diese Frage: Eine Maschine mit 4 GB trägt 25 anspruchsvolle Bots, bevor der Arbeitsspeicher zur Grenze wird. Nutzen Sie getrennte Ports und getrennte Benutzer, wenn die Bots für verschiedene Personen sind.
In welcher Region sollte der Bot laufen?
Überall, wo Ihre Nutzer hinkommen und Ihre Latenz zu Telegram vernünftig ist: Der Bot kommuniziert mit der Infrastruktur von Telegram, nicht direkt mit Ihren Nutzern, daher zählt die übliche Regel „nah an Ihrem Publikum“ hier weniger als bei einer Website. Wenn der Bot denselben Nutzern auch ein Web-Dashboard oder eine API bereitstellt, wählen Sie die Region danach. Wenn Sie unsicher sind, stellen Sie stundenweise in zwei Regionen bereit, messen Sie und löschen Sie die schlechtere: Bei $0.0113 pro Stunde ist das ein günstiges Experiment.