Noutbukda işga tuşirilgan bot qopqoq yopilgunça yaşaydi. VPS’ga köçiş yarim soat oladi va kuniga 4 000 söm turadi — quyida Python va Node.js uçun bosqiçma-bosqiç yöriqnoma.
1-qadam. Server yarating
Şaxsiy kabinetda Ubuntu 22.04 yoki 24.04, 1 vCPU, 1 GB RAM, 20 GB disk tanlang — bir neçta bot uçun yetadi. Server avtomatik yaratiladi — odatda tölovdan keyin 15 daqiqa içida, söng IP-manzil va root parolini olasiz. Node.js va Python uçun tizimdagi farq ahamiyatsiz, Ubuntu — eng başorat qilinadigan variant.
2-qadam. Ulaning va tizimni tayyorlang
ssh root@SIZNING_IP
apt update && apt upgrade -y
adduser bot
usermod -aG sudo bot
Root’dan işlaş — yomon odat; alohida foydalanuvçi yarating. Keyingi barça buyruqlar undan bajariladi.
3-qadam. Muhitni örnating
Python:
sudo apt install -y python3 python3-venv python3-pip git
cd ~ && git clone https://github.com/siz/sizning-bot.git bot
cd bot && python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
Node.js:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs git
cd ~ && git clone https://github.com/siz/sizning-bot.git bot
cd bot && npm install
Bot tokeni va boşqa sirlarni kodga emas, loyiha papkasidagi .env fayliga qöying. Bot qölda işga tuşişini tekşiring: python bot.py yoki node index.js. Telegramda javob bersa — davom eting.
4-qadam. systemd xizmati sifatida işga tuşiring
Bu asosiy qadam: xizmat nosozlik yoki server qayta yuklanganidan keyin özi qayta işga tuşadi. /etc/systemd/system/bot.service faylini yarating:
[Unit]
Description=Telegram bot
After=network.target
[Service]
User=bot
WorkingDirectory=/home/bot/bot
EnvironmentFile=/home/bot/bot/.env
ExecStart=/home/bot/bot/venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Node.js uçun ExecStart ni /usr/bin/node index.js ga almaştiring. Keyin:
sudo systemctl daemon-reload
sudo systemctl enable --now bot
sudo systemctl status bot
journalctl -u bot -f
Oxirgi buyruq loglarni real vaqtda körsatadi — biror narsa notöğri ketsa, xatolarni öşa yerda körasiz.
5-qadam (ixtiyoriy). Polling örniga webhook’lar
Long polling darhol işlaydi va heç narsa talab qilmaydi. Webhook’lar tezroq va tejamkorroq, lekin domen va HTTPS kerak. Domen A-yozuvini server IP’siga yönaltiring, Nginx va certbot örnating:
sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot --nginx -d bot.sizning-domen.uz
Nginx konfigida location /webhook ni bot tinglayotgan portga (masalan, 8080) yönaltiring va setWebhook orqali webhook’ni röyxatdan ötkazing. Telegram webhook’larni 443, 80, 88 va 8443 portlarda qabul qiladi.
6-qadam. Minimal xavfsizlik
- Brandmauerni yoqing:
sudo ufw allow OpenSSH && sudo ufw allow 443 && sudo ufw enable. - SSH uçun parol bilan kirişni öçiring, faqat kalitlarni qoldiring (
/etc/ssh/sshd_configdaPasswordAuthentication no). fail2banörnating — u parol tanlaşni bloklaydi.- Şaxsiy kabinetda server snapşotini oling (snapşotlar — pullik opsiya) — muvaffaqiyatsiz tajribalar uçun qaytiş nuqtasi.
Keyin nima
Botlar bir neçta bölganda yoki ma’lumotlar bazasi paydo bölganda xotira qöşing — bu qayta örnatmasdan qilinadi. Konteynerlar qulayroq bölsa, Docker ham odatdagidek örnatiladi. Tariflar va köp söraladigan savollarga javoblar — Telegram-bot uçun server sahifasida.
Maqoladagi vazifada yordam kerakmi?
Konfiguratsiyani tanlaymiz, narxini hisoblaymiz va köçişda yordam beramiz.