Přeskočit na obsah

Řešení · Boti

VPS pro bota na Telegramu

Bot v nečinnosti zabírá méně než sto megabajtů a většinu času čeká, takže stroj téměř nikdy není omezením: U1-1 za $6.90 měsíčně jeden bez potíží utáhne. O vašem účtu ve skutečnosti rozhodují média a to, zda provozujete vlastní server Bot API. Obojí je otázka výpočtu a obojí najdete níže.

Rozhodnutí pod rozhodnutím

Webhook, nebo long polling

Právě toto, ne tarif, rozhoduje o tom, zda váš bot potřebuje doménu, certifikát a otevřený port.

Long polling

Váš bot se připojuje ven k Telegramu a čeká na aktualizace. Žádná doména, žádný TLS certifikát, žádný port otevřený do internetu, funguje i za NAT. Je to nejrychlejší způsob, jak něco zprovoznit, a pro většinu botů naprosto dobré trvalé řešení.

Webhook

Telegram se připojuje k vám. Vyžaduje veřejnou adresu, platný certifikát a otevřený port (to vše zvládne kterýkoli tarif zde) a výměnou odpadá smyčka dotazování a lépe se škáluje při skutečné zátěži. Přejděte, až to bude vyžadovat zátěž nebo latence, ne dřív.

Výpočet

Kolik botů tarif skutečně unese

Boti = (RAM − 300 MB pro operační systém) ÷ paměť jednoho bota. Dva sloupce představují bezstavového bota na příkazy a bota s ORM, plánovačem a cache.

Kapacita pro procesy botů a měsíční objem přenosu u každého tarifu, s aktuálními cenami
TarifRAMLehcí botiNároční botiPřenosCenaNasadit
U1-1Jeden bot, publikum libovolné velikosti1 GB124Unmetered$6.90Nasadit
C1-1-25Jeden bot, s měřeným, ale levným provozem1 GB1241 TB$9.90Nasadit
GL2-4Více botů nebo bot s databází4 GB6325Unmetered$11.90Nasadit
BD-8Vlastní server Bot API8 GB1315232 TB$12.90Nasadit

Počet uživatelů vašeho bota v tomto výpočtu není, protože není ani v problému: Telegram předává vašemu procesu aktualizace jednu po druhé, místo aby otevíral spojení pro každého uživatele. Odpověď mění stav, který držíte sami: velká cache, databáze v procesu, model.

Číslo, které rozhoduje o účtu

Média, ne paměť

Průměrná velikost souboru × zprávy za den × 30. Počítají se oba směry: přijatý soubor je také přenos.

Měsíční přenos podle typu zpráv při sto, pěti tisících a padesáti tisících zprávách denně
Co bot přenáší100/den5,000/den50,000/den
Pouze textPříkaz a odpověď. Prakticky zadarmo.< 1 GB< 1 GB3 GB
FotografieKomprimovaný obrázek, odeslaný i přijatý.< 1 GB44 GB439 GB
Hlasové zprávy a krátká videaObvyklá zátěž komunitního bota.9 GB439 GB4.3 TB
Dokumenty a dlouhá videaVlastní limit Telegramu pro stahování u běžného bota.59 GB2.9 TB28.6 TB

Jediná věc, která mění volbu stroje

Bot na veřejném Bot API může stahovat soubory do 20 MB a nahrávat do 50 MB (jsou to limity Telegramu, ne naše) a soubory se nikdy nedostanou na váš disk. Spusťte vlastní server Bot API a strop se zvýší na 2 GB a každý soubor skončí na vašem serveru. Tehdy přestávají být disk a přenos vedlejší: BD-8 vám dá 100 GB SSD a 32 TB za $12.90, což je vhodná kombinace. Pokud to neděláte, neplaťte za to.

Upřímně

Co bychom skutečně koupili

Sami provozujeme Telegram bota. Tohle je stroj, na který bychom ho dali.

Pro jednoho bota

U1-1 · $6.90/měs.

1 jádro, 1 GB, 15 GB SSD a žádné měření přenosu, takže bot, který nečekaně začne přenášet média, vám nemůže způsobit nečekaný účet. Spusťte bota pod systemd s Restart=always a jediným zbývajícím důvodem výpadku bude váš vlastní kód. Pokud z něj vyrostete, přesun bota znamená zkopírovat adresář a token.

Otázky

Na co se lidé ptají před koupí.

Kolik RAM potřebuje Telegram bot?
Mnohem méně, než se obvykle prodává. Bot je dlouhodobě běžící proces, který téměř celou dobu čeká: bezstavový bot na příkazy zabírá kolem 60 MB a bot s ORM, plánovačem a cache se blíží 150 MB. Když si operační systém vezme svých zhruba 300 MB, stroj s 1 GB má stále místo pro 4 náročných botů nebo 12 lehkých. Počet UŽIVATELŮ do toho téměř nevstupuje, protože Telegram doručuje aktualizace vašemu procesu jednu po druhé, ne jedno spojení na uživatele. Odpověď mění stav, který sami držíte v paměti: velká cache, databáze v procesu, model.
Webhook, nebo long polling?
Na začátek long polling, webhooky až tehdy, když na tom záleží. Při long pollingu váš bot otevře odchozí spojení k Telegramu a čeká: nepotřebuje doménu, certifikát ani otevřený port, takže funguje za NAT a je to nejrychlejší způsob, jak něco rozběhnout. U webhooku se Telegram připojuje k VÁM, takže potřebujete veřejnou adresu, platný certifikát TLS a port otevřený do internetu; výměnou zcela odpadá smyčka dotazování a lépe se škáluje, když je bot skutečně vytížený. Obojí bez problémů běží i na nejmenším stroji zde. Upřímným důvodem k přechodu je zátěž nebo latence, ne móda.
Jaká jsou omezení velikosti souborů?
Limity Telegramu, ne naše: bot využívající veřejné Bot API může stahovat soubory do 20 MB a nahrávat do 50 MB. Vlastní server Bot API zvyšuje limit na 2 GB a hlavně způsobí, že soubory končí na disku vašeho serveru, místo aby procházely přes Telegram. To je jediná změna, která skutečně mění, jaký stroj potřebujete: najednou záleží na disku a přenosu, a proto tabulka výše přiřazuje BD-8 k tomuto řádku a ne k ostatním.
Nedojde mi přenosová kapacita?
Textový bot nikdy. Bot s médii možná, a vyplatí se mu věnovat třicet sekund počítání: průměrná velikost souboru × zprávy za den × 30. Padesát tisíc hlasových zpráv denně po 3 MB je zhruba 4.3 TB měsíčně, což překračuje limit většiny levných tarifů a zdaleka nedosahuje 32 TB u tarifu BD-8, natož řady Unmetered, kde tato otázka vůbec nevzniká. Počítají se oba směry: soubor, který bot přijme, i soubor, který odešle, jsou přenos.
Jak udržet bota v chodu po zavření terminálu?
Jednotka systemd, ne relace screen. Napište krátký soubor služby s Restart=always, povolte ho a bot se po pádu i po restartu vrátí, aniž byste u toho museli být. Je to vůbec nejčastější důvod, proč bot na VPS „spadne“, a nejde o problém hostingu: proces spuštěný ručně skončí spolu s relací SSH, která ho spustila. Stejnou službu udělá Docker se zásadou restartu, pokud to raději chcete zabalit takto.
Mohu na jednom serveru provozovat více botů?
Ano, a většina lidí by to tak měla dělat. Každý bot je samostatný proces s vlastní jednotkou systemd a vlastním tokenem; sdílejí stroj, případně databázi, a nic jiného. Výpočet v tabulce odpovídá přesně na tuto otázku: stroj s 4 GB pojme 25 náročných botů, než se omezením stane paměť. Pokud jsou pro různé lidi, držte je na samostatných portech a pod samostatnými uživateli.
V jaké oblasti by měl bot běžet?
Kdekoli, kam dosáhnou vaši uživatelé a kde je latence k Telegramu rozumná: bot komunikuje s infrastrukturou Telegramu, ne přímo s vašimi uživateli, takže obvyklé pravidlo „blízko publiku“ zde platí méně než u webu. Pokud bot týmž uživatelům poskytuje i webový panel nebo API, vybírejte oblast podle toho. Pokud si nejste jisti, nasaďte po hodinách ve dvou oblastech, změřte to a horší server zrušte: při $0.0113 za hodinu je to levný pokus.