# Деплой модераторского сайта ## Система авторизации Модераторский сайт поддерживает два способа авторизации: 1. **Telegram WebApp** - автоматическая авторизация через Telegram бота 2. **Email/Пароль** - регистрация через код на email и вход по паролю ## Настройка email сервиса ### AWS SES ```bash 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 ```bash EMAIL_PROVIDER=yandex YANDEX_SMTP_USER=your_email@yandex.ru YANDEX_SMTP_PASSWORD=your_app_password EMAIL_FROM=noreply@nakama.guru ``` ### SMTP (любой провайдер) ```bash 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` в корне проекта: ```bash # Модерация 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. Запуск бэкенда модерации ```bash cd /Users/glpshchn/Desktop/nakama/moderation/backend NODE_ENV=production PORT=3001 MODERATION_PORT=3001 node server.js ``` Или с PM2 (рекомендуется): ```bash 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. Проверка работы бэкенда ```bash # Проверка бэкенда curl http://localhost:3001/health # Проверка через nginx curl https://moderation.nkm.guru/api/health ``` ### 4. Настройка Nginx ```bash # Скопировать конфигурацию 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`: ```bash # Модерация 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. Сборка и запуск ```bash # Сборка всех образов docker-compose build moderation-backend moderation-frontend # Запуск сервисов docker-compose up -d moderation-backend moderation-frontend nginx-moderation # Проверка статуса docker-compose ps ``` ### 3. Получение SSL сертификата ```bash # Получить сертификат (первый раз) sudo certbot certonly --standalone -d moderation.nkm.guru # Автоматическое обновление sudo certbot renew --dry-run ``` ### 4. Проверка работы ```bash # Проверка бэкенда curl http://localhost:3001/health # Проверка через nginx curl https://moderation.nkm.guru/api/health # Логи docker-compose logs -f moderation-backend ``` ## Обновление ```bash # Обновить код 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. **Бэкенд запущен?** ```bash curl http://localhost:3001/health # Должен вернуть: {"status":"ok","service":"moderation",...} ``` 2. **Порт 3001 свободен?** ```bash lsof -i :3001 # Должен показать процесс Node.js ``` 3. **Логи Nginx:** ```bash sudo tail -f /var/log/nginx/moderation-error.log ``` 4. **Запустите бэкенд:** ```bash 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/`: ```bash grep -r "moderation.nkm.guru" /etc/nginx/sites-enabled/ ``` 2. Удалите дублирующие настройки из `/etc/nginx/sites-enabled/nakama` (если есть) 3. Перезагрузите nginx: ```bash 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. Проверьте логи авторизации