141 lines
3.8 KiB
Markdown
141 lines
3.8 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
|
|||
|
|
|
|||
|
|
# 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
|
|||
|
|
|
|||
|
|
### Email не отправляется
|
|||
|
|
|
|||
|
|
1. Проверьте настройки EMAIL_PROVIDER в .env
|
|||
|
|
2. Проверьте логи: `docker-compose logs moderation-backend`
|
|||
|
|
3. Убедитесь что credentials правильные
|
|||
|
|
|
|||
|
|
### Не работает авторизация
|
|||
|
|
|
|||
|
|
1. Проверьте JWT_SECRET в .env
|
|||
|
|
2. Проверьте что пользователь создан в БД с правильной ролью
|
|||
|
|
3. Проверьте логи авторизации
|
|||
|
|
|