Letni upał — wszystko się topi, nawet nasze ceny.−25%−25% na każdy plan roczny, do 31 sierpniaZobacz plany
EQVPS
Zacznij

Jak hostować bota Telegram na VPS (i utrzymać go działającym)

15 cze 2026 · 2 min czytania · Zespół EQVPS

Bot Telegram, który działa tylko, gdy Twój laptop jest otwarty, tak naprawdę nie działa — robi demo. By był faktycznie online, odpowiadając o 3 nad ranem, przetrwał Twoje restarty i własne awarie, musi żyć na serwerze. Oto cała ścieżka, od początku do końca, z poleceniami.

Najpierw dobra wiadomość: bot to malutkie obciążenie. Głównie siedzi bezczynnie, czekając na wiadomości, więc najtańsza maszyna uruchamia go dobrze — bez dedykowanego IP, bez domeny, nic wymyślnego.

1. Zdobądź token od BotFather

W Telegramie napisz do @BotFather, wyślij /newbot, wybierz nazwę i nazwę użytkownika. Wręcza Ci token wyglądający jak 12345:AAH.... Traktuj go jak hasło — każdy, kto go ma, kontroluje Twojego bota.

2. Minimalny bot

Zaloguj się przez SSH na serwer, skonfiguruj Pythona i bibliotekę:

sudo apt update && sudo apt install -y python3-venv
mkdir ~/mybot && cd ~/mybot
python3 -m venv venv && source venv/bin/activate
pip install python-telegram-bot

Bot, który odpowiada — ~/mybot/bot.py:

import os
from telegram.ext import ApplicationBuilder, CommandHandler

async def start(update, ctx):
    await update.message.reply_text("Żywy i na serwerze. 🟢")

app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()

Zwróć uwagę, że odczytuje token ze zmiennej środowiskowej — nie zakodowany na twardo. To ma znaczenie w następnym kroku.

3. Część, która faktycznie utrzymuje go działającym: systemd

Jeśli po prostu uruchomisz python bot.py, umiera w chwili, gdy zamkniesz SSH. Usługa systemd to to, co sprawia, że przetrwa wylogowanie, awarie i restarty. Utwórz /etc/systemd/system/mybot.service:

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

[Service]
WorkingDirectory=/home/youruser/mybot
Environment=BOT_TOKEN=12345:AAH...your-token
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser

[Install]
WantedBy=multi-user.target

Potem:

sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot      # powinno mówić active (running)
journalctl -u mybot -f           # logi na żywo

Restart=always to linia wykonująca prawdziwą pracę — awaria, a jest z powrotem w 5 sekund. enable oznacza, że wstaje po restarcie. To cała różnica między „uruchomiłem bota raz” a „mój bot jest włączony”.

4. Dlaczego bez domeny czy otwartych portów

Bot używa long pollingu — sięga do Telegrama po aktualizacje, więc nic nie musi docierać do środka. Bez publicznego URL, bez reguły zapory przychodzącej, bez dedykowanego IP. Właśnie dlatego VPS NAT (współdzielone IP, SSH na porcie) jest dobrym i tanim domem dla bota. Webhooki istnieją dla bardzo dużego wolumenu, ale prawie na pewno nie potrzebujesz ich na start.

Uczciwe zastrzeżenia

To tyle. Najpierw zablokuj maszynę listą kontrolną bezpieczeństwa, wrzuć usługę, a Twój bot pozostaje online, niezależnie od tego, czy Ty jesteś. Na VPS płaconym kryptowalutą możesz mieć go działającego minutę po tym, jak zdecydujesz.

FAQ

Jaki VPS potrzebuję pod bota Telegram?

Najmniejszy. Bot Telegram jest głównie bezczynny, czekając na aktualizacje, więc 1 GB RAM i 2 rdzenie w zupełności wystarczą dla większości botów — nawet całkiem zajętych. Więcej potrzebujesz tylko, jeśli bot sam wykonuje ciężką pracę (przetwarzanie obrazów, lokalny model, duża baza danych).

Jak utrzymać bota Telegram działającego po zamknięciu SSH?

Uruchom go jako usługę systemd. W przeciwieństwie do uruchomienia w terminalu, systemd utrzymuje go przy życiu po wylogowaniu, restartuje, jeśli się wywali, i uruchamia ponownie po restarcie. To różnica między zabawką a czymś, co pozostaje włączone.

Dlaczego mój bot zatrzymuje się, gdy się rozłączam?

Bo uruchomiłeś go w swojej sesji SSH, więc umiera, gdy ta sesja się kończy. Owiń go w usługę systemd (lub tmux do szybkiego testu), a działa niezależnie od Twojego logowania.

Czy potrzebuję domeny lub webhooka dla bota Telegram?

Nie. Long polling (getUpdates) nie potrzebuje publicznego URL, domeny, portu przychodzącego — bot sięga do Telegrama. Dlatego VPS NAT bez dedykowanego IP jest doskonale w porządku dla bota. Webhooki to opcjonalna optymalizacja dla dużego wolumenu.

Czy bezpieczne jest umieszczenie tokenu bota na VPS?

Tak, jeśli traktujesz go jak hasło: trzymaj go w zmiennej środowiskowej lub pliku czytelnym tylko dla użytkownika bota, nigdy nie commituj do gita i zablokuj serwer kluczami SSH. Jeśli token wycieknie, cofnij go w BotFather i wydaj nowy.

← Powrót do blogaZobacz plany i ceny →

Komentarze

Brak komentarzy. Bądź pierwszy.

Zostaw komentarz

Komentarze są moderowane przed pojawieniem się.