EQVPS

Как да хостваш Telegram бот на VPS (и да го държиш работещ)

15.06.2026 г. · 2 мин четене · EQVPS Team

Telegram бот, който работи само докато лаптопът ти е отворен, не работи реално — той демонстрира. За да е наистина онлайн, отговаряйки в 3 сутринта, преживявайки рестартите ти и собствените си сривове, той трябва да живее на сървър. Ето целия път, от начало до край, с командите.

Добрата новина първо: бот е мъничко натоварване. Основно стои бездеен в очакване на съобщения, така че най-евтината машина го пуска добре — без dedicated IP, без домейн, нищо фантазийно.

1. Вземи токен от BotFather

В Telegram пиши на @BotFather, изпрати /newbot, избери име и username. Той ти дава токен, който изглежда като 12345:AAH.... Третирай го като парола — всеки с него контролира бота ти.

2. Минимален бот

Влез по SSH в сървъра, настрой Python и библиотеката:

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

Бот, който отговаря — ~/mybot/bot.py:

import os
from telegram.ext import ApplicationBuilder, CommandHandler

async def start(update, ctx):
    await update.message.reply_text("Alive and on a server. 🟢")

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

Забележи, че чете токена от environment променлива — не кодиран твърдо. Това има значение в следващата стъпка.

3. Частта, която реално го държи работещ: systemd

Ако просто пуснеш python bot.py, той умира в мига, в който затвориш SSH. systemd услуга е това, което го кара да преживее изход, сривове и рестарти. Създай /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

После:

sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot      # трябва да казва active (running)
journalctl -u mybot -f           # логове на живо

Restart=always е редът, който върши реалната работа — срине се, и е обратно за 5 секунди. enable значи, че се вдига след рестарт. Това е цялата разлика между „пуснах бот веднъж“ и „ботът ми е онлайн“.

4. Защо няма домейн или отворени портове

Ботът използва long polling — той достига навън към Telegram за ъпдейти, така че нищо не се нуждае да достигне навътре. Без публичен URL, без входящо firewall правило, без dedicated IP. Точно затова NAT VPS (споделен IP, SSH на порт) е добър и евтин дом за бот. Webhook-овете съществуват за много голям обем, но почти сигурно не се нуждаеш от тях, за да започнеш.

Честни забележки

Това е. Заключи първо машината с checklist за сигурност, пусни услугата и ботът ти остава онлайн, независимо дали ти си. На платен с crypto VPS можеш да го имаш работещ минута след като решиш.

Въпроси

Какъв VPS ми трябва за Telegram бот?

Най-малкият. Telegram бот основно е бездеен, в очакване на ъпдейти, така че 1 GB RAM и 2 ядра са предостатъчни за повечето ботове — дори доста натоварени. Нужно ти е повече само ако ботът върши тежка работа сам (обработка на изображения, локален модел, голяма база данни).

Как да държа Telegram бот работещ, след като затворя SSH?

Пусни го като systemd услуга. За разлика от стартирането в терминала ти, systemd го държи жив след като излезеш, рестартира го, ако се срине, и го стартира отново след рестарт. Това е разликата между играчка и нещо, което стои включено.

Защо ботът ми спира, когато се разкача?

Защото си го стартирал в SSH сесията си, така че той умира, когато тази сесия приключи. Увий го в systemd услуга (или tmux за бърз тест) и той работи независимо от входа ти.

Нужни ли са ми домейн или webhook за Telegram бот?

Не. Long polling (getUpdates) не се нуждае от публичен URL, домейн или входящ порт — ботът достига навън към Telegram. Затова NAT VPS без dedicated IP е напълно наред за бот. Webhook-овете са незадължителна оптимизация за голям обем.

Безопасно ли е да сложа bot токена си на VPS?

Да, ако го третираш като парола: дръж го в environment променлива или файл, четим само от потребителя на бота, никога не го commit-вай в git и заключи сървъра със SSH ключове. Ако токен изтече, отмени го в BotFather и издай нов.

← Обратно към блогаВиж планове и цени →

Коментари

Още няма коментари. Бъди първият.

Остави коментар

Коментарите се модерират преди да се появят.