# 🎥 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 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 ф ``` ### 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 ```