17 KiB
📋 Сводка изменений Nakama
✅ Выполненные задачи
1. ✨ Замена NakamaHost на Nakama
Статус: ✅ Завершено
Изменения:
backend/server.js- изменено сообщение APIbackend/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 для всех компонентов
Статус: ✅ Завершено
Созданные файлы:
-
Dockerfile.backend- Multi-stage сборка для оптимизации
- Node 20 Alpine (минимальный размер)
- Production зависимости
- Автоматическое создание директорий для uploads
-
Dockerfile.frontend- Multi-stage сборка (builder + nginx)
- Vite сборка с оптимизацией
- Nginx для раздачи статики
- Gzip сжатие
- Кэширование статических файлов
-
Dockerfile.moderation- Аналогично frontend
- Отдельный контейнер для системы модерации
- Nginx с оптимизацией
-
docker-compose.yml- Полная оркестрация всех сервисов:
- backend (Node.js API)
- frontend (основное приложение)
- moderation (система модерации)
- mongodb (база данных)
- backup (сервис бекапов)
- Настроенные сети
- Volumes для данных
- Health checks
- Переменные окружения
- Зависимости между сервисами
- Полная оркестрация всех сервисов:
-
nginx.confиnginx-moderation.conf- Оптимизированная конфигурация nginx
- Gzip сжатие
- Кэширование статики
- SPA роутинг (fallback на index.html)
-
.dockerignore- Исключение ненужных файлов из образов
- Оптимизация размера образов
- Ускорение сборки
-
.env.example- Полный пример конфигурации
- Все необходимые переменные окружения
- Комментарии и значения по умолчанию
📚 Созданная документация
1. DEPLOYMENT_GUIDE.md - Полное руководство по развертыванию
- Требования к системе
- Настройка удаленного сервера
- Установка и настройка MongoDB
- Развертывание с Docker
- Настройка nginx reverse proxy
- SSL сертификаты
- Мониторинг и обслуживание
- Решение проблем
2. CRON_SETUP.md - Настройка автоматических бекапов
- Пошаговая инструкция
- Синтаксис cron
- Примеры расписаний
- Настройка уведомлений
- Управление бекапами
- Восстановление из бекапа
3. CHANGES_SUMMARY.md - Этот файл
- Полная сводка всех изменений
- Инструкции по запуску
🚀 Быстрый старт
Подготовка
-
Настройте удаленный сервер:
# Следуйте инструкциям в DEPLOYMENT_GUIDE.md ssh root@103.80.87.247 # Установите MongoDB и создайте директории -
Настройте локальное окружение:
cd /Users/glpshchn/Desktop/nakama # Создайте .env файл cp .env.example .env nano .env # Заполните переменные -
Настройте удаленное хранилище (опционально):
./setup-remote-storage.sh
Запуск с Docker
# Сборка всех сервисов
docker-compose build
# Запуск в фоновом режиме
docker-compose up -d
# Проверка статуса
docker-compose ps
# Просмотр логов
docker-compose logs -f
Настройка бекапов
# Скопируйте скрипт на удаленный сервер
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
# Остановить все сервисы
docker-compose down
# Перезапустить конкретный сервис
docker-compose restart backend
# Пересобрать и запустить
docker-compose up -d --build
# Просмотр логов конкретного сервиса
docker-compose logs -f backend
# Выполнить команду в контейнере
docker-compose exec backend sh
Бекапы
# Ручной бекап
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/
📊 Мониторинг
Проверка здоровья системы
# Статус 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'
⚠️ Важные замечания
-
Безопасность MongoDB:
- Настройте аутентификацию MongoDB (см. DEPLOYMENT_GUIDE.md)
- Используйте firewall для ограничения доступа к порту 27017
- Регулярно обновляйте MongoDB
-
Переменные окружения:
- Никогда не коммитьте
.envфайл в git - Используйте надежные пароли и секретные ключи
- JWT_SECRET должен быть случайной строкой минимум 32 символа
- Никогда не коммитьте
-
Бекапы:
- Проверяйте успешность создания бекапов
- Периодически проверяйте возможность восстановления
- Храните бекапы на отдельном диске/сервере
-
Обновления:
- Создавайте бекап перед обновлением
- Тестируйте обновления на dev окружении
- Читайте CHANGELOG перед обновлением
-
Производительность:
- Мониторьте использование ресурсов
- Настройте индексы в MongoDB для часто используемых запросов
- Используйте Redis для кэширования (опционально)
🆘 Поддержка
При возникновении проблем:
-
Проверьте логи:
docker-compose logs -f -
Проверьте документацию:
- DEPLOYMENT_GUIDE.md
- CRON_SETUP.md
-
Свяжитесь с поддержкой:
- 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)