Как загрузить Телеграмм бота на сервер

В процессе работы над проектом мне понадобилось выгрузить telegram-бота на VPS. Я не нашёл источника, в котором были бы собраны все детали этого процесса под мой конкретный случай. Поэтому в этой статье я бы хотел поделиться опытом с теми, кто столкнулся с такой же задачей.

1. VPS — что такое и где искать

VPS (virtual private server) или VDS (virtual dedicated server), виртуальный выделенный сервер — услуга предоставления серверных мощностей провайдером.

Существует множество сервисов по подбору VPS с конкретными характеристиками, вот топ-5 популярных провайдеров (взято из этой статьи). Сам я использовал сервис timeweb.

2. Что понадобится

  • Для начала, сам выделенный сервер, а также домен. В данной статье я буду использовать VPS на Ubuntu 22.04. Важно отметить, что telegram требует SSL-сертификат. Для собственных целей я приобрёл его, однако если вы не хотите тратиться, вы можете использовать self-signed certificate.
  • Затем для общения с ним нам нужен клиент удалённого доступа. Я использовал PuTTY
  • Чтобы передать на сервер файлы нашего бота, потребуется FTP-клиент. Мой выбор пал на FileZilla
  • Также для создания исполняемого .jar файла на своей машине мне понадобился Maven для терминала

Обновляем списки пакетов из репозиториев

Пишем Telegram бота на Python + Загружаем Telegram бота на сервер(хостинг)


$ sudo apt update
$ sudo apt install maven
$ mvn -version

3. Конфигурация и application.properties

Конфигурация моего Spring Boot приложения состоит из трёх файлов: конфигурация Spring, самого бота и файла application.properties

telegram.bot-name=[имя вашего бота] telegram.bot-token=[токен, который можно взять у BotFather] telegram.webhook-path=[ваш домен в формате https://:/bot] server.port=[порт подключения]

На данном этапе нужно отметить, что telegram поддерживает порты 443, 80, 88 и 8443.

SpringConfig.java

4. Процесс выгрузки

Настраиваем окружение

Открываем PuTTY и подключаемся к нашему серверу. Все требуемые данные для входа должен предоставить провайдер после аренды VPS.

Еще по теме:  Как проверить с помощью бота звонит ли человек в Телеграмме

Вводим (1) IP в графу Host Name и жмём (2) Open.

Вход в PuTTY

Далее входим под нашим юзером в систему и начинаем устанавливать нужные нам пакеты

Для начала обновляемся

$ sudo apt update

Устанавливаем нужный пакет JRE (Java Runtime Environment) . Я использую 17-ю версию Java, поэтому пишу следующую команду

$ apt install openjdk-17-jre-headless

Далее ставим JDK (Java Development Kit)

$ apt install openjdk-17-jdk-headless

Также нам потребуется утилита screen — консольная утилита позволяющая в действующей SSH сессии открывать неограниченное количество независимых виртуальных терминалов. Это нужно для того, чтобы после завершения удалённого подключения наш бот не решил, что отношения на расстоянии это не для него продолжал свою работу. Она может быть установлена по дефолту, однако если это не так:

За 10 минут — выгрузка (деплой) телеграм-бота на хостинг и его запуск.


$ apt install screen

Все нужные команды для работы с этой утилитой можно найти здесь.

Последние штрихи и перенос на сервер

На нашем устройстве идём в директорию проекта. Тут нам нужно создать исполняемый .jar файл (для этого нужно установить Maven). Пишем следующее:

$ maven clean install

После этого в папке botDirectory/target должны появиться два файла: BOTNAME-0.0.1-SNAPSHOT.jar и BOTNAME-0.0.1-SNAPSHOT.jar.original

Переходим в FileZilla. Вводим IP, имя пользователя, пароль, порт 22 и нажимаем Quickconnect. Теперь полностью переносим директорию с приложением в root, чтобы получилось вот так:

Вид корневой папки сервера

Передаём адрес telegram’y

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

https://api.telegram.org/bot/setWebhook?url=

Запускаем бота на сервере

Заходим в PuTTY и выполняем такую команду. Она создаст для нас тот самый screen, который будет поддерживать работу нашего приложения после нашего выхода.

$ sudo screen -S bot

Затем в этом скрине переходим в директорию botDirectory/target и вводим следующее:

$ java -jar BOTNAME-0.0.1-SNAPSHOT.jar

В случае успеха увидим следующую картину. После можем закрыть наш screen сочетанием Ctrl+A+D и выйти из клиента.

Результат запуска

Заключение

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

Еще по теме:  Как скрыть ссылку на канал в Телеграм

Источник: temofeev.ru

Загрузка телеграм бота на сервер. Подробные шаги загрузки файла *.py на бесплатный сервер PythonAnywhere

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

Существует множество бесплатных виртуальных серверов для тестирования ботов. Вот некоторые из них:

  1. PythonAnywhere — облачный хостинг для приложений Python. PythonAnywhere предоставляет бесплатный тарифный план, который позволяет развернуть одно приложение Python.
  2. Kamatera — есть тестовый период на месяц. Отличное решение для начального теста, а после пролноценной работы.
  3. Heroku — платформа для развертывания и хостинга приложений, которая предоставляет бесплатный тарифный план. Он позволяет развернуть приложение на серверах Heroku и бесплатно запустить до 5 приложений.
  4. Amazon Web Services (AWS) — облачная платформа, которая предоставляет бесплатный тарифный план, включая Amazon EC2 (виртуальные серверы), Amazon S3 (хранилище данных) и другие сервисы.
  5. Google Cloud Platform (GCP) — облачная платформа, которая также предоставляет бесплатный тарифный план, включая Google Compute Engine (виртуальные серверы) и другие сервисы.
  6. Microsoft Azure — облачная платформа, которая также предоставляет бесплатный тарифный план, включая виртуальные машины и другие сервисы.

PythonAnywhere

Для первого тестирования своего бота я выбрала PythonAnywhere. Регистрация интуитивно понятная.
Примечание: в бесплатном тарифе очень мало процесорных минут, так что этот тариф больше подходит для тестов, а не для полноценной работы. Для полноценной работа я рекомендую платные сервера https://zomro.com/

ШАГ 1. Начало работы. Установка виртуальной среды

1. Перейдите в Dashboard и запустите консоль. Для этого нажимаем New Console — $ Bash

2. Выполните следующую команду в консоли, чтобы установить инструмент virtualenv (инструмент для создания виртуальной среды):

Источник: stepfor.top

Деплоймент бота на Heroku

Рано или поздно в разработке ботов вы столкнетесь с проблемой хостинга бота. Скорее всего, у вас нет своего собственного сервера, а платить за виртуальный не каждый хочет, да и настройка виртуального сервера может казаться чем-то непосильным для начинающих разработчиков. К счастью, есть много сервисов, предоставляющих хостинг приложений бесплатно. Одним из таких есть Heroku. Сегодня я расскажу, как легко и быстро развернуть простенького бота на данной платформе.

heroku logo

Почему именно Heroku? Она была одной из первых платформ, предоставляющих услуги типа PaaS (Platform as a Service) и есть лидером в этой сфере. Используя такие облачные сервисы, разработчик должен предоставить только приложение. Обо всем остальном – серверное железо, операционная система, интерпретатор языка и база данных, позаботится сервис.

Еще по теме:  Почему не приходит код Телеграмм на телефон подтверждения смс с кодом активации

PaaS

По умолчанию, Heroku предлагает до 5 приложений на аккаунт и дает 550 бесплатных дино-часов в месяц. Если же подключить к аккаунту банковскую карту, их к-во расширится до 1000. Подробнее о фри дино-часах можно почитать здесь.

Регистрация и установка клиента Heroku

Прежде всего, для использования Heroku, нужно авторизироваться. Если у вас нет аккаунта, создайте его, перейдя по этой ссылке. Затем нужно установить Heroku Toolbelt. Эта утилита на данный момент поддерживает основные ОС: Windows, macOS и Linux.

Скачать и установить Heroku CLI на Windows или macOS можно прямо отсюда. На Ubuntu/Debian платформах вам понадобится ввести данную комманду:

$ curl https : / / cli — assets . heroku . com / install — ubuntu . sh | sh

После установки, чтобы убедиться, что все установилось, откройте консоль и введите heroku :

code

Если все работает, логинимся, используя данные, введенные при регистрации:

$ heroku login

Создание приложения

Сегодня мы будем деплоить бота, написанного во второй части. Для начала создадим наше приложение под названием momentumbots :

code

Вывод команды показывает, что приложение было успешно создано и доступно на https://momentumbots.herokuapp.com .

code

Имя momentumbots уже занято мной, так что придумайте свое

Если же не указывать название приложения, то будет сгенерировано рандомное название:

code

Ставим Вебхуки

В прошлых частях мы писали ботов, использующих Long Polling. Суть его в том, что на сервера Телеграмма периодически приходят запросы на получение обновлений. Это ненадежно, т.к. сервера Telegram могут возвращать ошибку 504, вырубая бота. Используя же вебхуки, мы устанаваливаем URL, на который будут приходить обновления автоматически, таким образом избавляясь от этой проблемы.

Вебхуки в тг работают только по HTTPS. Благо, Heroku предоставляет доступ к приложению через HTTPS и SSL-сертификат, освободжая нас от заботы о создании сертификатов.

В качестве веб-сервера будем использовать Flask, однако вам не составит труда разобраться с другими фреймворками. На Github-странице pyTelegramBotAPI, помимо Flask’а, есть примеры для aiohttp, CherryPy, CPython и Tornado.

Добавим в config.py переменную, которая хранит название нашего приложения:

Источник: momentum-bots.top

Рейтинг
( Пока оценок нет )
Загрузка ...