Подписка на блог

Вы можете подписаться на на мой блог в соцсетях

А это мои страницы в соцсетях

Facebook, ВКонтакте, Telegram,

Запускаем свой телеграм-бот с ChatGPT на виртуальном сервере

Мы будем использовать вот этот движок телеграм-бота https://github.com/nalgeon/pokitoki .

Наша задача создать или обновить бота типа https://t.me/polyakov_gpt_bot

В статье я не буду касаться логики регистрации бота и получения ключа open.ai. Это легко гуглится и останавливаться на этом нет никакого смысла. Бота можно не гуглить, а сразу пойти сюда https://t.me/BotFather , токен open.ai получается интуитивно https://platform.openai.com

В материале есть упоминания об ssh ключах. Чтобы создать ssh ключ надо почитать вот эту инструкцию.

Подготовим файлы для работы если ранее у нас не было инстансов

  1. Идём в гитхаб https://github.com/nalgeon/pokitoki, там Code >> Download zip
  1. Распаковываем архив. Заполняем файл config.example.yml и сохраняем его себе как config.yml

Подготовим файлы для работы если ранее был настроен инстанс и мы хотим переехать на другой

Нам надо сохранить файл настроек, который используется сейчас на виртуальной машине к себе на диск.
Это делается так:

  1. Подключимся к нашему удаленному серверу и скопируем файл настроек к себе на диск:

MacOS:



scp -i YOUR_PRIVATE_SSH_KEY USERNAME@xxx.xxx.xx.xxx:pokitoki/config.yml /Users/username/Downloads/config.yml


Windows:



scp -i C:\path\to\your\private\key USERNAME@xxx.xxx.xx.xxx:/path/to/remote/config.yml C:\Users\username\Downloads\config.yml


команда в одну строку

YOUR_PRIVATE_SSH_KEY — путь к приватному ключу SSH из текущей директории

USERNAME — ваш логин в виртуальной машине

USERNAME — ваш логин в виртуальной машине

xxx.xxx.xx.xxx — IP-адрес виртуальной машины

xxx.xxx.xx.xxx — IP-адрес виртуальной машины

/Users/username/Downloads/config.yml — путь в папку для сохранения настроек (в примере это загрузки)

Обновляем версию бота, если хотим остаться на том же сервере

Если мы хотим остаться на том же сервере, просто обновить версию pokitoki:

  1. Остановим докер

Авторизуемся на сервере через ssh.
Переходим в директорию проекта



cd pokitoki/


  1. Останавливаем текущий докер инстанс


sudo docker compose stop


  1. Скачиваем обновление с гитхаб


git pull


  1. Запускаем докер


sudo docker compose up --build --detach


Подготовим инстанс в Яндекс.Облаке

Теоретически для данной задачи можно использовать любой другой VDS сервис, например https://vdsina.ru.
Я использую Яндекс.Облако, потому что оно не является ощутимо более дорогим, имеет предсказуемую поддержку и уже оплачивается по договору. Но данная инструкция подойдёт для любого другого сервиса за исключением процесса конфигурации виртуальной машины — этот процесс у всех будет свой.

Если у вас уже был инстанс, и вы просто обновляете — всё равно создаем новый инстанс (в конце мы просто отключаем старый, и запускаем новый)

  1. Идём в консоль Яндекс облака https://console.cloud.yandex.ru/
  2. Выбираем Compute Cloud >> Виртуальные машины
  3. Нажимаем на кнопку Создать ВМ вверху страницы справа
  4. Настраиваем ВМ на Ubuntu:
  • Intel Cascade Lake
  • Доля vCPU 5%
  • RAM 1Gb
  • Размер SSD/HDD 8 GB
  • обязательно надо создать статический IP-адрес, без него не получится подключить удаленно.
  1. Внизу указываем имя пользвателя и публичный ssh-ключ, который будем использовать для подключения.

Для самопроверки — стоимость должна быть в пределах 800 руб.

Устанавливаем на удаленную машину телеграм-бота

  1. Авторизуемся на виртуальной машине

MacOS:



ssh -i path/to/private/key -l USERNAME xxx.xxx.xx.xxx


или



ssh -i path/to/private/key USERNAME@xxx.xxx.xx.xxx


WIndows:



ssh -i C:\path\to\private\key USERNAME@xxx.xxx.xx.xxx


Со всем соглашаемся и вводим пароль

  1. Клонируем файлы телеграм бота в директорию удалённого сервера


git clone https://github.com/nalgeon/pokitoki.git


  1. Переносим файл с настройкам, который мы делали в начале

MacOS:



scp -i path/to/private/key /path/to/file/config.yml USERNAME@xxx.xxx.xx.xxx:pokitoki/config.yml


WIndows:



scp -i C:\path\to\private\key C:\Users\YOUR_USERNAME\PathToConfig\config.yml USERNAME@xxx.xxx.xx.xxx:pokitoki/config.yml


Устанавливаем на удаленную машину Docker

Инструкция тут https://docs.docker.com/engine/install/ubuntu/

  1. Сносим старый инстанс (для безопасности)


for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done


  1. Обновляем apt


sudo apt-get update


  1. Сертификаты


sudo apt-get install ca-certificates curl gnupg


  1. Остальные ключи (3 команды)


sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg


  1. Что-то на программистском


echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


  1. Почти всё


sudo apt-get update


  1. Ставим докер


sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


Запуск бота



sudo docker compose up --build --detach


Если понадобится проверить свободное место



df -h


Подписаться на блог
Поделиться
Отправить
Запинить
 450   1 год   chatgpt   manual   инструкции