nakama/README.md

193 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

2025-11-21 01:14:56 +00:00
# 🎨 Nakama
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
Социальная сеть для фурри и аниме сообщества, реализованная как Telegram Mini App.
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 🚀 Возможности
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
- 📝 Создание постов с текстом и изображениями (до 5 шт)
- 🔍 Поиск контента через e621 и Gelbooru API
- 💬 Комментарии и лайки
- 👥 Подписки на пользователей
- 🔔 Система уведомлений
- 🛡️ Модерация контента
- 🗂️ Фильтры и теги (Furry, Anime, Other, NSFW)
- 🌙 Темная/светлая тема
- 📱 Fullview для изображений
- 🗄️ MinIO для хранения медиа
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 🛠️ Технологии
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
**Frontend:**
- React + Vite
- React Router
- Telegram Mini App SDK
- Lucide Icons
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
**Backend:**
- Node.js + Express
- MongoDB
- Socket.IO (WebSocket)
- MinIO (S3-compatible storage)
- Redis (опционально)
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 📦 Установка
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
### 1. Клонируйте репозиторий
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
```bash
git clone <your-repo>
cd nakama
2025-11-03 20:35:01 +00:00
```
2025-11-21 01:14:56 +00:00
### 2. Настройте переменные окружения
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
```bash
cp ENV_EXAMPLE.txt .env
nano .env
2025-11-03 20:35:01 +00:00
```
2025-11-21 01:14:56 +00:00
Заполните обязательные поля:
```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
2025-11-03 20:35:01 +00:00
```
2025-11-21 01:14:56 +00:00
### 3. Запустите через Docker
2025-11-03 20:35:01 +00:00
```bash
2025-11-21 01:14:56 +00:00
docker-compose up -d
2025-11-03 20:35:01 +00:00
```
2025-11-21 01:14:56 +00:00
### 4. Настройте MinIO (один раз)
2025-11-03 20:35:01 +00:00
```bash
2025-11-21 01:14:56 +00:00
chmod +x minio-setup-public.sh
./minio-setup-public.sh
2025-11-03 20:35:01 +00:00
```
2025-11-21 01:14:56 +00:00
## 🔧 Разработка
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
```bash
# Backend
cd backend
npm install
npm run dev
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
# Frontend
cd frontend
npm install
npm run dev
2025-11-03 20:35:01 +00:00
```
2025-11-21 01:14:56 +00:00
## 📝 Структура
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
```
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
```
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 🐛 Логи
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
```bash
# Все логи
docker-compose logs -f
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
# Только backend
docker-compose logs -f backend
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
# Ошибки
docker-compose logs | grep ERROR
2025-11-03 20:35:01 +00:00
```
2025-11-21 01:14:56 +00:00
Логи также сохраняются в `backend/logs/`:
- `all-YYYY-MM-DD.log` - все логи
- `error-YYYY-MM-DD.log` - только ошибки
- `security-YYYY-MM-DD.log` - события безопасности
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 🔒 Безопасность
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
- JWT авторизация
- Валидация Telegram initData
- Rate limiting
- XSS/NoSQL injection защита
- Helmet security headers
- CORS настройки
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 📱 Telegram Bot
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
Создайте бота через @BotFather:
1. `/newbot` - создать бота
2. `/setmenubutton` - добавить кнопку запуска Mini App
3. Скопируйте токен в `.env`
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 🗄️ MinIO
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
Для хранения загруженных изображений используется MinIO (S3-compatible).
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
**Важно:**
- Порт 9000 - API (для загрузки файлов)
- Порт 9001 - Console (веб-интерфейс)
- Bucket должен быть публичным для доступа к файлам
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 📊 Мониторинг
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
```bash
# Статус контейнеров
docker-compose ps
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
# Использование ресурсов
docker stats
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
# Логи MinIO
docker-compose logs minio
```
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 🚀 Production
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
1. Настройте HTTPS (обязательно для Telegram Mini App!)
2. Измените `JWT_ACCESS_SECRET` и `JWT_REFRESH_SECRET`
3. Настройте firewall
4. Настройте Nginx reverse proxy
5. Включите автоматические бекапы MongoDB
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 📄 Лицензия
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
MIT
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
## 👥 Поддержка
2025-11-03 20:35:01 +00:00
2025-11-21 01:14:56 +00:00
Telegram: @NakamaReportbot