nakama/CHANGES_SUMMARY.md

439 lines
17 KiB
Markdown
Raw Normal View History

2025-11-20 21:32:48 +00:00
# 📋 Сводка изменений 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)