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 полностью совместимо
|
|||
|
|
|
|||
|
|
Фронтенд работает без изменений!
|
|||
|
|
|