7.4 KiB
7.4 KiB
Деплой модераторского сайта
Система авторизации
Модераторский сайт поддерживает два способа авторизации:
- Telegram WebApp - автоматическая авторизация через Telegram бота
- 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
Процесс регистрации
- Администратор должен создать пользователя в БД с email и ролью moderator/admin
- Пользователь вводит email на странице регистрации
- Система отправляет 6-значный код на email
- Пользователь вводит код, username и пароль
- Аккаунт активируется
Деплой БЕЗ 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 не может подключиться к бэкенду. Проверьте:
-
Бэкенд запущен?
curl http://localhost:3001/health # Должен вернуть: {"status":"ok","service":"moderation",...} -
Порт 3001 свободен?
lsof -i :3001 # Должен показать процесс Node.js -
Логи Nginx:
sudo tail -f /var/log/nginx/moderation-error.log -
Запустите бэкенд:
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":
-
Проверьте дубликаты в
/etc/nginx/sites-enabled/:grep -r "moderation.nkm.guru" /etc/nginx/sites-enabled/ -
Удалите дублирующие настройки из
/etc/nginx/sites-enabled/nakama(если есть) -
Перезагрузите nginx:
sudo nginx -t sudo systemctl reload nginx
Email не отправляется
- Проверьте настройки EMAIL_PROVIDER в .env
- Проверьте логи бэкенда:
- Если через PM2:
pm2 logs moderation-backend - Если напрямую: логи в консоли
- Если через PM2:
- Убедитесь что credentials правильные
Не работает авторизация
- Проверьте JWT_SECRET в .env
- Проверьте что пользователь создан в БД с правильной ролью
- Проверьте логи авторизации