Przejdź do treści głównej
50% zniżki wszystkie plany, oferta limitowana. Od $2.48/mo
Pozostały czas: 11 min
Architektura chmury i IT

Najlepszy VPS dla bota Telegram: polling, webhooki, IPv4 i koszt miesięczny

C Autor: Chike 11 min czytania
Hosting bota Telegram na VPS ze stałą łącznością

Bot odpowiada na każdą wiadomość, dopóki nie zamkniesz laptopa. Potem użytkownicy nie dostają odpowiedzi. Mały VPS rozwiązuje to za kilka dolarów miesięcznie. Najlepszy VPS dla bota Telegram zależy od sposobu odbierania aktualizacji: albo bot prosi o nie Telegram, albo Telegram wysyła je do bota.

Ten wybór określa potrzebne porty i certyfikat oraz to, czy wymagane jest publiczne połączenie IPv4.

Krótka wersja

  • Dla jednego bota na VPS wybierz long polling. Nie wymaga domeny, certyfikatu ani otwartego portu.
  • Webhooki wymagają HTTPS na porcie 443, 80, 88 lub 8443 oraz publicznego adresu IPv4. Telegram nie dostarcza webhooków przez IPv6.
  • 512 MB of RAM is a workable start for one bot with no local database.
  • Utrzymuj bota w działaniu za pomocą systemd lub zasad restartowania Dockera, jeśli już wdrażasz kontenery.
  • Wybieraj dostawcę według dostępności IPv4 i zapasu RAM, nie tylko ceny katalogowej.

Polling czy webhooki: wybór określający wymagania serwera

Połączenia long polling i webhook między Telegramem a VPS

Bot Telegram odbiera aktualizacje na jeden z dwóch sposobów. Przy long pollingu wywołuje getUpdates, a Telegram utrzymuje żądanie otwarte do nadejścia aktualizacji lub upływu limitu czasu. Każde połączenie rozpoczyna się więc na Twoim serwerze. Przy webhooku jednorazowo rejestrujesz URL za pomocą setWebhook, a Telegram wysyła pod ten adres każdą aktualizację żądaniem POST przez HTTPS.

Wymóg Long polling (getUpdates) Webhook (setWebhook)
Port przychodzący Brak; tylko żądania wychodzące HTTPS na 443, 80, 88 lub 8443
Publiczny IPv4 Niewymagany Wymagany; webhooki nie obsługują IPv6
Domena i certyfikat Niepotrzebne Certyfikat wymagany; zwykle używa się domeny, ale certyfikat samopodpisany może mieć adres IP jako CN
Proces Działa bez przerwy Nieprzerwanie odpowiada na żądania HTTPS

Kolumna webhooków jest zgodna z wymaganiami Telegrama dotyczącymi webhooków.

Aby sprawdzić, z jakiej metody korzysta bot, zapytaj Bot API:

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

Jeśli odpowiedź zawiera "url":"", webhook nie jest skonfigurowany i bot może korzystać z long pollingu. Funkcja bot.start() w grammY domyślnie używa long pollingu; python-telegram-bot korzysta z run_polling() lub run_webhook().

Dla jednego bota na własnym VPS wybrałbym polling, co jest też domyślnym zaleceniem grammY. Webhooki wygrywają, gdy serwer ma już odwrotne proxy (serwer WWW przekazujący żądania HTTPS do bota), gdy kilka botów współdzieli jeden punkt końcowy HTTPS lub na platformie serverless. W takim przypadku Caddy pobiera i odnawia certyfikat bez zadania cron.

Krótka awaria opóźnia wiadomości, ale ich nie gubi. Zgodnie z zasadami aktualizacji Bot API Telegram przechowuje aktualizacje do 24 godzin, aż bot je odbierze, przy obu metodach, oraz ponawia nieudane żądania webhooków, zanim zrezygnuje.

Jeśli webhook bezpośrednio używa swojego portu, ogranicz go do zakresów źródłowych opublikowanych przez Telegram. Jeśli port 443 współdzieli odwrotne proxy obsługujące inne witryny, zastosuj ograniczenie tylko do ścieżki webhooka albo użyj tajnego tokena Telegrama zamiast blokować cały pozostały ruch HTTPS. Przewodnik po webhookach podaje dwa zakresy źródłowe i ostrzega, że mogą się zmienić. Z UFW jako zaporą hosta:

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

Zmień 443, jeśli webhook nasłuchuje na 80, 88 lub 8443. Te reguły chronią bota działającego bezpośrednio na hoście. Dokumentacja zapory Dockera podaje, że opublikowany port omija UFW, więc kontener webhooka uruchomiony z -p 443:443 pozostaje dostępny dla wszystkich. Ustaw też secret_token w setWebhook. Telegram przesyła go w nagłówku X-Telegram-Bot-Api-Secret-Token każdego żądania, a kod obsługi odrzuca żądania bez niego.

Jak utrzymać bota w działaniu: systemd czy Docker

Utrzymywanie bota Telegram w działaniu za pomocą systemd lub Dockera

Działanie bota Telegram przez całą dobę wymaga ponownego uruchamiania po awariach i restartach serwera. Na VPS zajmuje się tym systemd albo Docker, jeśli bot jest dostarczany jako obraz.

Jednostka systemd to krótki plik konfiguracyjny informujący system inicjalizacji, jak uruchamiać i restartować program. Utwórz /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

Umieść token w pliku .env w folderze projektu jako BOT_TOKEN=... i odczytuj go przez os.environ["BOT_TOKEN"] (Node: process.env.BOT_TOKEN), aby nie był zapisany w kodzie. Następnie skopiuj projekt we właściwe miejsce i uruchom go:

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 poprawnym zakończeniu i po awarii; on-failure pomija poprawne zakończenia, zgodnie z podręcznikiem systemd.service. RestartSec=5 zapewnia odstęp między próbami, a WantedBy=multi-user.target wraz z enable uruchamia bota przy starcie systemu. Jeśli bot ciągle się restartuje, sudo journalctl -u telegram-bot -n 50 pokaże ślad błędu. Najpierw sprawdź, czy nie brakuje BOT_TOKEN.

Odpowiednik w Dockerze to jedna flaga:

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

docker logs -f telegram-bot

W Compose jest to wiersz restart: unless-stopped. Dokumentacja zasad restartowania Dockera mówi, że kontener wraca po zakończeniu działania lub restarcie demona, ale nie po ręcznym zatrzymaniu. Obejmuje to restarty serwera, jeśli sam Docker uruchamia się przy starcie systemu, co robi domyślnie w Debianie i Ubuntu. W innych systemach uruchom sudo systemctl enable docker.service.

Moja zasada: jeden skrypt na małym serwerze dostaje systemd, bez dodatkowego demona w pamięci. Jeśli już budujesz obrazy lub uruchamiasz inne kontenery, użyj Dockera i uwzględnij zużycie RAM przez jego demona.

Żadne z tych narzędzi nie informuje o awarii bota. Może to zrobić monitor push Uptime Kuma na drugim serwerze. Bot cyklicznie wywołuje URL monitora, a Uptime Kuma wysyła alert w Telegramie, gdy wywołania ustaną.

Gdzie darmowy hosting i serwery domowe zawodzą

Render usypia darmową usługę WWW po 15 minutach bez ruchu przychodzącego, a dokumentacja darmowej oferty Rendera określa czas wybudzenia na około minutę. Bot z pollingiem nie odbiera ruchu przychodzącego, więc zostaje zatrzymany. Bota z webhookiem wybudza POST Telegrama, co po okresie ciszy oznacza zimny start. To, czy darmowy hosting sprawdzi się dla bota Telegram, zależy więc od jego metody.

Przewodnik grammY wymienia platformy serverless jako odpowiednie dla webhooków, podczas gdy long polling potrzebuje maszyny działającej przez całą dobę. Fly.io rozlicza za użycie i wymaga zapisanej karty płatniczej.

Raspberry Pi lub stary komputer może uruchamiać bota z pollingiem, dopóki działają maszyna, zasilanie i połączenie. Webhooki z domu wymagają też publicznego adresu i przekierowania portów. Dla hobbystycznego bota obie darmowe możliwości mogą wystarczyć.

VPS obsługuje obie metody za stałą miesięczną cenę.

Porównanie pięciu dostawców VPS dla bota Telegram

Porównanie pięciu dostawców VPS do hostingu botów Telegram

Tabela porównuje pięć płatnych planów podstawowych do hostingu botów Telegram według reklamowanych miesięcznych cen, aktualnych na październik 2026 r., przed opodatkowaniem. Ceny promocyjne oznaczono tam, gdzie obowiązują.

Dostawca Parametry planu podstawowego Cena miesięczna Publiczny IPv4 Rozliczenia
Cloudzy 1 vCPU (AMD EPYC), 512 MB DDR5, 20 GB NVMe, 1 TB transferu 2,48 USD promocyjnie (4,95 USD standardowo) W cenie, dodatkowo IPv6 Godzinowe lub miesięczne
DigitalOcean 1 vCPU, 512 MiB, 10 GiB SSD, 500 GiB transferu Od 4 USD W cenie Sekundowe, maksymalnie do wysokości ceny miesięcznej
Vultr 1 vCPU, 512 MB, 10 GB SSD, 512 GB transferu Od 2,50 USD tylko IPv6; od 3,50 USD z IPv4 Tylko w planie za 3,50 USD Godzinowe lub miesięczne
Hetzner (Niemcy/Finlandia) 2 vCPU, 4 GB, 40 GB SSD, 20 TB transferu Od 5,49 EUR bez VAT Dodatkowo, od 0,50 EUR/miesiąc bez VAT (IPv6 bezpłatny) Godzinowe, do wysokości ceny miesięcznej
Linode (Akamai) 1 vCPU, 1 GB, 25 GB przestrzeni dyskowej, 1 TB transferu Od 5 USD W cenie Godzinowe lub miesięczne

Plan Vultra tylko z IPv6 nie ma IPv4, a cena Hetznera nie obejmuje adresu IPv4. Bez niego żaden z nich nie może odbierać webhooków.

Bot z pollingiem może działać tylko po IPv6, ponieważ api.telegram.org ma adres IPv6. Muszą go mieć również wszystkie inne cele połączeń, w tym rejestry pakietów, hosting Git i każde wywoływane API. Sprawdź każdy host przed wyborem:

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

Pusta odpowiedź oznacza, że host nie ma adresu IPv6.

Czy 512 MB wystarczy dla bota Telegram?

Zacząłbym od 512 MB dla jednego bota bez lokalnej bazy danych. Dokumentacja python-telegram-bot nie podaje wymagań pamięciowych. Decyduje to, co współdzieli serwer: system operacyjny, ewentualny demon Dockera i lokalna baza danych. Zmierz zużycie.

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

Zakończenie procesu z powodu braku pamięci (OOM) oznacza, że jądro zamyka proces, aby zwolnić RAM. systemd restartuje bota, więc ten wpis w logu może być jedynym dowodem. Przejdź na 1 GB, gdy wystąpią zakończenia OOM, swap jest stale używany lub przed dodaniem lokalnej bazy danych albo drugiego bota.

Który wybrać

Dla jednego bota wybrałbym plan 512 MB z publicznym IPv4 w cenie. Wybór dostawcy zależy wtedy od ceny, zapasu zasobów i lokalizacji użytkowników.

  • Najniższa obecna cena miesięczna: Cloudzy za 2,48 USD w promocji 50%, z IPv4 i IPv6 w cenie.
  • Najniższa obecna cena z IPv4: Cloudzy za 2,48 USD w promocji. Dedykowany IPv4 i IPv6 są w cenie.
  • 1 GB of headroom for Docker or a small database: Linode, from $5 a month.
  • Kilka botów lub baza danych, użytkownicy w Europie: Hetzner, najwięcej zasobów za euro w tej tabeli, o ile plan jest dostępny (w październiku 2026 r. figurował jako niedostępny). Dla webhooków dolicz opłatę za IPv4.
  • Więcej dysku i transferu przy 512 MB: Cloudzy. Spośród planów 512 MB oferuje najwięcej przestrzeni (20 GB NVMe wobec 10) i transferu (1 TB wobec około 500 GB), z IPv4 i IPv6 w cenie. Przy obecnej cenie promocyjnej Cloudzy jest też tańsze od pozostałych planów podstawowych w tym porównaniu.

Przy obecnej cenie promocyjnej Cloudzy łączy najniższą cenę miesięczną w tym porównaniu z większą przestrzenią dyskową i transferem niż pozostałe plany 512 MB. Plan Cloudzy 512 MB jest rozliczany godzinowo i ma 14-dniową gwarancję zwrotu pieniędzy, więc możesz uruchomić na nim bota na kilka dni, zanim podejmiesz decyzję. Wybierz lokalizację najbliższą użytkownikom, wdroż Linux VPS od Cloudzy i dodaj opisaną wyżej jednostkę systemd.

Często zadawane pytania

Jaki jest najtańszy VPS, na którym można uruchomić bota Telegram?

Według stanu na październik 2026 r. plan Cloudzy 512 MB jest najtańszy z pięciu: 2,48 USD miesięcznie w promocji 50%, z dedykowanym IPv4 i IPv6 w cenie. Standardowa cena wynosi 4,95 USD miesięcznie. Opcja Vultra tylko z IPv6 zaczyna się nieco wyżej, od 2,50 USD.

Dlaczego webhooki Telegrama potrzebują HTTPS?

Telegram wymaga SSL/TLS dla webhooków niezależnie od portu, zgodnie z przewodnikiem po webhookach. Odrzuca zwykłe HTTP i akceptuje TLS 1.2 lub nowszy. Bez TLS każde żądanie POST przesyłałoby wiadomości użytkowników bez szyfrowania. Działa certyfikat Let's Encrypt, a także certyfikat samopodpisany przesłany przez setWebhook.

Czy bot Telegram może działać z 512 MB RAM?

Zwykle tak, jeśli to jeden bot bez lokalnej bazy danych. Obserwuj log jądra pod kątem zakończeń z braku pamięci i przejdź na 1 GB, jeśli się pojawią lub gdy dodajesz bazę danych.

Jak utrzymać bota Telegram w działaniu po restarcie?

Włącz jego usługę systemd poleceniem sudo systemctl enable --now telegram-bot albo uruchom kontener z --restart unless-stopped i włącz docker.service, aby Docker uruchamiał się przy starcie systemu.

Czy Telegram ogranicza częstotliwość żądań botów według adresu IP?

Telegram w FAQ botów dotyczącym limitów opisuje je na poziomie bota i czatu; przeniesienie na nowy serwer nie powinno być traktowane jako sposób ich obchodzenia. Po przekroczeniu limitu API zwraca HTTP 429 z wartością retry_after. Odczekaj wskazaną liczbę sekund przed ponowną próbą.

Jaki region serwera wybrać dla bota Telegram?

Wybierz lokalizację najbliższą użytkownikom i usługom wywoływanym przez bota, a następnie zmierz czas połączenia z każdej rozważanej lokalizacji za pomocą curl -o /dev/null -s -w '%{time_connect}\n' https://api.telegram.org.

Udostępnij

Dyskusja

Komentarze

Zaloguj się, aby dołączyć do dyskusji.

Więcej z bloga

Czytaj dalej.

Gotowy do wdrożenia? Od $2,48/mies.

Niezależna chmura od 2008 roku. AMD EPYC, NVMe, 40 Gbps. Zwrot pieniędzy w ciągu 14 dni.