# Szybkie wdrożenie bota Telegram na VPS: od lokalnego uruchomienia do pracy 24/7
Rozwój bota Telegram zakończony, ale lokalne uruchomienie nie rozwiązuje problemu ciągłej dostępności. Większość programistów napotyka trudności z przeniesieniem projektu do produkcji, tonąc w nadmiarze informacji o Dockerze i Kubernetes. W rzeczywistości wdrożenie można wykonać w 8 minut przy minimalnych zasobach. Ta instrukcja pokaże, jak uruchomić bota aiogram na tanim VPS bez skomplikowanych konfiguracji, korzystając z podstawowych narzędzi Linuksa.
Przygotowanie infrastruktury
Wybór dostawcy chmury jest kluczowy dla stabilnej pracy bota. Timeweb Cloud oferuje serwery w 12 regionach geograficznych, w tym poza Rosją. Jest to niezbędne przy korzystaniu z API zablokowanych w RF (Groq, ChatGPT i inne serwisy AI). Dla botów bez zewnętrznych zależności wystarczą rosyjskie centra danych.
Kluczowe parametry serwera:
- OS: Ubuntu 24.04 LTS
- Konfiguracja: minimalna (1 vCPU, 1 GB RAM, 25 GB SSD)
- Koszt: od 290 ₽/mies.
- Kopie zapasowe: zaleca się włączyć
Podczas tworzenia instancji zwróć uwagę na sekcję backupów. Kopie zapasowe chronią przed:
- Awaryjnym wyłączeniem serwera
- Uszkodzeniem bazy SQLite
- Błędami podczas aktualizacji kodu
- Przypadkowym usunięciem plików
System backupów Timeweb pozwala przywrócić stan projektu z ostatnich 7 dni co 24 godziny. Jest to kluczowe dla uniknięcia utraty danych podczas testowania nowych funkcji.
Konfiguracja środowiska serwerowego
Po aktywacji serwera połącz się przez SSH:
ssh root@your_IP-adres
Zaktualizuj pakiety systemowe i zainstaluj potrzebne komponenty:
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip git -y
npm install pm2 -g
Ważne: sprawdź wersję Python przed instalacją zależności:
python3 --version
Dla projektów z wirtualnym środowiskiem wykonaj:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Przeniesienie projektu i uruchomienie
Użyj SFTP do przesłania plików. W FileZilla podaj:
- Host: adres IP serwera
- Login: root
- Hasło: z panelu zarządzania
- Port: 22
Po skopiowaniu projektu na serwer:
- Przejdź do katalogu projektu
- Aktywuj wirtualne środowisko
- Zainstaluj zależności
- Uruchom bota przez PM2
cd /root/your_project
source venv/bin/activate
pm2 start main.py --name "telegram-bot"
PM2 zapewnia automatyczny restart po reboot i monitorowanie awarii. Sprawdź status procesu:
pm2 status
Obsługa i aktualizacje
Przy zmianach w kodzie stosuj ścisły checklistę:
- Edytuj pliki przez SFTP (FileZilla → Widok/Edycja)
- Zapisz zmiany (Ctrl+S)
- Potwierdź synchronizację w FileZilla
- Zrestartuj proces w PM2
pm2 restart telegram-bot
Do diagnozy problemów użyj:
pm2 logs— podgląd logów na żywopm2 monit— monitor zasobówpm2 resurrect— odtworzenie po awarii
Ważne
- Zawsze używaj .env do przechowywania tokenów
- Skonfiguruj automatyczne backupy co 24 godziny
- Testuj aktualizacje w izolowanej gałęzi
- Monitoruj zużycie pamięci przez htop
- Regularnie aktualizuj pakiety systemowe
Optymalizacja wydajności
Dla botów o wysokim obciążeniu (powyżej 1000 aktywnych użytkowników) zaleca się:
- Konfiguracja pliku swap
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
- Ograniczenie zasobów PM2
W ecosystem.config.js:
module.exports = {
apps: [{
name: 'telegram-bot',
script: 'main.py',
instances: 1,
autorestart: true,
max_memory_restart: '300M'
}]
}
- Konfiguracja firewalla
sudo ufw allow OpenSSH
sudo ufw allow 22/tcp
sudo ufw enable
Typowy błąd nowicjuszy to uruchomienie bota bez demonizacji. Po zamknięciu sesji SSH proces się kończy. PM2 rozwiązuje ten problem, ale wymaga poprawnej konfiguracji autostartu:
pm2 startup
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp /root
Do monitorowania dostępności użyj prostego endpointu health-check w kodzie bota:
from aiogram import Router
router = Router()
@router.message(Command('health'))
async def health_check(message: Message):
await message.answer('Bot is running')
Regularnie sprawdzaj logi pod kątem błędów połączenia z API Telegram. Typowe problemy:
- Nieprawidłowy token w .env
- Blokada adresu IP
- Przekroczenie limitów zapytań
- Błędy w obsłudze webhook
Przy webhookach koniecznie skonfiguruj Nginx jako reverse proxy z certyfikatem SSL. Dla botów o niskim obciążeniu wystarczy tryb polling, który nie wymaga dodatkowej infrastruktury.
— Editorial Team
Brak komentarzy.