Files
videocall-app/README.md
2025-09-07 13:15:48 +00:00

308 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎥 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 ф
```
### 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
```