nakama/moderation/DEPLOY.md

7.4 KiB
Raw Permalink Blame History

Деплой модераторского сайта

Система авторизации

Модераторский сайт поддерживает два способа авторизации:

  1. Telegram WebApp - автоматическая авторизация через Telegram бота
  2. Email/Пароль - регистрация через код на email и вход по паролю

Настройка email сервиса

AWS SES

EMAIL_PROVIDER=aws
AWS_SES_ACCESS_KEY_ID=your_access_key
AWS_SES_SECRET_ACCESS_KEY=your_secret_key
AWS_SES_REGION=us-east-1
EMAIL_FROM=noreply@nakama.guru

Yandex Cloud

EMAIL_PROVIDER=yandex
YANDEX_SMTP_USER=your_email@yandex.ru
YANDEX_SMTP_PASSWORD=your_app_password
EMAIL_FROM=noreply@nakama.guru

SMTP (любой провайдер)

EMAIL_PROVIDER=smtp
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your_email@example.com
SMTP_PASSWORD=your_password
SMTP_SECURE=false
EMAIL_FROM=noreply@nakama.guru

Процесс регистрации

  1. Администратор должен создать пользователя в БД с email и ролью moderator/admin
  2. Пользователь вводит email на странице регистрации
  3. Система отправляет 6-значный код на email
  4. Пользователь вводит код, username и пароль
  5. Аккаунт активируется

Деплой БЕЗ Docker (локально)

1. Настройка переменных окружения

Добавьте в .env в корне проекта:

# Модерация
MODERATION_PORT=3001
MODERATION_CORS_ORIGIN=https://moderation.nkm.guru
VITE_MODERATION_API_URL=https://moderation.nkm.guru/api  # ВАЖНО: обязательно HTTPS!

# Email для кодов подтверждения админа
OWNER_EMAIL=aaem9848@gmail.com

# Email настройки (выберите один вариант выше)
EMAIL_PROVIDER=aws
# ... остальные настройки email

# MongoDB (та же база что и основной бэкенд)
MONGODB_URI=mongodb://103.80.87.247:27017/nakama

# JWT (те же ключи что и основной бэкенд)
JWT_SECRET=your_jwt_secret
JWT_ACCESS_SECRET=your_access_secret
JWT_REFRESH_SECRET=your_refresh_secret

2. Запуск бэкенда модерации

cd /Users/glpshchn/Desktop/nakama/moderation/backend
NODE_ENV=production PORT=3001 MODERATION_PORT=3001 node server.js

Или с PM2 (рекомендуется):

cd /Users/glpshchn/Desktop/nakama
pm2 start moderation/backend/server.js --name moderation-backend --env production -- \
  NODE_ENV=production PORT=3001 MODERATION_PORT=3001
pm2 save

3. Проверка работы бэкенда

# Проверка бэкенда
curl http://localhost:3001/health

# Проверка через nginx
curl https://moderation.nkm.guru/api/health

4. Настройка Nginx

# Скопировать конфигурацию
sudo cp nginx-moderation-production.conf /etc/nginx/sites-available/moderation.nkm.guru

# Активировать конфигурацию
sudo ln -sf /etc/nginx/sites-available/moderation.nkm.guru /etc/nginx/sites-enabled/

# Проверить конфигурацию
sudo nginx -t

# Перезагрузить nginx
sudo systemctl reload nginx

⚠️ ВАЖНО: Убедитесь, что в /etc/nginx/sites-enabled/nakama нет дублирующих настроек для moderation.nkm.guru. Если есть - удалите их, иначе будет конфликт.

Деплой с Docker

1. Настройка переменных окружения

Добавьте в .env:

# Модерация
MODERATION_PORT=3001
MODERATION_CORS_ORIGIN=https://moderation.nkm.guru
VITE_MODERATION_API_URL=https://moderation.nkm.guru/api  # ВАЖНО: обязательно HTTPS!

# Email для кодов подтверждения админа
OWNER_EMAIL=aaem9848@gmail.com

# Email настройки (выберите один вариант выше)
EMAIL_PROVIDER=aws
# ... остальные настройки email

2. Сборка и запуск

# Сборка всех образов
docker-compose build moderation-backend moderation-frontend

# Запуск сервисов
docker-compose up -d moderation-backend moderation-frontend nginx-moderation

# Проверка статуса
docker-compose ps

3. Получение SSL сертификата

# Получить сертификат (первый раз)
sudo certbot certonly --standalone -d moderation.nkm.guru

# Автоматическое обновление
sudo certbot renew --dry-run

4. Проверка работы

# Проверка бэкенда
curl http://localhost:3001/health

# Проверка через nginx
curl https://moderation.nkm.guru/api/health

# Логи
docker-compose logs -f moderation-backend

Обновление

# Обновить код
git pull

# Пересобрать и перезапустить
docker-compose build moderation-backend moderation-frontend
docker-compose up -d moderation-backend moderation-frontend

# Перезагрузить nginx
docker-compose restart nginx-moderation

Структура

  • moderation-backend - API сервер модерации (порт 3001)
  • moderation-frontend - Frontend приложение (nginx)
  • nginx-moderation - Reverse proxy с SSL

Troubleshooting

502 Bad Gateway

Это означает, что Nginx не может подключиться к бэкенду. Проверьте:

  1. Бэкенд запущен?

    curl http://localhost:3001/health
    # Должен вернуть: {"status":"ok","service":"moderation",...}
    
  2. Порт 3001 свободен?

    lsof -i :3001
    # Должен показать процесс Node.js
    
  3. Логи Nginx:

    sudo tail -f /var/log/nginx/moderation-error.log
    
  4. Запустите бэкенд:

    cd /Users/glpshchn/Desktop/nakama/moderation/backend
    NODE_ENV=production PORT=3001 MODERATION_PORT=3001 node server.js
    

Конфликт конфигурации Nginx

Если видите ошибки типа "conflicting server name" или "protocol options redefined":

  1. Проверьте дубликаты в /etc/nginx/sites-enabled/:

    grep -r "moderation.nkm.guru" /etc/nginx/sites-enabled/
    
  2. Удалите дублирующие настройки из /etc/nginx/sites-enabled/nakama (если есть)

  3. Перезагрузите nginx:

    sudo nginx -t
    sudo systemctl reload nginx
    

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

  1. Проверьте настройки EMAIL_PROVIDER в .env
  2. Проверьте логи бэкенда:
    • Если через PM2: pm2 logs moderation-backend
    • Если напрямую: логи в консоли
  3. Убедитесь что credentials правильные

Не работает авторизация

  1. Проверьте JWT_SECRET в .env
  2. Проверьте что пользователь создан в БД с правильной ролью
  3. Проверьте логи авторизации