Проект представляет собой веб-сервис на FastAPI для обработки платежных уведомлений и интеграции с Telegram ботом. Сервис принимает webhook-уведомления о платежах и отправляет информацию в Telegram чат.
- Настройки хранятся в
.envфайле:TELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID
- Установка зависимостей:
python -m venv venvпотомpip install -r requirements.txt - Настройка переменных окружения в
.env - Запуск сервера:
python fastapi_project.py - Сервер запускается на
http://0.0.0.0:8000
- Обновляем пакеты
sudo apt update
- Устанавливаем NGINX
sudo apt install nginx
- Создаем файл конфигурации:
sudo nano /etc/nginx/sites-available/ВАШ_ДОМЕН.ru
- Наполняем файл конфигурации:
server {
listen 80;
server_name ВАШ_ДОМЕН.ru www.ВАШ_ДОМЕН.ru;
location / {
proxy_pass http://127.0.0.1:8000; # Порт, на котором работает FastAPI
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
- символическая ссылка для активации конфигурации:
sudo ln -s /etc/nginx/sites-available/ВАШ_ДОМЕН.ru /etc/nginx/sites-enabled/
- Тестируем nginx
sudo nginx -t
- Перезапускаем Nginx
sudo systemctl restart nginx
- Устанавливаем SSL
sudo apt install certbot python3-certbot-nginx
- Настраиваем SSL
sudo certbot --nginx -d ВАШ_ДОМЕН.ru -d www.ВАШ_ДОМЕН.ru
- Создаем крон задачу
sudo crontab -e
- Конфигурируем крон
0 0 * * * certbot renew --quiet && systemctl reload nginx
- Проверяем статус крон
sudo systemctl status certbot.timer
- Создаем файл конфигов для демона
sudo nano /etc/systemd/system/НАЗВАНИЕ_СЕРВИСА_ЛЮБОЕ.service
- Наполняем файл для демона
[Unit]
Description=My Python Script Service
[Service]
Type=simple
WorkingDirectory=/root/ВАША_ПАПКА
ExecStart=/bin/bash -c 'source /root/ВАША_ПАПКА/venv/bin/activate && /root/ВАША_ПАПКА/venv/bin/python /root/ВАША_ПАПКА/название_ФАЙЛА.py'
Environment="PATH=/root/ВАША_ПАПКА/venv/bin:$PATH"
Restart=on-failure
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
- Перезапускаем службу демона
sudo systemctl daemon-reload
- Запускаем службу демона
sudo systemctl start НАЗВАНИЕ_СЕРВИСА_СМ_ПУНКТ_13.service
- Проверяем статус службы
sudo systemctl status НАЗВАНИЕ_СЕРВИСА_СМ_ПУНКТ_13.service
-
FastAPI Backend
- Основной веб-сервер
- Обработка webhook-запросов
- Валидация входящих данных
- Интеграция с Telegram API
-
Telegram Bot
- Отправка уведомлений о платежах
- Эхо-бот функциональность
- Webhook для приема сообщений
class PaymentEvent:
eventType: str # Тип события платежа
product: Product # Информация о продукте
buyer: Buyer # Информация о покупателе
contractId: str # ID контракта
amount: float # Сумма платежа
currency: str # Валюта
timestamp: str # Временная метка
status: str # Статус платежа
errorMessage: str # Сообщение об ошибке
chat_id: str # ID чата Telegram (опционально)class Product:
id: str # ID продукта
title: str # Название продуктаclass Buyer:
email: str # Email покупателя- Назначение: Прием уведомлений о платежах
- Входные данные: PaymentEvent
- Действия:
- Валидация входящих данных
- Форматирование сообщения для Telegram
- Отправка уведомления в Telegram
- Ответ: JSON с статусом операции
- Назначение: Прием сообщений от Telegram
- Входные данные: Telegram Update объект
- Действия:
- Обработка входящих сообщений
- Отправка эхо-ответа
- Ответ: JSON с подтверждением
- Использование переменных окружения для хранения секретов
- Валидация входящих данных через Pydantic
- Обработка ошибок и исключений
- FastAPI
- Uvicorn
- HTTPX
- Python-dotenv
- Pydantic
- Асинхронная обработка запросов
- Возможность горизонтального масштабирования
- Независимость от состояния
- fastapi - для вашего FastAPI приложения
- uvicorn - ASGI сервер для запуска FastAPI
- httpx - для асинхронных HTTP запросов (используется для отправки сообщений в Telegram)
- python-dotenv - для работы с .env файлами
- pydantic - для валидации данных (используется в FastAPI)
Полный практический курс по созданию и деплою Python-приложения с использованием FastAPI, Telegram-бота, вебхуков и развёртыванием на VPS с NGINX и SSL.
Этот репозиторий содержит структуру и материалы курса по созданию production-ready приложения с нуля — от локального сервера до полноценного развертывания на VPS.
FastAPI tutorial, Telegram bot webhook, Python deployment guide, VPS deployment, NGINX configuration, SSL Certbot setup, Python backend course, production deployment FastAPI, CRON setup Linux, systemd service configuration, ngrok tutorial, domain setup VPS
Вы научитесь:
- Разрабатывать backend на FastAPI
- Подключать и настраивать Telegram-бота
- Работать с Webhook
- Тестировать API
- Поднимать локальный сервер через Ngrok
- Покупать домен и VPS
- Настраивать NGINX
- Подключать SSL через Certbot
- Разворачивать приложение на VPS
- Настраивать CRON и systemd daemon
- Запускать production-ready сервер
- Поднимаем локальный FastAPI сервер
- Пробрасываем HTTPS туннель через Ngrok
- Подключаем webhook к Telegram
- HTTP методы (GET, POST)
- JSON запросы и ответы
- Обработка ошибок
- Тестирование эндпоинтов
- Архитектура FastAPI проекта
- Роутеры
- Pydantic модели
- Структура production-проекта
- Разбор кода
- Обработка запросов
- Middleware
- Асинхронная логика
- Создание бота
- Настройка webhook
- Обработка сообщений
- Интеграция с FastAPI
- uvicorn
- gunicorn
- Параметры запуска
- Debug vs Production
- curl
- Postman
- Проверка webhook
- Логирование
- Полный разбор webhook-обработчика
- Валидация данных
- Ответы Telegram API
- Выбор хостинга
- Покупка домена
- Настройка DNS
- Подключение домена к серверу
- Reverse proxy
- Проброс портов
- Конфигурация server block
- Работа с upstream
- Установка Certbot
- Получение SSL сертификата
- Автообновление сертификатов
- Клонирование репозитория
- Создание виртуального окружения
- Установка зависимостей
- Настройка переменных окружения
- Проверка HTTPS
- Проверка webhook
- Проверка API
- Планировщик задач
- Автоматические перезапуски
- Очистка логов
- Автоматизация процессов
- Создание сервиса
- Автозапуск при старте сервера
- Перезапуск при падении
- Контроль через systemctl
После прохождения курса вы:
- Понимаете полный цикл разработки backend
- Умеете деплоить Python-приложения на VPS
- Работаете с NGINX и SSL
- Настраиваете production-среду
- Запускаете Telegram-ботов через webhook
- Автоматизируете сервер через CRON и systemd
- Python 3.10+
- FastAPI
- Uvicorn / Gunicorn
- NGINX
- Certbot (Let’s Encrypt)
- Linux VPS
- Telegram Bot API
- Ngrok
- Python разработчиков
- Backend разработчиков
- Data Science специалистов, которые хотят деплоить модели
- Начинающих DevOps
- Всех, кто хочет научиться production deployment