nakama/CHANGES_SUMMARY.md

17 KiB
Raw Blame History

📋 Сводка изменений 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. Настройте удаленный сервер:

    # Следуйте инструкциям в DEPLOYMENT_GUIDE.md
    ssh root@103.80.87.247
    # Установите MongoDB и создайте директории
    
  2. Настройте локальное окружение:

    cd /Users/glpshchn/Desktop/nakama
    
    # Создайте .env файл
    cp .env.example .env
    nano .env  # Заполните переменные
    
  3. Настройте удаленное хранилище (опционально):

    ./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

Доступ к приложению

После запуска:


🔧 Команды для управления

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'

⚠️ Важные замечания

  1. Безопасность MongoDB:

    • Настройте аутентификацию MongoDB (см. DEPLOYMENT_GUIDE.md)
    • Используйте firewall для ограничения доступа к порту 27017
    • Регулярно обновляйте MongoDB
  2. Переменные окружения:

    • Никогда не коммитьте .env файл в git
    • Используйте надежные пароли и секретные ключи
    • JWT_SECRET должен быть случайной строкой минимум 32 символа
  3. Бекапы:

    • Проверяйте успешность создания бекапов
    • Периодически проверяйте возможность восстановления
    • Храните бекапы на отдельном диске/сервере
  4. Обновления:

    • Создавайте бекап перед обновлением
    • Тестируйте обновления на dev окружении
    • Читайте CHANGELOG перед обновлением
  5. Производительность:

    • Мониторьте использование ресурсов
    • Настройте индексы в MongoDB для часто используемых запросов
    • Используйте Redis для кэширования (опционально)

🆘 Поддержка

При возникновении проблем:

  1. Проверьте логи:

    docker-compose logs -f
    
  2. Проверьте документацию:

    • DEPLOYMENT_GUIDE.md
    • CRON_SETUP.md
  3. Свяжитесь с поддержкой:


📝 Список файлов для коммита

Все изменения готовы к коммиту:

Измененные файлы:

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