Telegram bot na serveri: spustenie a autostart
Ako hosťovať Telegram bota na VPS: izolácia pod vlastným používateľom, služba systemd, ukladanie tokenu, logy a zvládanie výpadkov siete.
Aktualizované 23. augusta 2026
Bot potrebuje neustále bežiaci proces — tam sa končí free hosting a začína VDS. Bot pritom spotrebuje len minimum prostriedkov: aj VDS-1 (1 jadro, 2 GB) zvládne bota s tisíckami používateľov.
Umiestnenie
Samostatný používateľ a adresár — aby bot nebežal ako root:
useradd -r -m -d /srv/bot -s /usr/sbin/nologin botuser
cd /srv/bot && sudo -u botuser git clone https://github.com/you/bot.git .
sudo -u botuser python3 -m venv venv
sudo -u botuser venv/bin/pip install -r requirements.txt
Pre Node.js: npm ci --omit=dev namiesto venv.
Token drž v súbore s premennými prostredia, nie v kóde:
install -o botuser -g botuser -m 600 /dev/null /srv/bot/.env
echo 'BOT_TOKEN=123456:ABC...' > /srv/bot/.env
Súbor s tokenom sa nesmie dostať do repozitára: pridaj ho do .gitignore ešte pred prvým commitom.
Služba
/etc/systemd/system/tgbot.service:
[Unit]
Description=Telegram bot
After=network-online.target
Wants=network-online.target
[Service]
User=botuser
WorkingDirectory=/srv/bot
EnvironmentFile=/srv/bot/.env
ExecStart=/srv/bot/venv/bin/python -u bot.py
Restart=always
RestartSec=10
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now tgbot
journalctl -u tgbot -f
Prepínač -u pri Pythone vypína bufferovanie výstupu — bez neho sa logy v journali objavia s oneskorením niekoľkých minút, alebo vôbec.
Long polling alebo webhook
Long polling je jednoduchší: bot si Telegram sám vyžaduje a nemusíš nič vystavovať. Na väčšinu úloh to stačí.
Webhook je rýchlejší a šetrí traffic, ale vyžaduje doménu a certifikát:
location /bot/token {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
Budeš potrebovať Let's Encrypt a reverznú proxy. Telegram prijíma self-signed certifikáty neochotne — použi riadny certifikát.
Nikdy nesmú bežať dve kópie bota naraz: Telegram doručuje aktualizácie len jednému príjemcovi a boty začnú odpovedať striedavo. Po úpravách sprav restart, nie druhé spustenie.
Dáta
Na nastavenia a štatistiky stačí SQLite — súbor vedľa bota. Samostatný databázový server potrebuješ len vtedy, ak má bot webový panel alebo viacero procesov.
Časté chyby
| Príznak | Príčina |
|---|---|
Conflict: terminated by other getUpdates | Bežia dve kópie bota |
| Bot po noci prestane reagovať | Nie je nastavené Restart=always a proces spadol pri výpadku siete |
Unauthorized | Token bol zrušený alebo skopírovaný s nadbytočnými medzerami |
| Žiadne logy | Bufferovanie výstupu alebo zápis do súboru namiesto stdout |
| Ručne funguje, ako služba padá | V systemd chýbajú premenné prostredia |
Token, ktorý sa objavil na screenshote, vo verejnom repozitári alebo v cudzom chate, sa považuje za kompromitovaný. Zruš ho cez BotFather a zmeň súbor
.env— nespoliehaj sa na to, že si nikto nič nevšimne.