Przejdź do treści

Rozwiązania · Boty

Serwer VPS dla bota Telegram

Bot w stanie bezczynności zajmuje mniej niż sto megabajtów i większość czasu spędza na czekaniu, więc maszyna prawie nigdy nie jest ograniczeniem: U1-1 za $6.90 miesięcznie w zupełności go obsłuży. O rachunku decydują w praktyce multimedia oraz to, czy uruchamiają Państwo własny serwer Bot API. W obu przypadkach to kwestia rachunku, a oba rachunki znajdą Państwo poniżej.

Decyzja pod decyzją

Webhook czy long polling

To, a nie plan, decyduje, czy bot potrzebuje domeny, certyfikatu i otwartego portu.

Long polling

Bot łączy się z Telegramem i czeka na aktualizacje. Bez domeny, bez certyfikatu TLS, bez portu otwartego do internetu, działa za NAT. To najszybszy sposób na uruchomienie czegokolwiek i w pełni dobre rozwiązanie na stałe dla większości botów.

Webhook

Telegram łączy się z Państwem. Wymaga publicznego adresu, ważnego certyfikatu i otwartego portu (każdy plan z tej strony to zapewnia), a w zamian nie ma pętli odpytywania i rozwiązanie lepiej skaluje się przy realnym obciążeniu. Warto przejść, gdy wskazuje na to obciążenie lub opóźnienie, nie wcześniej.

Rachunek

Ile botów faktycznie mieści plan

Boty = (RAM − 300 MB na system operacyjny) ÷ pamięć zajmowana przez jednego bota. Dwie kolumny to bezstanowy bot poleceń oraz bot z ORM, harmonogramem i cache.

Pojemność procesów botów i miesięczny limit transferu dla każdego planu, z aktualnymi cenami
PlanRAMLekkie botyCiężkie botyTransferCenaWdróż
U1-1Jeden bot, dowolna liczba odbiorców1 GB124Unmetered$6.90Wdróż
C1-1-25Jeden bot, z liczonym transferem, ale tanio1 GB1241 TB$9.90Wdróż
GL2-4Kilka botów lub bot z bazą danych4 GB6325Unmetered$11.90Wdróż
BD-8Własny serwer Bot API8 GB1315232 TB$12.90Wdróż

Liczby użytkowników bota nie ma w tym rachunku, bo nie ma jej w problemie: Telegram przekazuje procesowi aktualizacje po jednej, zamiast otwierać połączenie dla każdego użytkownika. Odpowiedź zmienia stan, który sami Państwo przechowują: duży cache, baza danych w procesie, model.

Liczba, która decyduje o rachunku

Multimedia, nie pamięć

Średni rozmiar pliku × wiadomości dziennie × 30. Liczą się oba kierunki: odebrany plik to także transfer.

Miesięczny transfer według typu wiadomości przy stu, pięciu tysiącach i pięćdziesięciu tysiącach wiadomości dziennie
Co przesyła bot100/dzień5,000/dzień50,000/dzień
Tylko tekstPolecenie i odpowiedź. W praktyce nic nie kosztuje.< 1 GB< 1 GB3 GB
ZdjęciaSkompresowany obraz, wysłany i odebrany.< 1 GB44 GB439 GB
Wiadomości głosowe i krótkie wideoTypowe obciążenie bota społeczności.9 GB439 GB4.3 TB
Dokumenty i długie wideoLimit pobierania samego Telegrama dla zwykłego bota.59 GB2.9 TB28.6 TB

Jedyna rzecz, która zmienia wybór maszyny

Bot korzystający z publicznego Bot API może pobierać pliki do 20 MB i wysyłać do 50 MB (to limity Telegrama, nie nasze), a pliki nigdy nie trafiają na Państwa dysk. Po uruchomieniu własnego serwera Bot API limit rośnie do 2 GB, a każdy plik ląduje na Państwa serwerze. Wtedy dysk i transfer przestają być sprawą drugorzędną: BD-8 daje 100 GB SSD i 32 TB za $12.90, a to właściwe proporcje. Jeśli Państwo tego nie robią, nie warto za to płacić.

Szczerze

Co kupilibyśmy sami

Sami prowadzimy bota Telegram. Na takiej maszynie byśmy go uruchomili.

Dla jednego bota

U1-1 · $6.90/mies.

1 rdzeń, 1 GB, 15 GB SSD i brak licznika transferu, więc bot, który nieoczekiwanie zacznie przesyłać multimedia, nie wygeneruje nieoczekiwanego rachunku. Wystarczy uruchomić bota pod systemd z Restart=always, a jedynym sposobem, by przestał działać, pozostanie Państwa własny kod. Gdy przestanie wystarczać, przeniesienie bota to skopiowanie katalogu i tokenu.

Pytania

O co ludzie pytają przed zakupem.

Ile RAM potrzebuje bot Telegram?
Znacznie mniej, niż zwykle się sprzedaje. Bot to długotrwały proces, który niemal cały czas czeka: bezstanowy bot poleceń zajmuje około 60 MB, a bot z ORM, harmonogramem i cache bliżej 150 MB. Po odjęciu mniej więcej 300 MB na system operacyjny maszyna z 1 GB wciąż mieści 4 ciężkich botów lub 12 lekkich. Liczba UŻYTKOWNIKÓW prawie nie ma znaczenia, ponieważ Telegram dostarcza aktualizacje do procesu po jednej, a nie przez osobne połączenie na użytkownika. Odpowiedź zmienia natomiast stan, który sami Państwo trzymają w pamięci: duży cache, baza danych w procesie, model.
Webhook czy long polling?
Na start long polling, webhooki wtedy, gdy ma to znaczenie. Przy long pollingu bot otwiera połączenie wychodzące do Telegrama i czeka: nie potrzebuje domeny, certyfikatu ani otwartego portu, więc działa za NAT i jest najszybszym sposobem na uruchomienie czegokolwiek. Przy webhooku to Telegram łączy się z PAŃSTWEM, więc potrzebny jest publiczny adres, ważny certyfikat TLS i port otwarty do internetu; w zamian znika całkowicie pętla odpytywania, a rozwiązanie lepiej się skaluje, gdy bot jest naprawdę obciążony. Oba sposoby działają bez problemu na najmniejszej maszynie z tej strony. Uczciwym powodem do zmiany jest obciążenie lub opóźnienie, a nie moda.
Jakie są limity rozmiaru plików?
Limity Telegrama, nie nasze: bot korzystający z publicznego Bot API może pobierać pliki do 20 MB i wysyłać do 50 MB. Własny serwer Bot API podnosi ten limit do 2 GB i, co ważniejsze, sprawia, że pliki trafiają na dysk Państwa serwera, zamiast przechodzić przez serwery Telegrama. To jedyna zmiana, która naprawdę wpływa na wybór maszyny: nagle liczą się dysk i transfer, dlatego tabela powyżej przypisuje BD-8 do tego wiersza, a nie do pozostałych.
Czy zabraknie mi transferu?
Bot tekstowy: nigdy. Bot multimedialny: być może, i warto poświęcić trzydzieści sekund na rachunek: średni rozmiar pliku × wiadomości dziennie × 30. Pięćdziesiąt tysięcy wiadomości głosowych dziennie po 3 MB to około 4.3 TB miesięcznie, czyli więcej niż limit większości tanich planów, a zarazem daleko od 32 TB w BD-8 (albo od linii bez liczenia transferu, gdzie to pytanie nie istnieje). Liczą się oba kierunki: plik odebrany przez bota i plik przez niego wysłany to w obu przypadkach transfer.
Jak utrzymać działanie bota po zamknięciu terminala?
Jednostka systemd, nie sesja screen. Wystarczy napisać mały plik usługi z Restart=always i go włączyć, a bot wróci po awarii i po restarcie bez Państwa udziału. To najczęstszy powód, dla którego bot „pada” na VPS, i nie jest to problem hostingu: proces uruchomiony ręcznie kończy się razem z sesją SSH, która go uruchomiła. Docker z polityką restartu wykonuje to samo zadanie, jeśli wolą Państwo takie opakowanie.
Czy mogę uruchomić kilka botów na jednym serwerze?
Tak, i większość osób powinna tak robić. Każdy bot to osobny proces z własną jednostką systemd i własnym tokenem; dzielą maszynę, w razie potrzeby bazę danych i nic więcej. Rachunek w tabeli odpowiada dokładnie na to pytanie: maszyna z 4 GB mieści 25 ciężkich botów, zanim pamięć stanie się ograniczeniem. Jeśli boty są dla różnych osób, proszę uruchamiać je na osobnych portach i osobnych użytkownikach.
W jakim regionie powinien działać bot?
W dowolnym miejscu, do którego mają dostęp Państwa użytkownicy i z którego opóźnienie do Telegrama jest rozsądne. Bot komunikuje się z infrastrukturą Telegrama, a nie bezpośrednio z użytkownikami, więc zwykła zasada „blisko odbiorców” ma tu mniejsze znaczenie niż w przypadku strony internetowej. Jeśli bot udostępnia też tym samym użytkownikom panel webowy lub API, region należy dobrać pod to. W razie wątpliwości proszę wdrożyć serwery na godziny w dwóch regionach, zmierzyć i usunąć ten, który wypadnie gorzej: przy $0.0113 za godzinę to tani eksperyment.