nakama/moderation/PYTHON_BACKEND.md

5.4 KiB
Raw Blame History

🐍 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: Автоматический (рекомендуется)

cd moderation/backend-py
./start.sh

Вариант 2: Ручной

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 добавьте:

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:

2. Создать админа

mongosh nakama
// Обновить пользователя
db.users.updateOne(
  { username: аш_username" },
  { 
    $set: { 
      email: аш_email@yandex.ru",
      emailVerified: true,
      role: "admin"
    }
  }
);

3. Запустить

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:
curl http://localhost:3001/health
# {"status":"ok","service":"moderation","version":"2.0.0-python"}
  1. Config:
curl http://localhost:3001/api/moderation-auth/config
  1. Отправка кода: Откройте фронтенд модерации, введите email - код должен прийти!

🔧 Решение проблем

Email не отправляется

Проверьте логи:

[Email] Настройка SMTP: {provider: 'yandex', host: 'smtp.yandex.ru', port: 465, ...}

Если user: 'не указан' - проверьте YANDEX_SMTP_USER в .env.

403 при send-code

// Проверьте роль пользователя
db.users.findOne({ email: аш_email@yandex.ru" })

// Должно быть role: "admin" или "moderator"

MongoDB не подключается

# Проверьте доступность
mongosh "mongodb://103.80.87.247:27017/nakama"

🐳 Docker

cd moderation/backend-py
docker build -t nakama-moderation-py .
docker run -d -p 3001:3001 --env-file ../../.env nakama-moderation-py

📦 Production

PM2

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:

[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
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 полностью совместимо

Фронтенд работает без изменений!