Go to file
glpshchn ed85d8f6db Update files 2025-12-01 03:51:23 +03:00
backend Update files 2025-12-01 03:51:23 +03:00
frontend Update files 2025-12-01 03:51:23 +03:00
moderation/frontend Update files 2025-11-21 04:14:56 +03:00
.dockerignore Update files 2025-11-21 00:32:48 +03:00
.gitignore Initial commit 2025-11-03 23:35:01 +03:00
Dockerfile.backend Update files 2025-11-21 00:32:48 +03:00
Dockerfile.frontend Update files 2025-11-21 00:32:48 +03:00
Dockerfile.moderation Update files 2025-11-21 00:32:48 +03:00
ENV_EXAMPLE.txt Update files 2025-11-21 04:28:48 +03:00
FIX_MONGODB.md Update files 2025-12-01 03:51:23 +03:00
LICENSE Initial commit 2025-11-03 23:35:01 +03:00
MINIO_403_FIX.md Update files 2025-12-01 03:51:23 +03:00
MINIO_NGINX_SETUP.md Update files 2025-11-21 04:44:54 +03:00
README.md Update files 2025-11-21 04:14:56 +03:00
backup-cron.sh Update files 2025-11-21 00:32:48 +03:00
check-post-creation.md Update files 2025-12-01 03:51:23 +03:00
docker-compose.yml Update files 2025-11-21 01:07:37 +03:00
fix-minio-public.sh Update files 2025-12-01 03:51:23 +03:00
minio-public-policy.json Update files 2025-12-01 03:51:23 +03:00
minio-setup-public.sh Update files 2025-11-21 04:14:56 +03:00
nginx-minio.conf Update files 2025-11-21 04:44:54 +03:00
nginx-moderation.conf Update files 2025-11-21 00:32:48 +03:00
nginx.conf Update files 2025-11-21 00:32:48 +03:00
package.json Update files 2025-11-21 01:07:37 +03:00
setup-minio-nginx.sh Update files 2025-11-21 04:44:54 +03:00
setup-remote-storage.sh Update files 2025-11-21 00:32:48 +03:00
start.sh Initial commit 2025-11-03 23:35:01 +03:00
update-server.sh Update files 2025-11-03 23:54:59 +03:00

README.md

🎨 Nakama

Социальная сеть для фурри и аниме сообщества, реализованная как Telegram Mini App.

🚀 Возможности

  • 📝 Создание постов с текстом и изображениями (до 5 шт)
  • 🔍 Поиск контента через e621 и Gelbooru API
  • 💬 Комментарии и лайки
  • 👥 Подписки на пользователей
  • 🔔 Система уведомлений
  • 🛡️ Модерация контента
  • 🗂️ Фильтры и теги (Furry, Anime, Other, NSFW)
  • 🌙 Темная/светлая тема
  • 📱 Fullview для изображений
  • 🗄️ MinIO для хранения медиа

🛠️ Технологии

Frontend:

  • React + Vite
  • React Router
  • Telegram Mini App SDK
  • Lucide Icons

Backend:

  • Node.js + Express
  • MongoDB
  • Socket.IO (WebSocket)
  • MinIO (S3-compatible storage)
  • Redis (опционально)

📦 Установка

1. Клонируйте репозиторий

git clone <your-repo>
cd nakama

2. Настройте переменные окружения

cp ENV_EXAMPLE.txt .env
nano .env

Заполните обязательные поля:

# Telegram Bot
TELEGRAM_BOT_TOKEN=ваш_токен_от_BotFather

# MongoDB (удаленный сервер)
MONGODB_URI=mongodb://103.80.87.247:27017/nakama

# JWT секреты (сгенерируйте случайные строки)
JWT_ACCESS_SECRET=ваш_секретный_ключ_32_символа
JWT_REFRESH_SECRET=другой_секретный_ключ_32_символа

# MinIO
MINIO_ENABLED=true
MINIO_ENDPOINT=103.80.87.247
MINIO_PORT=9000
MINIO_ACCESS_KEY=ваш_access_key
MINIO_SECRET_KEY=ваш_secret_key
MINIO_PUBLIC_BUCKET=true

# Frontend
FRONTEND_URL=https://ваш-домен.com
CORS_ORIGIN=https://ваш-домен.com,https://web.telegram.org

3. Запустите через Docker

docker-compose up -d

4. Настройте MinIO (один раз)

chmod +x minio-setup-public.sh
./minio-setup-public.sh

🔧 Разработка

# Backend
cd backend
npm install
npm run dev

# Frontend
cd frontend
npm install
npm run dev

📝 Структура

nakama/
├── backend/          # Node.js API
│   ├── models/       # MongoDB модели
│   ├── routes/       # API роуты
│   ├── middleware/   # Middleware
│   ├── utils/        # Утилиты
│   └── bot.js        # Telegram бот
├── frontend/         # React приложение
│   ├── src/
│   │   ├── pages/    # Страницы
│   │   ├── components/ # Компоненты
│   │   └── utils/    # Утилиты
├── moderation/       # Система модерации
│   ├── frontend/     # React админка
│   └── backend/      # Доп. API роуты
└── docker-compose.yml

🐛 Логи

# Все логи
docker-compose logs -f

# Только backend
docker-compose logs -f backend

# Ошибки
docker-compose logs | grep ERROR

Логи также сохраняются в backend/logs/:

  • all-YYYY-MM-DD.log - все логи
  • error-YYYY-MM-DD.log - только ошибки
  • security-YYYY-MM-DD.log - события безопасности

🔒 Безопасность

  • JWT авторизация
  • Валидация Telegram initData
  • Rate limiting
  • XSS/NoSQL injection защита
  • Helmet security headers
  • CORS настройки

📱 Telegram Bot

Создайте бота через @BotFather:

  1. /newbot - создать бота
  2. /setmenubutton - добавить кнопку запуска Mini App
  3. Скопируйте токен в .env

🗄️ MinIO

Для хранения загруженных изображений используется MinIO (S3-compatible).

Важно:

  • Порт 9000 - API (для загрузки файлов)
  • Порт 9001 - Console (веб-интерфейс)
  • Bucket должен быть публичным для доступа к файлам

📊 Мониторинг

# Статус контейнеров
docker-compose ps

# Использование ресурсов
docker stats

# Логи MinIO
docker-compose logs minio

🚀 Production

  1. Настройте HTTPS (обязательно для Telegram Mini App!)
  2. Измените JWT_ACCESS_SECRET и JWT_REFRESH_SECRET
  3. Настройте firewall
  4. Настройте Nginx reverse proxy
  5. Включите автоматические бекапы MongoDB

📄 Лицензия

MIT

👥 Поддержка

Telegram: @NakamaReportbot