EQVPS

როგორ ვჰოსტინგოთ Telegram ბოტი VPS-ზე (და შევინარჩუნოთ ის გაშვებული)

Jun 15, 2026 · 2 წთ კითხვა · EQVPS Team

Telegram ბოტი, რომელიც მუშაობს მხოლოდ სანამ თქვენი laptop ღიაა, სინამდვილეში არ მუშაობს — ის დემონსტრირებს. მისი რეალურად ონლაინ ყოფნისთვის, პასუხისთვის ღამის 3 საათზე, თქვენი გადატვირთვებისა და საკუთარი crash-ების გადასარჩენად, მას სერვერზე უნდა ცხოვრება. აი მთელი გზა, თავიდან ბოლომდე, ბრძანებებით.

ჯერ კარგი ამბავი: ბოტი პაწაწინა დატვირთვაა. ის ძირითადად უმოქმედოდ ზის და შეტყობინებებს ელოდება, ასე რომ ყველაზე იაფი box უშვებს მას კარგად — არავითარი გამოყოფილი IP, დომენი, არაფერი ფანტაზიური.

1. მიიღეთ token BotFather-იდან

Telegram-ში მისწერეთ @BotFather-ს, გააგზავნეთ /newbot, აირჩიეთ სახელი და username. ის გაძლევთ token-ს, რომელიც ჰგავს 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()

შენიშნეთ, რომ ის კითხულობს token-ს environment variable-იდან — არა hardcoded. ამას მნიშვნელობა აქვს შემდეგ ნაბიჯში.

3. ნაწილი, რომელიც რეალურად ინახავს მას გაშვებული: systemd

თუ უბრალოდ გაუშვებთ python bot.py-ს, ის კვდება იმ მომენტში, როცა SSH-ს დახურავთ. systemd სერვისი არის ის, რაც მას გადაარჩენინებს გამოსვლას, crash-ებსა და გადატვირთვებს. შექმენით /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      # should say active (running)
journalctl -u mybot -f           # live logs

Restart=always არის ხაზი, რომელიც რეალურ სამუშაოს აკეთებს — crash, და ის უკან არის 5 წამში. enable ნიშნავს, რომ ის ჩნდება გადატვირთვის შემდეგ. ეს არის მთელი განსხვავება „ერთხელ გავუშვი ბოტი“-სა და „ჩემი ბოტი ჩართულია“-ს შორის.

4. რატომ არავითარი დომენი ან ღია პორტი

ბოტი იყენებს long polling-ს — ის მიწვდება Telegram-ს განახლებებისთვის, ასე რომ არაფერს სჭირდება შიგნით მიწვდომა. არავითარი საჯარო URL, შემომავალი firewall წესი, გამოყოფილი IP. სწორედ ამიტომ NAT VPS (საზიარო IP, SSH პორტზე) კარგი და იაფი სახლია ბოტისთვის. Webhook-ები არსებობს ძალიან მაღალი მოცულობისთვის, მაგრამ თითქმის ნამდვილად არ გჭირდებათ ისინი დასაწყებად.

გულწრფელი გაფრთხილებები

ეს არის. ჯერ დაბლოკეთ box უსაფრთხოების ჩეკ-ლისტით, ჩააგდეთ სერვისი და თქვენი ბოტი ონლაინ რჩება, ჩართული ხართ თუ არა თქვენ. კრიპტოთი-გადახდილ VPS-ზე შეგიძლიათ ის გაშვებული გქონდეთ წუთში მას შემდეგ, რაც გადაწყვეტთ.

ხდკ

რომელი VPS მჭირდება Telegram ბოტისთვის?

ყველაზე პატარა. Telegram ბოტი ძირითადად უმოქმედოა, განახლებებს ელოდება, ასე რომ 1 GB RAM და 2 ბირთვი საკმარისია უმეტესი ბოტისთვის — საკმაოდ დატვირთულისთვისაც კი. მეტი მხოლოდ მაშინ გჭირდებათ, თუ ბოტი თავად აკეთებს მძიმე სამუშაოს (image დამუშავება, ლოკალური მოდელი, დიდი მონაცემთა ბაზა).

როგორ შევინარჩუნო Telegram ბოტი გაშვებული SSH-ის დახურვის შემდეგ?

გაუშვით ის systemd სერვისად. თქვენს ტერმინალში გაშვებისგან განსხვავებით, systemd ინახავს მას ცოცხლად გამოსვლის შემდეგ, რესტარტს აკეთებს, თუ ის crash-ს გააკეთებს, და კვლავ ჩართავს გადატვირთვის შემდეგ. ეს არის განსხვავება სათამაშოსა და რაღაცას შორის, რომელიც ჩართული რჩება.

რატომ ჩერდება ჩემი ბოტი, როცა ვთიშავ?

რადგან ის თქვენს SSH სესიაში გაუშვით, ასე რომ ის კვდება, როცა ის სესია მთავრდება. გახვიეთ ის systemd სერვისში (ან tmux-ში სწრაფი ტესტისთვის) და ის მუშაობს თქვენი login-ისგან დამოუკიდებლად.

მჭირდება დომენი ან webhook Telegram ბოტისთვის?

არა. Long polling (getUpdates) არ საჭიროებს საჯარო URL-ს, დომენს, შემომავალ პორტს — ბოტი მიწვდება Telegram-ს. სწორედ ამიტომ NAT VPS გამოყოფილი IP-ის გარეშე სრულყოფილად კარგია ბოტისთვის. Webhook-ები არასავალდებულო ოპტიმიზაციაა მაღალი მოცულობისთვის.

უსაფრთხოა ჩემი ბოტის token-ის VPS-ზე დადება?

დიახ, თუ მას პაროლივით მოეპყრობით: შეინახეთ ის environment variable-ში ან ფაილში, რომელიც წაკითხვადია მხოლოდ ბოტის მომხმარებლისთვის, არასოდეს commit-ოთ ის git-ში და დაბლოკეთ სერვერი SSH გასაღებებით. თუ token გაჟონავს, გააუქმეთ ის BotFather-ში და გასცეთ ახალი.

← ბლოგზე დაბრუნებატარიფებისა და ფასების ნახვა →

კომენტარები

ჯერ არ არის კომენტარები. იყავით პირველი.

დატოვეთ კომენტარი

კომენტარები მოდერირდება გამოჩენამდე.