add readme
This commit is contained in:
307
README.md
307
README.md
@@ -0,0 +1,307 @@
|
||||
# 🎥 Video Call App
|
||||
|
||||
Безопасное приложение для видеозвонков без регистрации с поддержкой WebRTC, построенное на Django и Vue.js.
|
||||
|
||||
## ✨ Особенности
|
||||
|
||||
- **🔐 Безопасность**: Аутентификация по паролю, CSRF защита
|
||||
- **📱 Адаптивность**: Полная поддержка мобильных устройств
|
||||
- **🎯 Простота**: Создание комнат одним кликом
|
||||
- **⚡ WebRTC**: Прямое P2P соединение для минимальной задержки
|
||||
- **🌙 Темная тема**: Автоматическое переключение по системным настройкам
|
||||
- **📊 Мониторинг**: Статистика качества соединения в реальном времени
|
||||
- **🔄 PWA**: Поддержка Progressive Web App для установки на устройства
|
||||
|
||||
## 🏗️ Архитектура
|
||||
|
||||
```
|
||||
📦 Video Call App
|
||||
├── 🐍 Backend (Django)
|
||||
│ ├── REST API
|
||||
│ ├── WebSocket (Channels)
|
||||
│ ├── Redis (кэширование и сессии)
|
||||
│ └── PostgreSQL (база данных)
|
||||
├── 🖥️ Frontend (Vue.js 3)
|
||||
│ ├── Composition API
|
||||
│ ├── Pinia (управление состоянием)
|
||||
│ ├── TailwindCSS (стили)
|
||||
│ └── WebRTC (видеосвязь)
|
||||
└── 🐳 Docker
|
||||
├── Nginx (прокси)
|
||||
├── PostgreSQL
|
||||
├── Redis
|
||||
└── SSL/HTTPS
|
||||
```
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
|
||||
### Локальная разработка
|
||||
|
||||
1. **Клонирование репозитория**
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd video-call-app
|
||||
```
|
||||
|
||||
2. **Запуск с Docker Compose**
|
||||
```bash
|
||||
# Создайте .env файл из примера
|
||||
cp env.example .env
|
||||
|
||||
# Запустите контейнеры
|
||||
docker-compose up --build
|
||||
```
|
||||
|
||||
3. **Создайте суперпользователя**
|
||||
```bash
|
||||
docker-compose exec backend python manage.py createsuperuser
|
||||
```
|
||||
|
||||
4. **Доступ к приложению**
|
||||
- Frontend: http://localhost
|
||||
- Backend API: http://localhost/api
|
||||
- Admin панель: http://localhost/admin
|
||||
|
||||
## 📋 Системные требования
|
||||
|
||||
- **Сервер**: Ubuntu 20.04+ или аналогичная Linux-система
|
||||
- **RAM**: Минимум 2GB, рекомендуется 4GB+
|
||||
- **CPU**: 2+ ядра
|
||||
- **Диск**: 20GB+ свободного места
|
||||
- **Сеть**: Статический IP или домен для SSL
|
||||
|
||||
## 🛠️ Развертывание на продакшене
|
||||
|
||||
### 1. Подготовка сервера
|
||||
|
||||
Обновите систему и установите необходимые пакеты:
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install ca-certificates curl
|
||||
```
|
||||
|
||||
### 2. Установка Docker
|
||||
|
||||
**Добавление ключей и репозитория Docker:**
|
||||
```bash
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
||||
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
sudo apt-get update
|
||||
```
|
||||
|
||||
**Установка Docker и компонентов:**
|
||||
```bash
|
||||
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
```
|
||||
|
||||
**Добавление пользователя в группу Docker:**
|
||||
```bash
|
||||
sudo usermod -aG docker $USER
|
||||
newgrp docker
|
||||
```
|
||||
|
||||
### 3. Установка Docker Compose
|
||||
|
||||
```bash
|
||||
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||||
sudo chmod +x /usr/local/bin/docker-compose
|
||||
```
|
||||
|
||||
### 4. Установка Nginx и Certbot
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install nginx certbot python3-certbot-nginx
|
||||
```
|
||||
|
||||
### 5. Настройка SSL-сертификатов
|
||||
|
||||
**Получение сертификатов Let's Encrypt:**
|
||||
```bash
|
||||
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
|
||||
```
|
||||
|
||||
**Остановка системного Nginx после получения сертификатов:**
|
||||
```bash
|
||||
sudo systemctl stop nginx
|
||||
sudo systemctl disable nginx
|
||||
```
|
||||
|
||||
### 6. Конфигурация проекта
|
||||
|
||||
**Создайте файл окружения:**
|
||||
```bash
|
||||
cp env.example .env
|
||||
```
|
||||
|
||||
**Настройте переменные в `.env`:**
|
||||
```bash
|
||||
# Основные настройки
|
||||
DEBUG=False
|
||||
SECRET_KEY=your-super-secret-django-key-here
|
||||
DOMAIN_NAME=yourdomain.com
|
||||
|
||||
# База данных
|
||||
POSTGRES_PASSWORD=strong-database-password
|
||||
|
||||
# Пути к SSL сертификатам
|
||||
SSL_CERT_PATH=/etc/letsencrypt/live/yourdomain.com/fullchain.pem
|
||||
SSL_KEY_PATH=/etc/letsencrypt/live/yourdomain.com/privkey.pem
|
||||
|
||||
# Домены
|
||||
ALLOWED_HOSTS=yourdomain.com,www.yourdomain.com
|
||||
CORS_ALLOWED_ORIGINS=https://yourdomain.com,https://www.yourdomain.com
|
||||
```
|
||||
|
||||
**Обновите nginx.conf:**
|
||||
Замените `yourdomain.com` на ваш реальный домен в файле `nginx.conf`.
|
||||
|
||||
### 7. Запуск приложения
|
||||
|
||||
**Сборка и запуск контейнеров:**
|
||||
```bash
|
||||
docker-compose up --build -d
|
||||
```
|
||||
|
||||
**Создание суперпользователя:**
|
||||
```bash
|
||||
docker-compose exec backend python manage.py createsuperuser
|
||||
```
|
||||
|
||||
**Проверка статуса контейнеров:**
|
||||
```bash
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
### 8. Проверка работоспособности
|
||||
|
||||
- **Frontend**: https://yourdomain.com
|
||||
- **Backend API**: https://yourdomain.com/api/health/
|
||||
- **Admin панель**: https://yourdomain.com/admin/
|
||||
- **WebSocket**: wss://yourdomain.com/ws/
|
||||
|
||||
## 🔧 Управление проектом
|
||||
|
||||
### Основные команды
|
||||
|
||||
```bash
|
||||
# Просмотр логов
|
||||
docker-compose logs -f
|
||||
|
||||
# Перезапуск сервисов
|
||||
docker-compose restart
|
||||
|
||||
# Остановка проекта
|
||||
docker-compose down
|
||||
|
||||
# Полная очистка (с удалением данных)
|
||||
docker-compose down -v --remove-orphans
|
||||
```
|
||||
|
||||
### Обновление проекта
|
||||
|
||||
```bash
|
||||
# Получение обновлений
|
||||
git pull origin main
|
||||
|
||||
# Пересборка и перезапуск
|
||||
docker-compose up --build -d
|
||||
|
||||
# Применение миграций (если есть)
|
||||
docker-compose exec backend python manage.py migrate
|
||||
```
|
||||
|
||||
### Резервное копирование
|
||||
|
||||
```bash
|
||||
# Создание бэкапа базы данных
|
||||
docker-compose exec db pg_dump -U postgres videocall_db > backup_$(date +%Y%m%d_%H%M%S).sql
|
||||
|
||||
# Восстановление из бэкапа
|
||||
docker-compose exec -T db psql -U postgres videocall_db < backup_file.sql
|
||||
```
|
||||
|
||||
## 📊 Мониторинг
|
||||
|
||||
### Health Check эндпоинты
|
||||
|
||||
- **Общее состояние**: `/api/health/`
|
||||
- **Метрики системы**: `/api/metrics/` (только для админов)
|
||||
|
||||
### Логи
|
||||
|
||||
```bash
|
||||
# Все логи
|
||||
docker-compose logs -f
|
||||
|
||||
# Логи конкретного сервиса
|
||||
docker-compose logs -f backend
|
||||
docker-compose logs -f nginx
|
||||
docker-compose logs -f db
|
||||
```
|
||||
|
||||
## 🛡️ Безопасность
|
||||
|
||||
### Рекомендации по безопасности
|
||||
|
||||
1. **Измените пароль по умолчанию** в админ-панели
|
||||
2. **Используйте сложные пароли** для базы данных
|
||||
3. **Регулярно обновляйте** SSL-сертификаты
|
||||
4. **Настройте файрвол** для ограничения доступа
|
||||
5. **Мониторьте логи** на предмет подозрительной активности
|
||||
|
||||
### Настройка файрвола (UFW)
|
||||
|
||||
```bash
|
||||
# Разрешить SSH, HTTP и HTTPS
|
||||
sudo ufw allow 22
|
||||
sudo ufw allow 80
|
||||
sudo ufw allow 443
|
||||
sudo ufw enable
|
||||
```
|
||||
|
||||
## 🔧 Разработка
|
||||
|
||||
### Структура проекта
|
||||
|
||||
```
|
||||
📁 video-call-app/
|
||||
├── 📁 backend/ # Django backend
|
||||
│ ├── 📁 apps/ # Django приложения
|
||||
│ │ ├── 📁 authentication/ # Система аутентификации
|
||||
│ │ ├── 📁 core/ # Основные модели и утилиты
|
||||
│ │ └── 📁 rooms/ # Управление комнатами
|
||||
│ ├── 📁 videocall_app/ # Основные настройки Django
|
||||
│ └── 🐳 Dockerfile
|
||||
├── 📁 videocall-frontend/ # Vue.js frontend
|
||||
│ ├── 📁 src/
|
||||
│ │ ├── 📁 components/ # Vue компоненты
|
||||
│ │ ├── 📁 stores/ # Pinia хранилища
|
||||
│ │ ├── 📁 services/ # API и утилиты
|
||||
│ │ └── 📁 router/ # Vue Router
|
||||
│ └── 🐳 Dockerfile
|
||||
├── 🐳 docker-compose.yml # Docker Compose конфигурация
|
||||
├── 📄 nginx.conf # Nginx конфигурация
|
||||
└── 📄 .env.example # Пример переменных окружения
|
||||
```
|
||||
|
||||
### Локальная разработка
|
||||
|
||||
```bash
|
||||
# Backend (Python/Django)
|
||||
cd backend
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
python manage.py runserver
|
||||
|
||||
# Frontend (Vue.js)
|
||||
cd videocall-frontend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user