439 lines
17 KiB
Markdown
439 lines
17 KiB
Markdown
|
|
# 📋 Сводка изменений Nakama
|
|||
|
|
|
|||
|
|
## ✅ Выполненные задачи
|
|||
|
|
|
|||
|
|
### 1. ✨ Замена NakamaHost на Nakama
|
|||
|
|
**Статус:** ✅ Завершено
|
|||
|
|
|
|||
|
|
**Изменения:**
|
|||
|
|
- `backend/server.js` - изменено сообщение API
|
|||
|
|
- `backend/bot.js` - обновлены подписи к медиа (3 места)
|
|||
|
|
- `frontend/index.html` - обновлен заголовок страницы
|
|||
|
|
- `frontend/src/pages/Feed.jsx` - изменен заголовок приложения
|
|||
|
|
- `frontend/src/pages/Profile.jsx` - обновлен текст о поддержке проекта
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2. 🔧 Улучшение меню репортов в системе модерации
|
|||
|
|
**Статус:** ✅ Завершено
|
|||
|
|
|
|||
|
|
**Изменения в `moderation/frontend/src/App.jsx`:**
|
|||
|
|
- Добавлено улучшенное отображение причины жалобы
|
|||
|
|
- Добавлен полный просмотр информации о посте (автор, содержание, медиа)
|
|||
|
|
- Добавлены превью изображений (до 3 штук)
|
|||
|
|
- Добавлены действия для работы с постом прямо из репорта:
|
|||
|
|
- Удалить пост
|
|||
|
|
- Забанить автора
|
|||
|
|
- Решено
|
|||
|
|
- Отклонить репорт
|
|||
|
|
- Добавлено сообщение "Нет активных репортов" когда репортов нет
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3. ✏️ Возможность редактирования постов в системе модерации
|
|||
|
|
**Статус:** ✅ Завершено
|
|||
|
|
|
|||
|
|
**Изменения в `backend/models/Post.js`:**
|
|||
|
|
- Добавлено поле `publishedToChannel` (Boolean) - пост опубликован в канал
|
|||
|
|
- Добавлено поле `channelMessageId` (Number) - ID сообщения в Telegram канале
|
|||
|
|
- Добавлено поле `adminNumber` (Number) - номер админа, который опубликовал
|
|||
|
|
- Добавлено поле `editedAt` (Date) - время последнего редактирования
|
|||
|
|
|
|||
|
|
**Изменения в `backend/routes/modApp.js`:**
|
|||
|
|
- Обновлен `PUT /posts/:id` с проверкой прав:
|
|||
|
|
- Владелец может редактировать любые посты
|
|||
|
|
- Админы могут редактировать только свои посты из канала (по adminNumber)
|
|||
|
|
- Добавлено автоматическое обновление поста в Telegram канале при редактировании
|
|||
|
|
- Обновлен `GET /posts` для возврата информации о публикации в канале
|
|||
|
|
- Обновлен `POST /channel/publish` для создания записи в БД с информацией о канале
|
|||
|
|
|
|||
|
|
**Изменения в `backend/bots/serverMonitor.js`:**
|
|||
|
|
- `sendChannelMediaGroup` теперь возвращает messageId
|
|||
|
|
- Добавлена функция `updateChannelMessage` для обновления подписи к сообщению в канале
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 4. 🖼️ Исправление загрузки медиа в систему модерации
|
|||
|
|
**Статус:** ✅ Завершено
|
|||
|
|
|
|||
|
|
**Изменения в `moderation/frontend/src/App.jsx`:**
|
|||
|
|
- Добавлено преобразование относительных путей к изображениям в абсолютные URLs
|
|||
|
|
- Добавлена обработка ошибок загрузки изображений с fallback
|
|||
|
|
- Исправлено отображение медиа в постах
|
|||
|
|
- Исправлено отображение медиа в репортах
|
|||
|
|
- Добавлены console.error для отладки проблем с загрузкой
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 5. 💬 Исправление админского чата
|
|||
|
|
**Статус:** ✅ Завершено
|
|||
|
|
|
|||
|
|
**Изменения в `moderation/frontend/src/App.jsx`:**
|
|||
|
|
- Добавлен расширенный логгинг для отладки:
|
|||
|
|
- Логирование подключения WebSocket
|
|||
|
|
- Логирование авторизации
|
|||
|
|
- Логирование получения/отправки сообщений
|
|||
|
|
- Логирование ошибок подключения
|
|||
|
|
- Увеличен timeout подключения до 10 секунд
|
|||
|
|
- Добавлен обработчик `connect_error` для логирования ошибок
|
|||
|
|
- Исправлена задержка прокрутки к последнему сообщению (setTimeout 100ms)
|
|||
|
|
- Добавлено предупреждение при попытке отправить сообщение без подключения
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 6. 🗄️ Настройка подключения к БД на удаленном сервере
|
|||
|
|
**Статус:** ✅ Завершено (требуется ручная настройка)
|
|||
|
|
|
|||
|
|
**Создан файл `docker-compose.yml`:**
|
|||
|
|
- MongoDB URI настроен на `mongodb://103.80.87.247:27017/nakama`
|
|||
|
|
- Добавлена переменная окружения `MONGODB_URI`
|
|||
|
|
- Настроено монтирование директорий для данных БД
|
|||
|
|
|
|||
|
|
**Создан файл `setup-remote-storage.sh`:**
|
|||
|
|
- Скрипт для автоматической настройки SSHFS
|
|||
|
|
- Монтирование удаленных директорий:
|
|||
|
|
- `/var/nakama/db` → `/mnt/nakama-db`
|
|||
|
|
- `/var/nakama/media` → `/mnt/nakama-media`
|
|||
|
|
- `/var/nakama/backups` → `/mnt/nakama-backups`
|
|||
|
|
- Опция автомонтирования через `/etc/fstab`
|
|||
|
|
|
|||
|
|
**Создана документация `DEPLOYMENT_GUIDE.md`:**
|
|||
|
|
- Подробная инструкция по установке MongoDB на удаленном сервере
|
|||
|
|
- Настройка аутентификации MongoDB
|
|||
|
|
- Настройка удаленного доступа
|
|||
|
|
- Настройка firewall
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 7. 💾 Настройка автоматических бекапов БД
|
|||
|
|
**Статус:** ✅ Завершено (требуется ручная настройка cron)
|
|||
|
|
|
|||
|
|
**Создан файл `backup-cron.sh`:**
|
|||
|
|
- Автоматическое создание бекапов через `mongodump`
|
|||
|
|
- Сжатие бекапов в .tar.gz архивы
|
|||
|
|
- Автоматическое удаление старых бекапов (по умолчанию 30 дней)
|
|||
|
|
- Логирование всех операций
|
|||
|
|
- Цветной вывод для удобства
|
|||
|
|
- Опциональные Telegram уведомления
|
|||
|
|
|
|||
|
|
**Создана документация `CRON_SETUP.md`:**
|
|||
|
|
- Пошаговая инструкция настройки cron
|
|||
|
|
- Примеры различных расписаний:
|
|||
|
|
- Еженедельные бекапы (воскресенье в 3:00)
|
|||
|
|
- Ежедневные бекапы
|
|||
|
|
- Несколько раз в неделю
|
|||
|
|
- Настройка Telegram уведомлений
|
|||
|
|
- Инструкции по восстановлению из бекапа
|
|||
|
|
|
|||
|
|
**Добавлен сервис `backup` в `docker-compose.yml`:**
|
|||
|
|
- Готовый контейнер для запуска бекапов
|
|||
|
|
- Смонтированная директория для бекапов
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 8. 📁 Настройка хранения медиа на удаленном сервере
|
|||
|
|
**Статус:** ✅ Завершено (требуется ручная настройка)
|
|||
|
|
|
|||
|
|
**Изменения в `docker-compose.yml`:**
|
|||
|
|
- Backend монтирует `/mnt/nakama-media` в `/app/backend/uploads`
|
|||
|
|
- Все загруженные медиа автоматически сохраняются на удаленный сервер
|
|||
|
|
- Настроено через SSHFS монтирование
|
|||
|
|
|
|||
|
|
**Создан скрипт `setup-remote-storage.sh`:**
|
|||
|
|
- Автоматическая установка SSHFS
|
|||
|
|
- Создание директорий на удаленном сервере
|
|||
|
|
- Монтирование через SSH
|
|||
|
|
- Опция автомонтирования при загрузке системы
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 9. 🐳 Настройка Docker для всех компонентов
|
|||
|
|
**Статус:** ✅ Завершено
|
|||
|
|
|
|||
|
|
**Созданные файлы:**
|
|||
|
|
|
|||
|
|
1. **`Dockerfile.backend`**
|
|||
|
|
- Multi-stage сборка для оптимизации
|
|||
|
|
- Node 20 Alpine (минимальный размер)
|
|||
|
|
- Production зависимости
|
|||
|
|
- Автоматическое создание директорий для uploads
|
|||
|
|
|
|||
|
|
2. **`Dockerfile.frontend`**
|
|||
|
|
- Multi-stage сборка (builder + nginx)
|
|||
|
|
- Vite сборка с оптимизацией
|
|||
|
|
- Nginx для раздачи статики
|
|||
|
|
- Gzip сжатие
|
|||
|
|
- Кэширование статических файлов
|
|||
|
|
|
|||
|
|
3. **`Dockerfile.moderation`**
|
|||
|
|
- Аналогично frontend
|
|||
|
|
- Отдельный контейнер для системы модерации
|
|||
|
|
- Nginx с оптимизацией
|
|||
|
|
|
|||
|
|
4. **`docker-compose.yml`**
|
|||
|
|
- Полная оркестрация всех сервисов:
|
|||
|
|
- backend (Node.js API)
|
|||
|
|
- frontend (основное приложение)
|
|||
|
|
- moderation (система модерации)
|
|||
|
|
- mongodb (база данных)
|
|||
|
|
- backup (сервис бекапов)
|
|||
|
|
- Настроенные сети
|
|||
|
|
- Volumes для данных
|
|||
|
|
- Health checks
|
|||
|
|
- Переменные окружения
|
|||
|
|
- Зависимости между сервисами
|
|||
|
|
|
|||
|
|
5. **`nginx.conf` и `nginx-moderation.conf`**
|
|||
|
|
- Оптимизированная конфигурация nginx
|
|||
|
|
- Gzip сжатие
|
|||
|
|
- Кэширование статики
|
|||
|
|
- SPA роутинг (fallback на index.html)
|
|||
|
|
|
|||
|
|
6. **`.dockerignore`**
|
|||
|
|
- Исключение ненужных файлов из образов
|
|||
|
|
- Оптимизация размера образов
|
|||
|
|
- Ускорение сборки
|
|||
|
|
|
|||
|
|
7. **`.env.example`**
|
|||
|
|
- Полный пример конфигурации
|
|||
|
|
- Все необходимые переменные окружения
|
|||
|
|
- Комментарии и значения по умолчанию
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📚 Созданная документация
|
|||
|
|
|
|||
|
|
### 1. **DEPLOYMENT_GUIDE.md** - Полное руководство по развертыванию
|
|||
|
|
- Требования к системе
|
|||
|
|
- Настройка удаленного сервера
|
|||
|
|
- Установка и настройка MongoDB
|
|||
|
|
- Развертывание с Docker
|
|||
|
|
- Настройка nginx reverse proxy
|
|||
|
|
- SSL сертификаты
|
|||
|
|
- Мониторинг и обслуживание
|
|||
|
|
- Решение проблем
|
|||
|
|
|
|||
|
|
### 2. **CRON_SETUP.md** - Настройка автоматических бекапов
|
|||
|
|
- Пошаговая инструкция
|
|||
|
|
- Синтаксис cron
|
|||
|
|
- Примеры расписаний
|
|||
|
|
- Настройка уведомлений
|
|||
|
|
- Управление бекапами
|
|||
|
|
- Восстановление из бекапа
|
|||
|
|
|
|||
|
|
### 3. **CHANGES_SUMMARY.md** - Этот файл
|
|||
|
|
- Полная сводка всех изменений
|
|||
|
|
- Инструкции по запуску
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 Быстрый старт
|
|||
|
|
|
|||
|
|
### Подготовка
|
|||
|
|
|
|||
|
|
1. **Настройте удаленный сервер:**
|
|||
|
|
```bash
|
|||
|
|
# Следуйте инструкциям в DEPLOYMENT_GUIDE.md
|
|||
|
|
ssh root@103.80.87.247
|
|||
|
|
# Установите MongoDB и создайте директории
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Настройте локальное окружение:**
|
|||
|
|
```bash
|
|||
|
|
cd /Users/glpshchn/Desktop/nakama
|
|||
|
|
|
|||
|
|
# Создайте .env файл
|
|||
|
|
cp .env.example .env
|
|||
|
|
nano .env # Заполните переменные
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **Настройте удаленное хранилище (опционально):**
|
|||
|
|
```bash
|
|||
|
|
./setup-remote-storage.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Запуск с Docker
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Сборка всех сервисов
|
|||
|
|
docker-compose build
|
|||
|
|
|
|||
|
|
# Запуск в фоновом режиме
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# Проверка статуса
|
|||
|
|
docker-compose ps
|
|||
|
|
|
|||
|
|
# Просмотр логов
|
|||
|
|
docker-compose logs -f
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Настройка бекапов
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Скопируйте скрипт на удаленный сервер
|
|||
|
|
scp backup-cron.sh root@103.80.87.247:/usr/local/bin/
|
|||
|
|
|
|||
|
|
# Следуйте инструкциям в CRON_SETUP.md
|
|||
|
|
ssh root@103.80.87.247
|
|||
|
|
chmod +x /usr/local/bin/backup-cron.sh
|
|||
|
|
crontab -e
|
|||
|
|
# Добавьте: 0 3 * * 0 /usr/local/bin/backup-cron.sh >> /var/log/nakama-backup.log 2>&1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Доступ к приложению
|
|||
|
|
|
|||
|
|
После запуска:
|
|||
|
|
- **Frontend (основное приложение):** http://localhost:5173
|
|||
|
|
- **Moderation (система модерации):** http://localhost:5174
|
|||
|
|
- **Backend API:** http://localhost:3000
|
|||
|
|
- **Health check:** http://localhost:3000/health
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 Команды для управления
|
|||
|
|
|
|||
|
|
### Docker
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Остановить все сервисы
|
|||
|
|
docker-compose down
|
|||
|
|
|
|||
|
|
# Перезапустить конкретный сервис
|
|||
|
|
docker-compose restart backend
|
|||
|
|
|
|||
|
|
# Пересобрать и запустить
|
|||
|
|
docker-compose up -d --build
|
|||
|
|
|
|||
|
|
# Просмотр логов конкретного сервиса
|
|||
|
|
docker-compose logs -f backend
|
|||
|
|
|
|||
|
|
# Выполнить команду в контейнере
|
|||
|
|
docker-compose exec backend sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Бекапы
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Ручной бекап
|
|||
|
|
ssh root@103.80.87.247 '/usr/local/bin/backup-cron.sh'
|
|||
|
|
|
|||
|
|
# Список бекапов
|
|||
|
|
ssh root@103.80.87.247 'ls -lh /var/nakama/backups/'
|
|||
|
|
|
|||
|
|
# Восстановление
|
|||
|
|
ssh root@103.80.87.247
|
|||
|
|
cd /var/nakama/backups
|
|||
|
|
tar -xzf nakama_backup_YYYY-MM-DD_HH-MM-SS.tar.gz
|
|||
|
|
mongorestore --uri="mongodb://localhost:27017" --drop --gzip --db nakama nakama_backup_*/nakama/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 Мониторинг
|
|||
|
|
|
|||
|
|
### Проверка здоровья системы
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Статус Docker контейнеров
|
|||
|
|
docker-compose ps
|
|||
|
|
|
|||
|
|
# Использование ресурсов
|
|||
|
|
docker stats
|
|||
|
|
|
|||
|
|
# Логи в реальном времени
|
|||
|
|
docker-compose logs -f
|
|||
|
|
|
|||
|
|
# Проверка MongoDB
|
|||
|
|
ssh root@103.80.87.247 'systemctl status mongod'
|
|||
|
|
|
|||
|
|
# Свободное место на диске
|
|||
|
|
ssh root@103.80.87.247 'df -h'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ Важные замечания
|
|||
|
|
|
|||
|
|
1. **Безопасность MongoDB:**
|
|||
|
|
- Настройте аутентификацию MongoDB (см. DEPLOYMENT_GUIDE.md)
|
|||
|
|
- Используйте firewall для ограничения доступа к порту 27017
|
|||
|
|
- Регулярно обновляйте MongoDB
|
|||
|
|
|
|||
|
|
2. **Переменные окружения:**
|
|||
|
|
- Никогда не коммитьте `.env` файл в git
|
|||
|
|
- Используйте надежные пароли и секретные ключи
|
|||
|
|
- JWT_SECRET должен быть случайной строкой минимум 32 символа
|
|||
|
|
|
|||
|
|
3. **Бекапы:**
|
|||
|
|
- Проверяйте успешность создания бекапов
|
|||
|
|
- Периодически проверяйте возможность восстановления
|
|||
|
|
- Храните бекапы на отдельном диске/сервере
|
|||
|
|
|
|||
|
|
4. **Обновления:**
|
|||
|
|
- Создавайте бекап перед обновлением
|
|||
|
|
- Тестируйте обновления на dev окружении
|
|||
|
|
- Читайте CHANGELOG перед обновлением
|
|||
|
|
|
|||
|
|
5. **Производительность:**
|
|||
|
|
- Мониторьте использование ресурсов
|
|||
|
|
- Настройте индексы в MongoDB для часто используемых запросов
|
|||
|
|
- Используйте Redis для кэширования (опционально)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🆘 Поддержка
|
|||
|
|
|
|||
|
|
При возникновении проблем:
|
|||
|
|
|
|||
|
|
1. **Проверьте логи:**
|
|||
|
|
```bash
|
|||
|
|
docker-compose logs -f
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Проверьте документацию:**
|
|||
|
|
- DEPLOYMENT_GUIDE.md
|
|||
|
|
- CRON_SETUP.md
|
|||
|
|
|
|||
|
|
3. **Свяжитесь с поддержкой:**
|
|||
|
|
- Telegram: https://t.me/NakamaReportbot
|
|||
|
|
- GitHub Issues: [создайте issue]
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 Список файлов для коммита
|
|||
|
|
|
|||
|
|
Все изменения готовы к коммиту:
|
|||
|
|
|
|||
|
|
### Измененные файлы:
|
|||
|
|
- backend/server.js
|
|||
|
|
- backend/bot.js
|
|||
|
|
- backend/models/Post.js
|
|||
|
|
- backend/routes/modApp.js
|
|||
|
|
- backend/bots/serverMonitor.js
|
|||
|
|
- frontend/index.html
|
|||
|
|
- frontend/src/pages/Feed.jsx
|
|||
|
|
- frontend/src/pages/Profile.jsx
|
|||
|
|
- moderation/frontend/src/App.jsx
|
|||
|
|
|
|||
|
|
### Новые файлы:
|
|||
|
|
- Dockerfile.backend
|
|||
|
|
- Dockerfile.frontend
|
|||
|
|
- Dockerfile.moderation
|
|||
|
|
- docker-compose.yml
|
|||
|
|
- nginx.conf
|
|||
|
|
- nginx-moderation.conf
|
|||
|
|
- .dockerignore
|
|||
|
|
- backup-cron.sh
|
|||
|
|
- setup-remote-storage.sh
|
|||
|
|
- DEPLOYMENT_GUIDE.md
|
|||
|
|
- CRON_SETUP.md
|
|||
|
|
- CHANGES_SUMMARY.md
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Версия:** 2.2.0
|
|||
|
|
**Дата:** 20 ноября 2025
|
|||
|
|
**Автор:** AI Assistant (Claude Sonnet 4.5)
|
|||
|
|
|