Запуск в качестве приложения 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.