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