Шаг 1. Обеспечение SSL
Для того чтобы использовать веб-хуки, Telegram требует безопасного соединения (HTTPS), которое подтверждается SSL/TLS-сертификатом. Вы можете использовать бесплатные сертификаты Let’s Encrypt с помощью certbot или других инструментов.
Шаг 2. Конфигурация NGINX
Создайте конфигурационный файл для вашего сайта в директории `/etc/nginx/sites-available/` и создайте симлинк этого файла в `/etc/nginx/sites-enabled/`, чтобы активировать его. Здесь пример конфигурационного файла:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
include proxy_params;
proxy_pass http://django:8000;
}
location /tg_webhook/ {
include proxy_params;
proxy_pass http://telegram_bot:port; # Укажите порт, на котором работает ваш Python-бот
}
}
Здесь `/tg_webhook/` — это URL-адрес, по которому ваш бот будет принимать веб-хуки от Telegram. Вы можете задать его в соответствии с вашими настройками. Важно, чтобы `proxy_pass` указывал на ваш бот, запущенный в контейнере или на хосте.
Шаг 3. Настройка Django
Убедитесь, что ваш Django-проект настроен на принятие подключений от NGINX, для чего в настройках Django (`settings.py`) должно быть указано:
ALLOWED_HOSTS = ['yourdomain.com', 'www.yourdomain.com']
Шаг 4. Компоновка Docker и Docker Compose
В `docker-compose.yml` убедитесь, что у сервисов установлены верные зависимости (`depends_on`), чтобы контейнеры запускались в правильном порядке, а также правильно сконфигурированы сетевые настройки, так чтобы NGINX мог перенаправлять запросы к соответствующему контейнеру.
Шаг 5. Перезапуск NGINX
После внесения всех настроек вам нужно перезапустить NGINX для того, чтобы изменения вступили в силу. Это можно сделать командой:
sudo systemctl restart nginx
Шаг 6. Настройка веб-хуков Telegram
Настройте веб-хуки Telegram с помощью запроса к Bot API или средствами библиотеки, которую вы используете для бота, указав URL, соответствующий `/tg_webhook/` в вашем NGINX.
После успешной конфигурации NGINX ваш Django-проект будет обрабатывать обычные пользовательские запросы, а Telegram-бот — входящие веб-хуки от Telegram через безопасное соединение, установленное на вашем сервере.