Webhook Telegram не привязывается в vps

  • Личный сайт Новикова Максима Глебовича
  • Последние записи
  • Архив
  • Друзья
  • Профиль

Дневник злостного критика-рецидивиста — жуткого зануды
Слесарь, электрик, программист.

  • Теги
  • /QR-кодadobe premierecellulailereclipseiconbit nettab thorjavakotlinlinuxmccullochribbon xml editorribbonxmleditorscintillatable2htmltelegramwhatsappwi-fiЁлочкаАвтомобильАндроидАномалияАфераБелкаБилайнБрейвикВДНХВалежникВеснаВидеоурокиВиноградовВнуковоВоротаВыборыГазГайдпаркГрафеновая лампочкаГрунтДачаДельфиЖивотное колесоЗаборИнструкцииКалибриллаКолесникКолодецКультураКурскЛампыЛесЛинуксМАКС авиасалонНаукаО_компьютере_начинающимОбъективыОпросОцифровкаПенсияПланшетПодъездПолитехнический музейПолитикаПрограммированиеПустельгаПылесосРаботаРаритетыРеновацияРисункиРоссияСМИСарайСарай_catsloverСбербанкСканерыСклоны тоннеляСколковоТеле2ТерминологияТипографикаУточкиФобос-ГрунтФотоФотовыставкаХолодильникЦапляЧайкиЭкономикаЭлектричествобардакводосчётчикизвуккомпьютерыподсветка синтаксисареальностьрелигиясалютсмартфоныфейерверк

Как бесплатно разместить бота для Telegram с WebHook

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

Telegram Bot — Part 5 — Set Webhook

В названии поста присутствует ещё одно страшное слово — WebHook, которое тоже может вызвать настороженность. Нет, речь не идёт о неких недокументированных полулегальных способах программирования. Словом WebHook разработчики мессенджера называют вполне легальное действие — установку на костяк бота, размещённого на серверах Telegram, функцию обратного вызова для его основного кода, размещённого на каком-нибудь внешнем хостинге.

Замечу, что есть и другой способ взаимодействие бота и его кода, в котором код сам опрашивает бота через равные промежутки времени на предмет поступления новых команд (long polling). Но этот способ хуже по всем параметрам. Во-первых, он даёт задержку, достигающую величины заданного интервала опроса, во-вторых, постоянно работающий код прослушивания даёт нагрузку на сервер хостера, а в-третьих, работающие в фоне скрипты (демоны), как правило, запрещены на бесплатных сайтах, или действие скриптов ограничено по времени.

Итак, предыдущий мой пост был посвящён развёртыванию бота для мессенджера Telegram с облачной среды разработки IDE Cloud9 на бесплатный облачный хостинг Heroku. К сожалению, бесплатный тарифный план этого хостинга подразумевает 18-часовую работу сервера и 6-часовой простой за сутки, что вполне подходит для обучения созданию ботов, их тестирования и даже начального периода его эксплуатации среди друзей. Но, к сожалению, для широкого выхода на люди нужны другие условия, не ограничивающие бота по длительности работы.

Поскольку к настоящему времени мой первый бот получил вполне законченный вид, я задумался над тем, как найти для него более подходящее пристанище. Но я не был готов платить деньги за функционирование не приносящего дохода продукта. И я стал искать другие варианты.

Непременным условием для работы бота через WebHook является защищённый канал передачи данных между сервером мессенджера и сервером хостера. Защищённый канал реализуется протоколом передачи данных https. Для установки этого протокола нужно установить на сайт, где будет работать код бота, ключи SSL. К сожалению, почти все бесплатные хостинги не разрешают установку SSL, и позволяют работать только по http.

Я стал искать хостинг, который бы, как и Heroku, предоставлял возможность использования SSL, но не имел бы ограничения по количеству рабочего времени сервера. Но поиски были тщетными. Единственное, что я ещё нашёл бесплатного с SSL — это облачный сервис Google Cloud Platform.

Google Cloud Platform

Что я могу сказать про Google Cloud Platform? Это сложнейшая облачная система, внутри которой есть сервис App Engine для создания и размещения приложений на языках Python, PHP, Go, Ruby, Java и JavaScript (Node.js). Но у неё есть минус — в бесплатном варианте файловая система сервиса закрыта для записи, то есть, сайт не может сохранять у себя файлы, а без этого у меня не получилось заставить бота отдавать пользователю изображения, скаченные с другого, внешнего ресурса.

Другим недостатком применения Google Cloud Platform в качестве хостера ботов является её чрезмерная сложность, особенно когда плохо понимаешь английский язык или не находишься глубоко в теме облачной разработки приложений. Тем не менее, если алгоритм работы бота не предусматривает сохранение файлов, то этот хостинг вполне подойдёт для нашей цели, обеспечив боту круглосуточную, быструю и бесперебойную работу.

Мне не удалось разобраться в развёртывании приложений из встроенной IDE сервиса. Кнопка автоматического развёртывания в бесплатном варианте не работает, а развёртывание из командной строки встроенного терминала у меня почему-то не даёт эффекта, хотя процесс завершается без ошибок, а трафик направлялся на самую свежую версию. То ли я не ту ветку проекта разворачивал, то ли что, в общем, до конца не разобрался. Но у меня прекрасно заработал вариант разворачивания сайта с моего компьютера, о чём я расскажу далее.

Итак, для развёртывания приложения я скачал файлы созданного в App Engine проекта к себе на диск (с файлом настроек проекта app.yaml) и специальную утилиту Google App Engine SDK for PHP. Утилита написана на языке Python, поэтому требует его предварительной установки на компьютер. В процессе инсталляции будет предложено скачать его по ссылке и установить. При установке Python обязательно отметьте для установки компонент «Add python.exe to Path». После установки языка можно продолжить установку утилиты.

После завершения установки запускаем Google App Engine Launcher, добавляем в него скаченный ранее, существующий в App Engine проект, и теперь можем его разворачивать кнопкой Deploy. Редактирование файлов проекта (за исключением файла app.yaml) утилита не осуществляет, так что всё делаем в любом внешнем редакторе, и внутрь страшного App Engine можем больше не возвращаться.

Если после успешного развёртывания браузер не видит изменений, проверьте внутри App Engine в разделе Compute в пункте Versions, весь ли трафик направлен на вашу последнюю версию. Все старые версии лучше удалить (на бесплатном тарифе нельзя создавать больше 10 версий).

Погоняв своего бота у Google, я всё же решил продолжить поиски, поскольку не смог обойтись при пересылке файлов без их записи в файловую систему. К сожалению, других бесплатных хостингов с SSL мне не попадалось, но я набрёл на очень интересный вариант решения проблемы — CDN-сервис CloudFlare.

Бесплатный хостинг + бесплатный домен 2-го уровня + бесплатная CDN

Неуёмная жажда халявы, поистине, сдвигает горы. Она же привела меня к обнаружению очень интересного бесплатного сервиса — CloudFlare. CloudFlare представляет собой сервис доставки контента с кешированием и защитой по SSL. Оказывается, можно перенаправить весь трафик к своему сайту через специальную сеть, по пути шифруя его по протоколу https, и для этого не нужны SSL-сертификаты на сайте! Таким образом, весь код бота можно разместить на любом бесплатном хостинге, и легко сделать его видимым для серверов Telegram по https!

Еще по теме:  Как в приложение fitpro добавить Телеграмм

Дальнейшее изучение вопроса показало, что для работы этой системы нужно, чтобы у сайта было доменное имя 2-го уровня вида «имя.рф». Однако все бесплатные хостинги дают имена 3-го уровня типа «имя.хостинг.рф». Но они обычно позволяют линковать к сайтам внешние доменные имена. То есть, можно приобрести отдельно домен 2-го уровня и бесплатно прилинковать его к сайту на бесплатном хостинге.

В принципе, домены 2-го уровня стоят относительно недорого. Так, домен в зоне .ru вообще можно купить всего за 99 рублей, и продлевать его за ту же цену каждый год. Но зачем платить, если есть халява, а она есть! Некоторые небольшие страны, желая популяризовать себя в мире, предлагают бесплатную регистрацию доменного имени 2-го уровня в доменной зоне своей страны. Так почему бы не воспользоваться этим? Это можно сделать на сайте freenom.com за несколько минут. Там предлагаются домены в зонах .tk (острова Токелау), .ml (Мали), .ga (Габона), .cf (Центральноафриканская Республика) и .gq (Экваториальная Гвинея).

Регистрировать домены бесплатно можно на срок до 12 месяцев. Через год, за 2 недели до истечения срока, вам по почте придёт напоминание о его продлении, которое производится фактически одним кликом мышки.

Если вы уже имеете аккаунт на freenom.com с зарегистрированными доменными именами, но при попытке добавления нового домена возникает ошибка «Error code 0x0116a» с надписью «At this moment we are unable to register any domains or other services in this account», что в переводе означает «На данный момент мы не можем зарегистрировать любые домены или другие услуги в этом аккаунте», просто создайте другой аккаунт. Замечено, что при регистрации не все E-mail’ы могут подойти. Так, у меня каким-то образом засветились там все мои адреса на mail и yandex, и второй аккаунт я регистрировал уже на новый gmail.

  1. Ищем бесплатный хостинг, поддерживающий языки программирования, позволяющие писать на диск. Язык JavaScript по этой причине не подойдёт, но, например, PHP сейчас поддерживается практически на любом бесплатном хостинге. Также, наш потенциальный хостер должен предоставлять возможность линковать к нашему сайту внешние доменные имена. Эта услуга тоже есть практически у любого бесплатного хостера. Регистрируемся, заходим в панель управления хостингом, ищем раздел управления доменами, и копируем оттуда имена двух первых DNS-серверов. Они нам пригодятся при перенаправлении будущего доменного имени на наш сайт.
  2. Переходим на сайт freenom.com, регистрируемся там и регистрируем желаемое доменное имя второго уровня на максимальный бесплатный срок (12 месяцев). Затем переходим там в Domains -> My Domains, напротив нашего нового домена нажимаем кнопку Manage Domain, переходим в Managment Tools -> Nameservers, переключаем кнопку выбора в положение Use custom nameservers и вбиваем в два верхних поля скопированные нами ранее имена DNS-серверов хостера. Сохраняем изменения. Несмотря на предупреждение, что доменное имя заработает в течение 24 часов, обычно оно начинает работать уже в течение несколько минут.
  3. Возвращаемся к нашему хостеру, и у него в разделе управления доменами прописываем только что зарегистрированное доменное имя. Линкуем его там к папке сайта. Через несколько минут линковка хостера тоже вступает в силу, и теперь заготовку нашего нового сайта становится возможным открывать в браузере по новому доменному имени 2-го уровня. Ура!
  4. Теперь переходим на сайт CloudFlare, регистрируемся, указываем там новое доменное имя нашего сайта, и действуем далее согласно указаниям на сайте. В конце нам выдаётся два новых имени DNS-сервера, которыми надо заменить соответствующие имена на freenom.com, скопированные у нашего хостера. Замечу, что переключение на https обещается в течение 24 часов, но у меня опять же заработало уже через несколько минут.
  5. Переходим на сайт freenom.com, открываем уже знакомую нам страницу с DNS-серверами, и меняем там имена, скопированные у хостера, именами, выданными сервисом CloudFlare. Если поля имён DNS-серверов неактивны и не позволяют себя редактировать, просто переключим туда-обратно опцию выбора Use custom nameservers. Всё сохраняем и выходим. Всё!

Как уже было отмечено, служба CloudFlare является также кеширующим прокси-сервером, ускоряющим загрузку страниц сайта. Но если вы находитесь в России и используете российский хостинг, то я не думаю, что выигрыш в скорости будет заметен — ведь все данные будут идти через серверы, расположенные вне страны, поэтому возможно даже замедление открытия страниц сайта, хотя и не обязательно. Но ведь у нас другая цель, верно? Кстати, кеширование можно отключить, включив на CloudFlare режим разработчика (Development Mode). Это полезно, если вы вносите изменения на статических страницах вашего сайта, и хотите при обновлении сразу видеть результат в браузере. Также полезно оставить включенной функцию Always Online, которая будет отдавать запрошенные страницы из кеша даже если наш сайт вдруг временно отключится. Это предотвратит блокировку нашего бесплатного доменного имени, которая может произойти в случае его неиспользования.

Теперь несколько слов о блокировках некоторых IP-адресов CloudFlare Роскомнадзором. Периодически эта тема всплывает в российских СМИ (особенно актуальна она была в 2013 году), но нас она не затрагивает. Серверы Telegram, как и серверы CloudFlare, расположены не в России, и блокировка последних роскомнадзором нам не страшна — они всё равно будут запрашиваться серверами Telegram извне России. Гораздо хуже, если заблокируют сам Telegram, о возможности чего тоже не раз проскакивало в СМИ. Но я не думаю, что до этого дойдёт, о чём я уже писал ранее.

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

Источник: novikovmaxim.livejournal.com

Ошибка 409 телеграм бот

Что делать, если не получается установить бота (возникает ошибка 409), использующего API Telegram. Исправление ошибок при загрузке чат-бота Телеграм на сервер.

Почему не получается установить бот Api telegram и что делать с ошибкой 409

В 2013-м году братья Дуровы создали инновационный мессенджер Telegram, который за девять лет был установлен на мобильные устройства свыше одного миллиарда раз (если верить статистике). Однако не только компании и обычные пользователи любят Телеграм. Платформу активно используют и разработчики для создания интерактивных чат-ботов. Однако иногда они сталкиваются с ошибкой 409, которая сопровождается сообщением «Не получается установить бот API Telegram».

Причины ошибки

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

Screenshot_4

  1. Пользователь или программа отправляет запрос на сервер в виде функции.
  2. Сервер обрабатывает введенные параметры и сам запрос, а после выдает ответ.
  3. Пользователь считывает полученный ответ и оперирует с ним.

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

  1. Переданы некорректные аргументы или значения. В особенности проверьте правильность указанного токена.
  2. Бот запущен на нескольких серверах сразу. Нельзя указать один и тот же токен на двух хостингах.
  3. Проблема на стороне сервера Telegram. Глобальные сбои бывают редко, но не будем исключать их вероятность.
Еще по теме:  Телеграмм бот для чеков

Отталкиваясь от возможных причин, автор составил список возможных решений. Ознакомиться с ним можете в разделе ниже.

Способы исправления

Примечательно, что автор и сам однажды столкнулся с этой проблемой, когда случайно загружал заброшенного на старом сервере бота на новый хостинг. По правилам разработчик должен сначала остановить чат-бота на старом устройстве, а после только запустить его на новом. Чтобы проверить, запущен ли уже бот, просто отправьте ему сообщение с командой /start. Обычно большинство приложений запрограммировано реагировать на эту команду.

В зависимости от результата ввода команды будут меняться и дальнейшие действия:

  1. Приложение ответило. Значит, оно запущено на старом сервере. Откройте его интерфейс и завершите работу процесса.
  2. Ответ не пришел. В таком случае, скорее всего, проблема кроется в самом токене. Проверьте, указан ли в конфигурациях выданный BotFather токен и укажите корректный идентификатор.

Информационный портал IT Техник

Вам помогло? Поделитесь с друзьями — помогите и нам!

для начала удалите

if __name__ == ‘__main__’: bot.polling(none_stop=True)

а webhook, у меня работает так:

bot.remove_webhook() bot.set_webhook(url=WEBHOOK_URL_BASE + WEBHOOK_URL_PATH, certificate=open(WEBHOOK_SSL_CERT, ‘r’)) cherrypy.config.update(< ‘server.socket_host’: WEBHOOK_LISTEN, ‘server.socket_port’: WEBHOOK_PORT, ‘server.ssl_module’: ‘builtin’, ‘server.ssl_certificate’: WEBHOOK_SSL_CERT, ‘server.ssl_private_key’: WEBHOOK_SSL_PRIV >) cherrypy.quickstart(WebhookServer(), WEBHOOK_URL_PATH, >)

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

Основные причины возникновения ошибки 409:

  • Пользователь обращается к данным, имеющим отличное значение или более новую версию. В итоге, сервер выдает ошибку 409, т.к. существует обновленная версия файла, страницы или скрипта.
  • Ошибка 409 появилась в результате конфликтующих запросов внутри файлов на сервере. Решить проблему может программист.
  • Использование прокси, которое конфликтует с определенными адресами или форматами запрашиваемых данных. Не путайте эту ошибку с ошибкой 407.
  • Более распространенная причина – троян или вирус, который блокирует запросы к определенным сайтам или подгружает файл, который имеет конфликт с конфигурацией браузера.
  • Ошибка 409 Conflicting Request в большинстве случае решается системным администратором или программистом, если это не касается заражения компьютера вирусом или трояном. Как проверить и какой программой расскажем ниже.

Чистим от вируса или трояна, чтобы убрать ошибку 409

Определить вирус/троян у вас или нет просто – установите программу Cureit от Dr.Web и просканируйте систему этой программой. Она бесплатная и не требует установки. Скачиваем только с официального сайта. В программе отмечаем все пункты для проверки и шагаем спать/на работу, т.к. сама проверка займет длительное время. На скриншоте ниже вы можете рассмотреть, как и что отмечать в программе. Свой антивирус лучше отключить перед проверкой.

Можно также использовать бесплатную утилиту от Касперского, но она довольно сложная и нужно понимать, какие скрипты вводить в консоль. Остальные программы – платные, поэтому не пишу о них. Кстати, не рекомендую скачивать бесплатные ключи, т.к. такие генераторы могут с собой принести тот самый вирус или троян. Не пожалейте 30$ в год за нормальную защиту.

Исправляем ошибку 409 в конкретном браузере

В случае, если ошибка 409 Conflicting Request появляется буквально на каждом сайте, чтобы вы ни нажимали – это точно троян или вирус. Причем это должно происходить в любом браузере. Если нет – можете сразу удалить и заново установить браузер. Возможно произошел сбой конфигурации браузера. Заранее нужно сохранить закладки, т.к. можно потерять все нажитое непосильным трудом. Делается это просто. На скриншоте выше вы видите пример сохранения настроек в браузере Mozilla. Аналогично делается и в остальных браузерах.

Последнее слово про ошибку

Если уж сильно хочется – установите программу CCleaner и пройдитесь по реестру с помощью этой программы. Во всяком случае это безопаснее, чем делать что-то лично ручками. Манипуляции с компьютером в случае с ошибкой 409 делать не стоит.

A request to the Telegram API was unsuccessful and produced the following error.

telebot.apihelper.ApiException A request to the Telegram API was unsuccessful. The Server returned HTTP 409 conflict Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body: [b»] ERROR — TeleBot: «A request to the Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body: [b»]» (util.py:65 Polling Thread) ERROR — TeleBot: «ApiException occurred, args=(‘A request to the Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body: n[b»]’,)

What does this error mean?

28.02.2021, 13:50. Показов 26624. Ответов 2

Метки нет (Все метки)

При написании простого бота

1 2 3 4 5 6 7 8 9 10 11 12 13 14

ERROR — TeleBot: «A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: can’t use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first»

что не так я делаю?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Видимо до этого пытались запустить бота не через polling, а webhook методом.

Перед первом запуском кода вставьте строчку.

bot.remove_webhook()

Позже эту строку можно будет удалить.

Попробуйте в самый конец файла добавить:

if __name__ == ‘__main__’: bot.polling(none_stop=True)

After deploy i have error on server

Enter fullscreen mode

Exit fullscreen mode

dokku logs kaufman-bot

For solve this error change libs/plugins/server/src/lib/scraper/scraper-services/scraper.service.ts

Enter fullscreen mode

Exit fullscreen mode

Enter fullscreen mode

Exit fullscreen mode

And change apps/server/src/app/app.service.ts

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

Telegram-бот на сервере RUVDS

Если вы заинтересованы в размещении telegram бота на нашем сервере, то первое с чем следует определиться, это с нужными характеристиками машины. Обычный бот, который пересылает запросы пользователей, отвечает заготовленным текстом или ретранслирует данные с внешних источников – это очень простая программа, и если она не обслуживает одновременно сотни пользователей, то будет достаточно самой дешёвой конфигурации. Если же бот активно собирает информацию из внешних источников, производит её трансформацию, что-то обрабатывает алгоритмами или к нему одномоментно будут обращаться тысячи пользователей, то в таком случае необходим индивидуальный подход. После запуска бота можно оценить реальную нагрузку и поменять конфигурацию на более или менее мощную.

Итак, предположим у вас есть один или несколько простых ботов, помимо требуемой мощности важно на каком языке и для какой платформы написан бот. Так как для всех языков невозможно предусмотреть единую инструкцию, будет рассмотрен наиболее распространённый вариант с ботом, написанным на Python.

В разделе заказа сервера выбираем:

  • Московский дата-центр
  • Минимальные характеристики CPU, RAM, диск – HDD
  • Шаблон сервера – “Установить чистую ОС”
  • Операционную систему Debian 10 (если бот кроссплатформенный, а не заточен под конкретную ОС)
Еще по теме:  Как создать квиз в Телеграм боте

Или просто воспользуйтесь этой ссылкой для заказа идентичной конфигурации.

Начинаем настройку

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

В списке “Мои серверы” на нашем портале необходимо найти пароль администратора сервера. Этот пароль постоянно лучше нигде не хранить, записать его можно временно на период проведения настроек, а потом удалить. Он больше не пригодится, но в случае необходимости его всегда можно посмотреть на портале.

Для настройки вашего сервера необходима программа удалённого управления (терминал), если у вас нет такого ПО, то можно установить широко известный терминал Putty.

Запускаем терминал и в настройках для подключения вводим IP-адрес вашего сервера, который указан в информации о сервере на портале. Порт подключения менять не надо (22, стандартный для SSH). Нажимаем подключиться, “Open”. Если появится текст, предлагающий ввести данные для входа, то всё было указано правильно.

Вводим имя администратора root, нажимаем ENTER и вводим пароль администратора, ENTER. При вводе пароля не будет отображаться никаких символов, так должно быть. Для вставки пароля из буфера обмена нужно нажать правой клавишей мыши в любом месте окна терминала.

После правильного ввода данных появится приглашение системы.

Добавляем учетную запись администратора

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

Обновляем компоненты системы.

Устанавливаем сервис sudo, который нужен для выполнения команд администратора без логина под учётной записью root.

apt install sudo -y

Устанавливаем утилиту скачивания файлов, которая потребуется в процессе настройки системы.

apt install curl -y

Добавляем нового пользователя с любым именем.

Кроме создания пароля для нового пользователя, система может попросить указать дополнительные сведения о пользователе, их можно оставить пустыми, нажав ENTER.

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

usermod -aG sudo johnwho

Переключаемся на нового пользователя.

На запрос пароля вводим только что созданный пароль для нового администратора johnwho.

Должно появиться приглашение:

Проверяем наличие административных прав

Если система выдала список неких файлов, а не ошибку, то второй администратор был создан успешно.

Далее необходимо зайти на ваш сервер от имени нового администратора.

Закрываем программу удалённого доступа и запускаем её заново, вводим адрес сервера, подключаемся и на этапе логина вводим имя нового администратора и его пароль.

Теперь можно отключить возможность удалённого входа от имени root.

Запускаем редактирование настроек удалённого доступа.

sudo nano /etc/ssh/sshd_config

Система спросит пароль, необходимо ввести пароль нового администратора, под которым было произведено подключение к серверу.

Откроется текстовый файл настроек, листаем стрелками вниз до параметра “PermitRootLogin yes”, который необходимо поменять на:

Выходим нажатием CTRL+x, редактор спросит сохранять ли изменения? Вводим Y. На запрос имени файла нажать ENTER, чтобы сохранить изменения в прежний файл.

Перезапускаем сервис удалённого управления

sudo systemctl restart sshd

Если после этого оборвётся связь, надо снова подключиться от имени нового администратора.

Настраиваем firewall

Устанавливаем удобный брандмауэр UFW.

sudo apt install ufw

Если происходило переподключение, то система запросит пароль нового администратора.

Установим защиту от брутфорса паролей:

sudo apt install -y fail2ban

Запрещаем все входящие подключения.

sudo ufw default deny incoming

Делаем исключение для удалённого управления.

sudo ufw allow ssh

Разрешаем все исходящие подключения.

sudo ufw default allow outgoing

sudo ufw enable

На запрос подтверждения вводим “y”.

Проверяем правильность настройки.

sudo ufw status verbose

Правильный вывод выглядит следующим образом:

Готовим систему для запуска бота

Далее необходимо создать пользователя, от имени которого будет работать бот. Это позволит не бояться за сервер, и в случае необходимости проведения дополнительных настроек разработчиком, можно не опасаясь предоставить пароль этого пользователя. Если разработчик попросит дополнительно предоставить доступ администратора для установки, например, ПО для базы данных, то не забудьте потом посмотреть историю его действий под администратором командой “history”, а потом поменять пароль второго администратора. Доступ к root при наличии доступа к дополнительному администратору адекватный разработчик просить не должен.

Добавляем нового пользователя (имя произвольное)

sudo adduser telegrambot

Закрываем терминал и заходим уже под новым пользователем.

Создаём папку для хранения файлов бота

Переходим в эту папку

Далее необходимо скопировать файл(ы) бота на сервер.

Под Windows это проще всего сделать встроенной утилитой pscp, открываем командную строку cmd. И там вводим команду, в которой нужно скорректировать следующее: путь к файлу бота, имя пользователя для бота, IP-адрес сервера.

Утилита спросит пароль, надо ввести пароль от пользователя telegrambot.

Переходим в окно удалённого управления сервером и проверяем появление файла.

Если бот содержит множество файлов, то для копирования удобнее будет использовать программу WinSCP. Подключение осуществляет по тому же адресу и порту, с тем же пользователем, что и в случае с терминалом.

Установка Python

Переходим в каталог для временных файлов.

Скачиваем скрипт установки Miniconda. Это менеджер пакетов Python, его установщик автоматически установит интерпретатор Python, нужный для запуска самого бота.

curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

Запускаем скрипт скачивания-установки

Пролистываем лицензию клавишей ENTER. На запрос принятия лицензии отвечаем yes. Соглашаемся на путь установки по умолчанию, на предложение инициализировать отвечаем yes.

Закрываем терминал и запускаем снова, подключаемся обратно пользователем telegrambot. Без переподключения команда python будет недоступна.

Проверяем правильность установки Python

Если всё сделано верно, то появится номер версии Python.

Запуск бота

Переходим в каталог с файлами бота.

Запускаем следующим образом, если разработчик не обозначил другой вариант.

Поскольку для функционирования ботов нужны сторонние библиотеки, появится ошибка такого типа:

ModuleNotFoundError: No module named ‘pyrogram’

Это означает, что надо установить недостающие библиотеки.

Если в комплекте с ботом разработчик положил файл requirements.txt, то этот файл содержит список необходимых библиотек и их можно установить одной командой:

pip install -r requirements.txt

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

pip install module_name

, где module_name это название очередного недостающего модуля из ошибки

ModuleNotFoundError: No module named ‘module_name’

Возможен редкий вариант, что имя модуля в программе не соответствует имени для установки, правильную команду подскажет гугл по запросу “pip имя_модуля”.

Если всё получилось, необходимо перезапустить скрипт бота в фоновом режиме. Дело в том, что при запуске командой “python telebot.py”, бот работает как простое приложение, и при закрытии терминала, система его завершит.

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

nohup python telebot.py https://ruvds.com/ru/helpcenter/telegram-bot-dlya-ruvds/» target=»_blank»]ruvds.com[/mask_link]

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