Запуск в качестве приложения Flask
Для запуска proxybot в качестве приложения Flask вам понадобится действительный (может быть самоподписным) SSL-сертификат для HTTPS.
В приведенном ниже примере мы создаем самоподписный сертификат, действительный 10 лет, который позже используем в методе setWebhook
.
HOST=proxybot.example.com
openssl req -newkey rsa:2048 -sha256 -nodes -keyout ssl/privkey.pem \
-x509 -days 3650 -out ssl/cert.pem -subj "/CN=${HOST}"
Переменная HOST
должна содержать реальный IP-адрес или полное доменное имя, используемое для доступа к приложению из сети Telegram.
Если SSL-сертификат и ключ отсутствуют в папке ./ssl
, приложение все-равно запустится и будет принимать HTTP запросы на порту 8080. Тогда нужно организовать приём HTTPS запросов из сети Телеграм другим способом, например Nginx-сервером, и проксировать их в приложение.
Запуск с помощью Docker
Эта команда запустит предварительно собранный контейнер docker proxybot.
TELEGRAM_ID=1234123123
DB_URI="mongodb+srv://***:**********@cluster0._______.mongodb.net/"
docker run --rm -p 8080:8080 -p 8443:8443 -v ./ssl:/app/ssl \
-e TELEGRAM_ID=$TELEGRAM_ID -e DB_URI=$DB_URI -e VERBOSE=yes \
litnialex/proxybot
Запуск с помощью Docker Compose
Вы можете выбрать локальное создание контейнера proxybot
,
а также запустить стандартный контейнер mongodb
и установить
DB_URI=mongodb://mongodb
для proxybot
.
Проверьте docker-compose.yml
в корневой папке репозитория для получения дополнительной информации.
Укажите ваши переменные в файле .env
.
Проверьте .env.example
для получения списка всех принимаемых переменных и их значений по умолчанию.
Запустите с помощью команды: docker compose up
Регистрация вебхука
Метод API Telegram бота setWebhook должен быть вызван для начала получения сообщений от Telegram.
TOKEN=123456789:NeotobrAfMymceuwackTeunLiudsudjocoi
curl -F "url=${HOST}:8443/${TOKEN}" -F certificate=@ssl/cert.pem \
https://api.telegram.org/bot${TOKEN}/setWebhook
Можно дополнительно задать переменную API_SECRET и укзать её в webhook.
Для этого команде curl
добавляется опция -F secret_token=${API_SECRET}
.
Тогда неавторизованные запросы будут игнорироваться.
Возможна обработка запросов на разные proxybot'ы одним и тем же приложением.
Для этого просто повторяйте регистрацию webhook для каждого из бота, соответственно изменяя значение переменной TOKEN
.