216 lines
5.4 KiB
Markdown
216 lines
5.4 KiB
Markdown
# 🐍 Python Backend для модерации - Готов к использованию!
|
||
|
||
Бэкенд модерации полностью портирован на Python3 с FastAPI.
|
||
|
||
## ✅ Что сделано
|
||
|
||
1. **FastAPI сервер** - современный async Python фреймворк
|
||
2. **Email через SMTP** - нативная поддержка Yandex SMTP (без проблем AWS SDK)
|
||
3. **MongoDB** - async подключение через Motor
|
||
4. **JWT аутентификация** - совместимо с Node.js версией
|
||
5. **WebSocket чат** - Socket.IO для модераторов
|
||
6. **MinIO интеграция** - для хранения файлов
|
||
7. **API совместимость** - фронтенд работает без изменений
|
||
8. **Docker ready** - готовый Dockerfile
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
### Вариант 1: Автоматический (рекомендуется)
|
||
|
||
```bash
|
||
cd moderation/backend-py
|
||
./start.sh
|
||
```
|
||
|
||
### Вариант 2: Ручной
|
||
|
||
```bash
|
||
cd moderation/backend-py
|
||
|
||
# Создать venv
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
|
||
# Установить зависимости
|
||
pip install -r requirements.txt
|
||
|
||
# Запустить
|
||
python main.py
|
||
```
|
||
|
||
## ⚙️ Настройка
|
||
|
||
### 1. Email (ОБЯЗАТЕЛЬНО!)
|
||
|
||
В `nakama/.env` добавьте:
|
||
|
||
```env
|
||
EMAIL_PROVIDER=yandex
|
||
YANDEX_SMTP_HOST=smtp.yandex.ru
|
||
YANDEX_SMTP_PORT=465
|
||
YANDEX_SMTP_SECURE=true
|
||
YANDEX_SMTP_USER=ваш_email@yandex.ru
|
||
YANDEX_SMTP_PASSWORD=ваш_пароль_приложения
|
||
EMAIL_FROM=noreply@nakama.guru
|
||
OWNER_EMAIL=admin@example.com
|
||
```
|
||
|
||
**Получить пароль приложения Yandex:**
|
||
- https://id.yandex.ru/security
|
||
- "Пароли приложений" → Создать для "Почта"
|
||
|
||
### 2. Создать админа
|
||
|
||
```bash
|
||
mongosh nakama
|
||
```
|
||
|
||
```javascript
|
||
// Обновить пользователя
|
||
db.users.updateOne(
|
||
{ username: "ваш_username" },
|
||
{
|
||
$set: {
|
||
email: "ваш_email@yandex.ru",
|
||
emailVerified: true,
|
||
role: "admin"
|
||
}
|
||
}
|
||
);
|
||
```
|
||
|
||
### 3. Запустить
|
||
|
||
```bash
|
||
cd moderation/backend-py
|
||
python main.py
|
||
```
|
||
|
||
Должно появиться:
|
||
|
||
```
|
||
============================================================
|
||
🚀 Запуск сервера модерации (Python)...
|
||
✅ MongoDB подключена (база: nakama)
|
||
📚 Коллекций в базе: 10
|
||
============================================================
|
||
|
||
============================================================
|
||
✅ Сервер модерации запущен (Python)
|
||
🌐 API: http://0.0.0.0:3001/api
|
||
🔌 WebSocket: http://0.0.0.0:3001/socket.io
|
||
📦 MongoDB: 103.80.87.247:27017/nakama
|
||
============================================================
|
||
```
|
||
|
||
## 📝 Проверка
|
||
|
||
1. **Health check:**
|
||
```bash
|
||
curl http://localhost:3001/health
|
||
# {"status":"ok","service":"moderation","version":"2.0.0-python"}
|
||
```
|
||
|
||
2. **Config:**
|
||
```bash
|
||
curl http://localhost:3001/api/moderation-auth/config
|
||
```
|
||
|
||
3. **Отправка кода:**
|
||
Откройте фронтенд модерации, введите email - код должен прийти!
|
||
|
||
## 🔧 Решение проблем
|
||
|
||
### Email не отправляется
|
||
|
||
Проверьте логи:
|
||
```
|
||
[Email] Настройка SMTP: {provider: 'yandex', host: 'smtp.yandex.ru', port: 465, ...}
|
||
```
|
||
|
||
Если `user: 'не указан'` - проверьте `YANDEX_SMTP_USER` в `.env`.
|
||
|
||
### 403 при send-code
|
||
|
||
```javascript
|
||
// Проверьте роль пользователя
|
||
db.users.findOne({ email: "ваш_email@yandex.ru" })
|
||
|
||
// Должно быть role: "admin" или "moderator"
|
||
```
|
||
|
||
### MongoDB не подключается
|
||
|
||
```bash
|
||
# Проверьте доступность
|
||
mongosh "mongodb://103.80.87.247:27017/nakama"
|
||
```
|
||
|
||
## 🐳 Docker
|
||
|
||
```bash
|
||
cd moderation/backend-py
|
||
docker build -t nakama-moderation-py .
|
||
docker run -d -p 3001:3001 --env-file ../../.env nakama-moderation-py
|
||
```
|
||
|
||
## 📦 Production
|
||
|
||
### PM2
|
||
|
||
```bash
|
||
pm2 start "uvicorn main:app --host 0.0.0.0 --port 3001 --workers 2" \
|
||
--name moderation-backend-py \
|
||
--cwd $(pwd) \
|
||
--interpreter python3
|
||
|
||
pm2 save
|
||
```
|
||
|
||
### Systemd
|
||
|
||
Создайте `/etc/systemd/system/nakama-moderation-py.service`:
|
||
|
||
```ini
|
||
[Unit]
|
||
Description=Nakama Moderation Backend (Python)
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=nakama
|
||
WorkingDirectory=/path/to/nakama/moderation/backend-py
|
||
Environment="PATH=/path/to/nakama/moderation/backend-py/venv/bin"
|
||
ExecStart=/path/to/nakama/moderation/backend-py/venv/bin/uvicorn main:app --host 0.0.0.0 --port 3001 --workers 2
|
||
Restart=always
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
```bash
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable nakama-moderation-py
|
||
sudo systemctl start nakama-moderation-py
|
||
```
|
||
|
||
## 📚 Документация
|
||
|
||
- `README.md` - Полное описание
|
||
- `QUICKSTART.md` - Быстрый старт
|
||
- `INSTALL.md` - Подробная установка
|
||
- `MIGRATION.md` - Миграция с Node.js
|
||
|
||
## ✨ Преимущества
|
||
|
||
- ✅ Email работает из коробки
|
||
- ✅ Меньше зависимостей
|
||
- ✅ Лучшая типизация
|
||
- ✅ Async/await
|
||
- ✅ Совместимость с Node.js версией
|
||
- ✅ Та же MongoDB
|
||
- ✅ API полностью совместимо
|
||
|
||
Фронтенд работает без изменений!
|
||
|