Skip to content
VDS · Aplikacije i botovi

Telegram bot na serveru: pokretanje i automatsko pokretanje

Kako da hostuješ Telegram bot na VPS-u: izolacija pod sopstvenim korisnikom, systemd usluga, čuvanje tokena, logovi i rešavanje mrežnih prekida.

Ažurirano 23. avgust 2026.

Botu je potreban proces koji stalno radi — tu se besplatni hosting završava i počinje VDS. Botu jedva da treba resursa: čak i VDS-1 (1 jezgro, 2 GB) izdržava bota sa hiljadama korisnika.

Smeštanje

Odvojen korisnik i direktorijum — da bot ne radi kao 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

Za Node.js: npm ci --omit=dev umesto venv-a.

Token drži u fajlu sa promenljivama okruženja, ne u kodu:

install -o botuser -g botuser -m 600 /dev/null /srv/bot/.env
echo 'BOT_TOKEN=123456:ABC...' > /srv/bot/.env

Fajl sa tokenom ne sme da završi u repozitorijumu: dodaj ga u .gitignore pre prvog commit-a.

Servis

/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

Zastavica -u kod Pythona isključuje baferovanje izlaza — bez nje će se logovi u journal-u pojaviti sa zakašnjenjem od nekoliko minuta ili nikako.

Long polling ili webhook

Long polling je jednostavniji: bot sam anketira Telegram i ne moraš ništa da izlažeš. To je dovoljno za većinu zadataka.

Webhook je brži i štedi saobraćaj, ali zahteva domen i sertifikat:

location /bot/token {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
}

Trebaće ti Let's Encrypt i reverse proxy. Telegram nerado prihvata self-signed sertifikate — koristi običan.

Nikada ne smeju da rade dve kopije bota istovremeno: Telegram dostavlja ažuriranja samo jednom primaocu, pa će botovi početi da odgovaraju naizmenično. Posle izmena uradi restart, a ne drugo pokretanje.

Podaci

SQLite je dovoljan za podešavanja i statistiku — fajl pored bota. Odvojen server baze je potreban samo ako bot ima web panel ili više procesa.

Česte greške

SimptomUzrok
Conflict: terminated by other getUpdatesRade dve kopije bota
Bot utihne posle noćiRestart=always nije podešen, a proces je pao pri prekidu mreže
UnauthorizedToken je opozvan ili kopiran sa dodatnim razmacima
Nema logovaBaferovanje izlaza ili pisanje u fajl umesto na stdout
Radi ručno, pada kao servisNema promenljivih okruženja u systemd-u

Token koji se pojavio na snimku ekrana, u javnom repozitorijumu ili u nečijem četu smatra se kompromitovanim. Opozovi ga preko BotFather-a i izmeni .env fajl — ne računaj na to da niko neće primetiti.