
Когда бот начинает работать по-настоящему — обслуживать реальных клиентов, напоминать им о встречах, принимать платежи, — держать его на своём ноутбуке больше нельзя. Нужен сервер, который работает 24/7.
Многие владельцы бизнеса думают, что это сложно и дорого. На самом деле нужно несколько часов и примерно 300 рублей в месяц.
Выбираем VPS
VPS — это виртуальный сервер, который арендуют у хостинга. На что смотреть:
- Оперативная память: для обычного бота хватит 1–2 ГБ.
- Процессор: 1–2 ядра.
- Диск: 20–30 ГБ.
- Где стоит сервер: ближе к вашим клиентам. Если бот для России, берите дата-центр в России: так проще и с оплатой, и с поддержкой.
Где можно взять сервер:
| Хостинг | Страна | Чем удобен |
|---|---|---|
| Beget | Россия | простая панель, поддержка на русском |
| Selectel | Россия | много дата-центров в России, гибкие конфигурации |
| Timeweb Cloud | Россия | удобная панель, быстрый запуск сервера |
| Hetzner | Германия | недорогие мощные серверы, но с российской картой не оплатить |
| DigitalOcean | США | понятный интерфейс, но с российской картой не оплатить |
Для бота из России я советую начать с российского хостинга: оплата картой, поддержка на русском, данные клиентов остаются в России.
Что нужно сделать сразу после покупки
1. SSH-ключ
Входите на сервер не по паролю, а по SSH-ключу — так намного безопаснее.
В панели хостинга обычно есть кнопка «добавить SSH-ключ». Если у вас его нет, создайте на своём компьютере:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "bot@my-server"
Скопируйте содержимое файла ~/.ssh/id_ed25519.pub в панель хостинга.
2. Подключаемся к серверу
ssh root@123.45.67.89
(вместо IP подставьте реальный адрес вашего сервера)
3. Обновляем систему
apt update && apt upgrade -y
Это может занять несколько минут.
4. Создаём пользователя для бота
adduser bot
usermod -aG sudo bot
Задайте пароль: он понадобится для команд с sudo.
Теперь переходим на этого пользователя:
su - bot
Устанавливаем Python и бота
Большинство Telegram-ботов пишут на Python. Ставим его и git:
sudo apt install -y python3 python3-pip python3-venv git
Забираем код вашего бота. Если он на GitHub:
git clone https://github.com/your-repo/bot.git
cd bot
Создаём виртуальное окружение (чтобы зависимости бота не мешали системе):
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Сохраняем токен и переменные
Никогда не храните токен бота в коде: если код попадёт в открытый репозиторий, бота могут угнать.
Создайте файл .env в папке бота:
nano .env
И напишите:
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
DATABASE_URL=sqlite:///./bot.db
А в коде читайте токен из этого файла (нужна библиотека python-dotenv в requirements.txt):
import os
from dotenv import load_dotenv
load_dotenv()
token = os.getenv('TELEGRAM_BOT_TOKEN')
Ограничьте доступ к файлу:
chmod 600 .env
Проверяем, что бот работает
python main.py
Отправьте боту сообщение из Telegram. Если ответил — работает. Нажмите Ctrl+C.
Запускаем бота автоматически
Нужно, чтобы бот запускался при загрузке сервера и перезапускался, если упадёт. Для этого используем systemd.
Создайте файл:
sudo nano /etc/systemd/system/telegram-bot.service
Скопируйте туда:
[Unit]
Description=My Telegram Bot
After=network.target
[Service]
Type=simple
User=bot
WorkingDirectory=/home/bot/bot
ExecStart=/home/bot/bot/venv/bin/python /home/bot/bot/main.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Активируем сервис:
sudo systemctl daemon-reload
sudo systemctl enable telegram-bot.service
sudo systemctl start telegram-bot.service
Проверяем статус:
sudo systemctl status telegram-bot.service
Если статус active (running) — всё работает. Логи смотрим так:
sudo journalctl -u telegram-bot.service -n 20
Что дальше
Логи бота systemd пишет в свой журнал, и со временем он занимает место. Ограничьте его размер: в файле /etc/systemd/journald.conf укажите
[Journal]
SystemMaxUse=500M
и перезапустите журнал:
sudo systemctl restart systemd-journald
Если нужна база данных — PostgreSQL ставится так:
sudo apt install postgresql
sudo -u postgres createuser bot
sudo -u postgres createdb -O bot bot_database
Если нужна автоматическая резервная копия — напишите мне, помогу настроить выгрузку на Google Drive или Яндекс.Диск.
Типичные ошибки
«Connection refused» при входе по SSH — сервер не принимает подключение. Проверьте IP-адрес, что сервер запущен, и правила firewall в панели хостинга.
«Permission denied» в логах бота — у пользователя bot нет прав на файлы. Сделайте его владельцем папки: sudo chown -R bot:bot /home/bot/bot.
Бот перестал отвечать — скорее всего, сервис упал. Посмотрите journalctl и проверьте ошибки в коде.
Не видит зависимости — забыли source venv/bin/activate перед pip install. А в systemd указывайте полный путь: /home/bot/bot/venv/bin/python.
Итоги
Ваш бот теперь работает 24 часа в сутки на собственном сервере. Он может обрабатывать заявки, напоминать о встречах, принимать платежи — всё, что вы в нём запрограммировали.
Если нужна помощь с более сложной настройкой — резервные копии, собственный домен, интеграция с CRM или мониторинг сервера — готов помочь. Напишите, разберёмся вместе.
Нужен Telegram-бот для вашего дела?
Расскажите задачу — отвечу в течение дня, предложу решение и точную цену.
Написать в Telegram