nakama/moderation/DEPLOY.md

259 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Деплой модераторского сайта
## Система авторизации
Модераторский сайт поддерживает два способа авторизации:
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. Проверьте логи авторизации