nakama/CHANGES_SUMMARY.md

439 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📋 Сводка изменений 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)