Разместить телеграмм-бота на виртуальном хостинге cPanel можно, если он создан на Python. Для этого в панели есть специальное приложение, позволяющее создавать виртуальные окружения для ваших проектов. Подробнее обо всех необходимых настройках, которые вам предстоит сделать, читайте в статье.

Виртуальный хостинг с тестовым периодом и поддержкой 24/7

Шаг 1: Подготовить Telegram-бота

Если вы вдруг еще не создали бота в Telegram, вот как это сделать:

  1. Откройте Telegram и найдите @BotFather.
  2. Создайте новый бот, отправив команду /newbot.
  3. Следуйте инструкциям и получите токен для своего бота, который будет выглядеть примерно так: 123456789:ABCdefGhIJklMNOpqrStuVWxyz.
Регистрация бота в Telegram

Шаг 2. Загрузить файлы бота на сервер

На виртуальном хостинге это можно сделать либо в панели управления хостингом в браузере (инструкции будут зависеть от конкретной панели), либо в специальной программе по протоколу FTP (универсальный вариант для любого хостинга).

Как загрузить файлы с помощью cPanel
Как загрузить файлы по FTP в FileZilla

Для удобства можете создать для бота отдельную папку внутри корневой папки сайта. В нашем примере python-telegram-bot.

Загрузка файлов Telegram-бота в cPanel

Альтернативный вариант (если бот выложен в публичном репозитории на Github) — загрузить файлы напрямую из Github. Для этого подключитесь к серверу по протоколу SSH или откройте приложение Terminal в cPanel, перейдите в нужный каталог с помощью команды cd, а затем используйте git clone https://url для загрузки.

Загрузка файлов из публичного репозитория Github через терминал

Если у вас закрытый репозиторий, можете добавить его в cPanel в приложении «Git Version Control». Это неплохая идея даже для публичного репозитория, поскольку это позволит быстро подтягивать изменения с Github на хостинг. Вот инструкция, где описан принцип работы этого приложения:

Как подключить Git репозиторий к cPanel

Шаг 3: Добавить детали бота в конфигурационный файл

Речь идёт о токене бота, а также о других потенциально необходимых деталях, таких как Telegram API Key/Hash, Telegram Chat ID, ключи API сторонних сервисов.

Если разработчик бота — вы, тогда вы сами знаете, что и куда нужно добавить. Если нет, можете либо проверить файл readme.md (разработчики ботов часто добавляют в этот файл инструкции по установке), либо проверить файлы бота вручную (если разбираетесь): например файл окружения .env, любой файл со словом config в названии, основной файл бота bot.py / app.py / main.py. Ищите там команду со словом TOKEN .

Содержимое конфигурационного файла .env для телеграмм-бота на Flask

Шаг 4: Установить SSL-сертификат

В документации Telegram API написано, что все запросы должны поступать по протоколу HTTPS. Поэтому обязательно установите SSL-сертификат на ваш домен/поддомен. У нас есть инструкции, как сделать это на хостинге с панелью управления cPanel:

Как установить платный SSL-сертификат в cPanel
Как установить бесплатный SSL-сертификат Let’s Encrypt в cPanel

Шаг 5: Создать Webhook для Telegram

Нюанс: Это нужно делать только если ваш бот работает с помощью Webhook. Если он работает с помощью Long Polling, переходите к следующему шагу.

Чтобы создать Webhook, выполните такую команду в браузере (надо подставить собственные значения вместо указанных прописными буквами):

https://api.telegram.org/botBOT_TOKEN/setWebhook?url=https://YOUR_DOMAIN

Чтобы убедиться, что вебхук работает, используйте следующую команду:

https://api.telegram.org/botBOT_TOKEN/getWebhookInfo

Ответ должен содержать информацию о текущем вебхуке и его статусе:

{"ok":true,"result":{"url":"https://YOUR_DOMAIN","has_custom_certificate":false,"pending_update_count":0,"max_connections":40,"ip_address":"123.45.76.89"}} 

Шаг 6: Подготовить виртуальную среду в cPanel

На этом этапе сначала нужно создать виртуальную среду, затем установить все необходимые библиотеки, а в конце — изменить файл запуска приложения.

Создать виртуальную среду

Зайдите в cPanel, найдите на главной странице раздел «Программное обеспечение» и откройте приложение «Настройка Python приложений».

Приложение «Настройка Python приложений» в cPanel

Нажмите синюю кнопку «Создать приложение» в правой части экрана. На следующей странице заполните следующие поля:

  • Версия Python — выберите из раскрывающегося списка нужную версию Python.
  • Корневой каталог приложения — введите путь к корневой папке вашего проекта.
  • URL приложения — выберите из выпадающего списка нужное доменное имя.

Остальные поля обязательно оставьте пустыми и нажмите вверху кнопку «Create».

Создание виртуального окружения Python в cPanel

В результате в директории из поля «Корневой каталог приложения» появятся служебные каталоги виртуальной среды и файл запуска приложения — passenger_wsgi.py . Если вы введете домен в браузере, должен отобразиться текст «It works!» и версия Python.

Системные файлы виртуального окружения Python в диспетчере файлов cPanel

Установить необходимые библиотеки

Это можно сделать двумя способами: 1) в интерфейсе cPanel; 2) в терминале.

В интерфейсе cPanel это можно сделать только с помощью файла requirements.txt, который обычно находится в корне проекта и в котором указывают все необходимые библиотеки (если нужно, с их версиями) по одной в каждой строке.

Файл requirements.txt в диспетчере файлов cPanel

Найдите на странице приложения в cPanel опцию «Конфигурационные файлы», впишите в пустом поле requirements.txt и нажмите «Добавить».

Добавление requirements.txt в приложении «Настройка Python приложений»

После этого кнопка «Запустить Pip Install» должна стать активной. Нажмите ее и выберите в раскрывающемся списке «requirements.txt». Это запустит процесс установки указанных в файле библиотек.

Установка библиотек из файла requirements.txt в интерфейсе cPanel

Дождитесь окончания процесса. Если всё пройдёт успешно, в правом верхнем углу экрана появится зеленое сообщение.

Сообщение об успешной установке библиотек в cPanel

Если что-то вдруг не получится установить, появится красное сообщение с коротким текстом ошибки. К сожалению, из этого сообщения не всегда ясно, в чем именно проблема. В таком случае лучше попытаться установить библиотеки в терминале, где ошибку можно будет прочесть в полном объеме.

Сообщения об ошибке при установке библиотек в cPanel

В терминале. Подключитесь к серверу по протоколу SSH или откройте приложение Terminal в cPanel. В верхней части приложения «Настройка Python приложений» будет команда для быстрого перехода в виртуальное окружение. Нажмите на неё, чтобы скопировать, затем выполните в терминале.

Дальше можете устанавливать необходимые библиотеки с помощью команды pip install -r requirements.txt или просто pip install [название-библиотеки] .

Команда для входа в виртуальное окружение Python в терминале

Изменить файл запуска приложения

Это нужно сделать, чтобы в файле passenger_wsgi.py, с помощью которого cPanel запускает Python приложения, появилась информация, где искать вашего бота.

Для этого на странице вашего проекта в Setup Python App измените значение в полях:

  • Файл запуска приложения — Путь к главному файлу приложения относительно корневой директории, указанной в опции «Корневой каталог приложения». К примеру, app.py, если файл лежит в корневой директории или bot/app.py, если файл лежит в директории bot.
  • Точка входа в приложение — Название переменной, которая содержит WSGI-приложение. Для фреймворка Flask это будет «app» вместо «application», для Django должно быть «application», для FastAPI может быть и то и другое (зависит от имплементации).
Поля с главным файлом бота и точкой входа в приложение cPanel

В результате этого действия изменится структура файла passenger_wsgi.py для взаимодействия с указанным файлом. На скриншоте ниже слева указано стандартное содержимое файла passenger, справа — его содержимое после изменения данных в полях «Файл запуска приложения» и «Точка входа в приложение».

Содержимое файла passenger_wsgi.py до и после редактирования

Шаг 7: Запустить и протестировать бота

Когда все будет настроено, нажмите «Restart» на странице проекта в «Настройка Python приложений» cPanel, чтобы перезапустить приложение.

Кнопки остановки и перезапуска Python-приложения в cPanel

Дальше отправьте сообщение в бот в Telegram и проверьте, реагирует ли он. К примеру, отправьте команду /start и убедитесь, что бот реагирует.

Возможные проблемы и их решение

Каждый бот требует индивидуального подхода к решению ошибок. Если при обращении к боту по URL-адресу выскакивает 500 ошибка, ищите её причину в логах. Файл с логами называется stderr.log и находится в корневом каталоге проекта.

Файл с логами виртуального окружения Python в диспетчере файлов cPanel

Также может возникнуть ситуация, когда бот не получается запустить через приложение «Настройка Python приложений» в cPanel, но всё работает, если зайти в виртуальное окружение в терминале и напрямую запустить скрипт с помощью команды python файл.py (вместо файл.ру должно быть название главного файла бота).

Такое может быть, если ваш бот не соответствует формату WSGI, которого требует приложение «Настройка Python приложений» в cPanel. Это приложение работает на основе Passenger, и чтобы бот запускался, оно должно работать именно как веб-приложение, то есть использовать фреймворк, который обрабатывает HTTP-запросы (например, Flask, Django или FastAPI).

В принципе запускать бота через консоль (в обход Passenger) — тоже рабочий способ. Для этого даже не нужно каждый раз заходить в терминал. Скрипт можно выполнить в интерфейсе «Настройка Python приложений» с помощью опции «Выполнить python скрипт» в самом низу. Просто впишите туда путь к файлу, который нужно запустить.

Поле для выполнения скриптов внутри виртуального окружения Python в cPanel

Вы даже можете создать крон в cPanel, который будет запускать скрипт раз в один или несколько часов, чтобы периодически «будить» бота, потому что на виртуальном хостинге неактивные процессы будут принудительно завершаться.

Как создать крон в cPanel

Когда виртуальный хостинг не подойдет

Вот основные характеристики Telegram-бота, которые могут помешать его нормальной работе на виртуальном хостинге:

  • Боту нужен постоянный фоновый процесс. К примеру, он работает через Long Polling, либо выполняет фоновые задания, такие как парсинг, мониторинг, обработка очередей. Такие процессы могут сильно нагружать сервер, их будут убивать.
  • Бот выполняет ресурсоёмкие задачи. К примеру, занимается машинным обучением или криптографией, обрабатывает большие файлы. Для таких задач не хватит скромных ресурсов виртуального хостинга.
  • Для настройки бота требуется root-доступ. Например, для установки Docker, нестандартных зависимостей или управления процессами. На виртуальном хостинге такой доступ будет только у администраторов сервера.
  • Боту требуется много одновременных соединений. Если к боту будет много запросов одновременно, это может превысить ограничение на количество одновременных соединений на виртуальном хостинге. Тогда для некоторых пользователей бот не будет работать.

Нюанс: Этот список не является исчерпывающим. Поскольку все боты очень разные, учесть все ситуации невозможно. Однако мы всё равно хотели перечислить хотя бы некоторые моменты, чтобы хотя бы часть людей сразу могла искать другой вариант.

Другой вариант — это VPS. Там нет большинства ограничений, потому что на одном сервере меньше клиентов и они более изолированы друг от друга.

Что дальше

Если вдруг у вас не получится разобраться или возникнут дополнительные вопросы после того, как разместить Telegram-бота на виртуальном хостинге, оставьте комментарий к статье. Попробуем всем помочь.

Была ли статья полезной?

Спасибо за отзыв!