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)
|
||
|