Přejít na hlavní obsah
Sleva 50% všechny plány, omezený čas. Od $2.48/mo
Zbývající čas: 11 min
Cloudová architektura a IT

Nejlepší VPS pro Telegram bota: polling, webhooky, IPv4 a měsíční náklady

C Autor: Chike 11 min čtení
Hosting Telegram bota na VPS s nepřetržitým připojením

Bot odpovídá na každou zprávu, dokud nezavřete víko notebooku. Pak už uživatelé žádnou odpověď nedostanou. Malý VPS to vyřeší za pár dolarů měsíčně. Nejlepší VPS pro Telegram bota závisí na tom, jak bot získává aktualizace: buď o ně žádá Telegram, nebo je Telegram posílá botovi.

Tato volba určuje potřebné porty a certifikát i to, zda je nutné veřejné připojení IPv4.

Zkrácená verze

  • Pro jednoho bota na VPS použijte long polling. Nepotřebuje doménu, certifikát ani otevřený port.
  • Webhooky vyžadují HTTPS na portu 443, 80, 88 nebo 8443 a veřejnou adresu IPv4. Telegram neposílá webhooky přes IPv6.
  • 512 MB of RAM is a workable start for one bot with no local database.
  • Udržujte bota v chodu pomocí systemd nebo zásady restartování Dockeru, pokud již nasazujete kontejnery.
  • Poskytovatele vybírejte podle IPv4 a rezervy RAM, ne pouze podle ceníkové ceny.

Polling, nebo webhooky: volba, která určuje požadavky na server

Spojení long pollingu a webhooků mezi Telegramem a VPS

Telegram bot získává aktualizace jedním ze dvou způsobů. Při long pollingu bot volá getUpdates a Telegram drží požadavek otevřený, dokud nepřijde aktualizace nebo nevyprší časový limit. Každé spojení tedy začíná na vašem serveru. U webhooku jednou zaregistrujete URL pomocí setWebhook a Telegram na ni každou aktualizaci odešle metodou POST přes HTTPS.

Požadavek Long polling (getUpdates) Webhook (setWebhook)
Příchozí port Žádný; pouze odchozí požadavky HTTPS na 443, 80, 88 nebo 8443
Veřejná IPv4 Není vyžadována Vyžadována; webhooky nepodporují IPv6
Doména a certifikát Nejsou potřeba Certifikát je povinný; běžně se používá doména, ale certifikát podepsaný vlastním klíčem může mít IP adresu jako CN
Proces Běží nepřetržitě Nepřetržitě odpovídá na požadavky HTTPS

Sloupec webhooku odpovídá požadavkům Telegramu na webhooky.

Chcete-li zjistit, kterou metodu bot používá, zeptejte se Bot API:

curl "https://api.telegram.org/bot<YOUR_TOKEN>/getWebhookInfo"

Pokud odpověď obsahuje "url":"", není nastaven žádný webhook a bot může používat long polling. Funkce bot.start() v grammY používá long polling ve výchozím nastavení; python-telegram-bot používá run_polling() nebo run_webhook().

Pro jednoho bota na vlastním VPS bych zvolil polling, což je i výchozí doporučení grammY. Webhooky jsou výhodnější, když už na serveru běží reverzní proxy (webový server předávající požadavky HTTPS botovi), když více botů sdílí jeden koncový bod HTTPS nebo na serverless platformě. V takovém případě Caddy získává a obnovuje certifikát bez úlohy cron.

Krátký výpadek zprávy zdrží, ale neztratí. Podle pravidel Bot API pro aktualizace Telegram ukládá aktualizace až 24 hodin, dokud je bot nepřevezme, u obou metod, a opakuje neúspěšné požadavky webhooku, než to vzdá.

Pokud webhook používá svůj port přímo, omezte přístup na zdrojové rozsahy zveřejněné Telegramem. Pokud port 443 sdílí reverzní proxy obsluhující další weby, omezte pouze cestu webhooku nebo použijte tajný token Telegramu místo blokování veškerého ostatního provozu HTTPS. Průvodce webhooky uvádí dva zdrojové rozsahy a upozorňuje, že se mohou změnit. S UFW jako firewallem hostitele:

sudo ufw allow 22/tcp    # keep SSH open before you enable the firewall

sudo ufw allow proto tcp from 149.154.160.0/20 to any port 443

sudo ufw allow proto tcp from 91.108.4.0/22 to any port 443

sudo ufw allow 80/tcp    # if your HTTPS setup uses HTTP validation or redirects HTTP to HTTPS

sudo ufw enable

Změňte 443, pokud webhook naslouchá na 80, 88 nebo 8443. Tato pravidla chrání bota běžícího přímo na hostiteli. Dokumentace firewallu Dockeru uvádí, že publikovaný port obchází UFW, takže kontejner webhooku spuštěný s -p 443:443 zůstává přístupný všem. Nastavte také secret_token v setWebhook. Telegram jej vrací v hlavičce X-Telegram-Bot-Api-Secret-Token každého požadavku a vaše obslužná funkce požadavky bez něj odmítne.

Jak udržet bota v chodu: systemd, nebo Docker

Udržení Telegram bota v chodu pomocí systemd nebo Dockeru

Nepřetržitý provoz Telegram bota vyžaduje restartování po pádu a restartu serveru. Na VPS to zajistí systemd, případně Docker, pokud bota distribuujete jako image.

Jednotka systemd je krátký konfigurační soubor, který systému init říká, jak spustit a restartovat program. Vytvořte /etc/systemd/system/telegram-bot.service:

[Unit]
Description=Telegram bot
After=network-online.target
Wants=network-online.target

[Service]
User=bot
WorkingDirectory=/opt/bot
EnvironmentFile=/opt/bot/.env
ExecStart=/opt/bot/venv/bin/python bot.py
# Node: ExecStart=/usr/bin/node bot.js
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Token uložte do souboru .env ve složce projektu jako BOT_TOKEN=... a načtěte jej přes os.environ["BOT_TOKEN"] (Node: process.env.BOT_TOKEN), aby nebyl přímo v kódu. Pak projekt zkopírujte na správné místo a spusťte jej:

sudo mkdir -p /opt/bot

sudo cp -r ~/your-bot/. /opt/bot/        # your project, after git clone or scp from your machine; include .env and requirements.txt

sudo apt install -y python3-venv         # Debian/Ubuntu

sudo useradd --system --no-create-home bot

sudo chown -R bot:bot /opt/bot

sudo -u bot python3 -m venv /opt/bot/venv

sudo -u bot /opt/bot/venv/bin/pip install -r /opt/bot/requirements.txt

# Node: skip the venv and pip commands above, then run:

cd /opt/bot && sudo -u bot npm ci

sudo chmod 600 /opt/bot/.env

sudo systemctl daemon-reload

sudo systemctl enable --now telegram-bot

systemctl status telegram-bot    # look for: Active: active (running)

sudo journalctl -u telegram-bot -f    # follow the bot's logs

Restart=always restartuje bota po řádném ukončení i pádu; on-failure řádná ukončení vynechává podle manuálu systemd.service. RestartSec=5 odděluje pokusy časovým odstupem a WantedBy=multi-user.target spolu s enable spustí bota při startu systému. Pokud se neustále restartuje, sudo journalctl -u telegram-bot -n 50 zobrazí výpis chyby. Nejprve zkontrolujte, zda nechybí BOT_TOKEN.

Ekvivalent v Dockeru je jeden přepínač:

docker run -d --name telegram-bot --restart unless-stopped --env-file .env your-bot-image

docker logs -f telegram-bot

V Compose jde o řádek restart: unless-stopped. Dokumentace zásad restartování Dockeru uvádí, že se kontejner obnoví po ukončení nebo restartu démona, ale ne poté, co jej sami zastavíte. To pokrývá restart serveru, pokud se Docker spouští při startu systému, což platí ve výchozím nastavení Debianu a Ubuntu. Jinde spusťte sudo systemctl enable docker.service.

Moje pravidlo: jeden skript na malém serveru patří pod systemd, bez dalšího démona v paměti. Pokud už sestavujete image nebo provozujete jiné kontejnery, použijte Docker a počítejte s tím, že jeho démon spotřebuje část RAM.

Ani jeden nástroj vás neupozorní, že bot nefunguje. To zvládne push monitor Uptime Kuma na druhém serveru. Bot pravidelně volá URL monitoru a Uptime Kuma vás upozorní v Telegramu, když volání ustanou.

Kde bezplatný hosting a domácí servery narážejí na limity

Render vypne bezplatnou webovou službu po 15 minutách bez příchozího provozu a dokumentace bezplatné úrovně Renderu uvádí dobu probuzení přibližně jednu minutu. Pollingový bot nepřijímá příchozí provoz, takže je zastaven. Webhookového bota probudí POST z Telegramu, po klidných obdobích se tedy spouští za studena. Vhodnost bezplatného hostingu pro Telegram bota tak závisí na jeho metodě.

Průvodce grammY uvádí serverless platformy jako vhodné pro webhooky, zatímco long polling potřebuje nepřetržitě běžící stroj. Fly.io účtuje podle využití a vyžaduje uloženou platební kartu.

Raspberry Pi nebo starý počítač může provozovat pollingového bota, dokud funguje stroj, napájení i připojení. Webhooky z domova také potřebují veřejnou adresu a přesměrování portů. Pro hobby bota může stačit kterákoli z těchto bezplatných možností.

VPS podporuje obě metody za pevnou měsíční cenu.

Srovnání pěti poskytovatelů VPS pro Telegram bota

Srovnání pěti poskytovatelů VPS pro hosting Telegram botů

Tabulka porovnává pět placených základních tarifů pro hosting Telegram botů podle inzerovaných měsíčních cen, platných k říjnu 2026, bez daní. Akční ceny jsou uvedeny tam, kde platí.

Poskytovatel Parametry základního tarifu Měsíční cena Veřejná IPv4 Fakturace
Cloudzy 1 vCPU (AMD EPYC), 512 MB DDR5, 20 GB NVMe, 1 TB přenosu dat 2,48 USD akčně (4,95 USD běžně) V ceně, navíc IPv6 Hodinově nebo měsíčně
DigitalOcean 1 vCPU, 512 MiB, 10 GiB SSD, 500 GiB přenosu dat Od 4 USD V ceně Po sekundách, maximálně do výše měsíční ceny
Vultr 1 vCPU, 512 MB, 10 GB SSD, 512 GB přenosu dat Od 2,50 USD pouze IPv6; od 3,50 USD s IPv4 Pouze v tarifu za 3,50 USD Hodinově nebo měsíčně
Hetzner (Německo/Finsko) 2 vCPU, 4 GB, 40 GB SSD, 20 TB přenosu dat Od 5,49 EUR bez DPH Příplatek, od 0,50 EUR/měsíc bez DPH (IPv6 zdarma) Hodinově, nejvýše do měsíční ceny
Linode (Akamai) 1 vCPU, 1 GB, 25 GB úložiště, 1 TB přenosu dat Od 5 USD V ceně Hodinově nebo měsíčně

Tarif Vultru pouze s IPv6 nemá IPv4 a cena Hetzneru adresu IPv4 nezahrnuje. Bez ní ani jeden nemůže přijímat webhooky.

Pollingový bot může běžet pouze s IPv6, protože api.telegram.org má adresu IPv6. Tu musí mít i vše ostatní, k čemu se připojuje, včetně registrů balíčků, vašeho Git hostitele a všech volaných API. Před výběrem ověřte každého hostitele:

dig +short AAAA api.telegram.org

dig +short AAAA github.com

dig +short AAAA pypi.org    # repeat for every host your bot or its installs reach

Prázdná odpověď znamená, že hostitel nemá adresu IPv6.

Stačí 512 MB pro Telegram bota?

Jednoho bota bez místní databáze bych spustil na 512 MB. Dokumentace python-telegram-bot neuvádí požadavky na paměť. Rozhoduje, co server sdílí: operační systém, případně démon Dockeru a místní databáze. Změřte spotřebu.

free -m                   # "available" is your headroom; the Swap row shows swap use

ps -o rss,cmd -p "$(systemctl show -p MainPID --value telegram-bot)"   # bot's resident memory, in KB

docker stats --no-stream  # per-container memory, if the bot runs in Docker

journalctl -k | grep -i "out of memory"   # kernel OOM kills

Ukončení z nedostatku paměti (OOM) znamená, že jádro ukončí proces, aby uvolnilo RAM. systemd bota restartuje, takže tento řádek v protokolu může být jediným důkazem. Přejděte na 1 GB, pokud se objeví ukončení OOM, swap je trvale využíván nebo před přidáním místní databáze či druhého bota.

Kterého vybrat

Pro jednoho bota bych zvolil tarif s 512 MB a veřejnou IPv4 v ceně. Výběr poskytovatele pak závisí na ceně, rezervě kapacity a umístění uživatelů.

  • Nejnižší současná měsíční cena: Cloudzy za 2,48 USD během 50% akce, s IPv4 a IPv6 v ceně.
  • Nejnižší současná cena s IPv4: Cloudzy za 2,48 USD během akce. Vyhrazená IPv4 i IPv6 jsou v ceně.
  • 1 GB of headroom for Docker or a small database: Linode, from $5 a month.
  • Více botů nebo databáze, uživatelé v Evropě: Hetzner, nejvíce prostředků za euro v této tabulce, pokud je tarif dostupný (v říjnu 2026 byl uveden jako nedostupný). Pro webhooky připočtěte poplatek za IPv4.
  • Více disku a přenosu dat při 512 MB: Cloudzy. Z tarifů s 512 MB má nejvíce úložiště (20 GB NVMe oproti 10) a přenosu dat (1 TB oproti přibližně 500 GB), s IPv4 a IPv6 v ceně. Za současnou akční cenu je Cloudzy také levnější než ostatní základní tarify v tomto srovnání.

Za současnou akční cenu Cloudzy kombinuje nejnižší měsíční cenu v tomto srovnání s větším úložištěm a přenosem dat než ostatní tarify s 512 MB. Tarif Cloudzy s 512 MB se účtuje hodinově a nabízí 14denní záruku vrácení peněz, takže na něm můžete bota několik dní vyzkoušet, než se rozhodnete. Vyberte lokalitu nejblíže uživatelům, nasaďte Linux VPS od Cloudzy a přidejte výše uvedenou jednotku systemd.

Časté dotazy

Jaký je nejlevnější VPS pro Telegram bota?

Podle cen platných k říjnu 2026 je tarif Cloudzy s 512 MB nejlevnější z pěti: 2,48 USD měsíčně během 50% akce, s vyhrazenou IPv4 a IPv6 v ceně. Běžná cena je 4,95 USD měsíčně. Varianta Vultru pouze s IPv6 začíná o něco výše, od 2,50 USD.

Proč webhooky Telegramu potřebují HTTPS?

Telegram vyžaduje pro webhooky SSL/TLS bez ohledu na použitý port, jak uvádí jeho průvodce webhooky. Odmítá prosté HTTP a přijímá TLS 1.2 nebo novější. Bez TLS by každý POST přenášel zprávy uživatelů nešifrovaně. Funguje certifikát Let's Encrypt i certifikát podepsaný vlastním klíčem nahraný pomocí setWebhook.

Může Telegram bot běžet s 512 MB RAM?

Obvykle ano, jde-li o jednoho bota bez místní databáze. Sledujte protokol jádra kvůli ukončením z nedostatku paměti a přejděte na 1 GB, pokud se objeví nebo když přidáváte databázi.

Jak udržet Telegram bota v chodu po restartu?

Povolte jeho službu systemd pomocí sudo systemctl enable --now telegram-bot nebo spusťte kontejner s --restart unless-stopped a povolte docker.service, aby Docker startoval při spuštění systému.

Omezuje Telegram rychlost požadavků botů podle IP adresy?

Telegram ve svých častých dotazech k limitům botů popisuje limity pro jednotlivé boty a chaty; přechod na nový server nelze považovat za způsob jejich obcházení. Při překročení limitu API vrátí HTTP 429 s hodnotou retry_after. Před dalším pokusem počkejte daný počet sekund.

Jaký region serveru vybrat pro Telegram bota?

Vyberte lokalitu nejblíže uživatelům a službám, které bot volá, a poté změřte dobu připojení z každé kandidátní lokality pomocí curl -o /dev/null -s -w '%{time_connect}\n' https://api.telegram.org.

Sdílet

Diskuse

Komentáře

Přihlaste se a zapojte se do diskuse.

Další z blogu

Pokračuj ve čtení.

Hotov k nasazení? Od 2,48 $/měs.

Nezávislý cloud od roku 2008. AMD EPYC, NVMe, 40 Gbps. Vrácení peněz do 14 dnů.