VideoConnect 0.4.0 — версия, синхронизированная с ВКР
Учебный сетевой ресурс для ВКР по теме «Внедрение сервиса видеоконференцсвязи». Это собственный Django/WebRTC-сервис, а не оболочка над Jitsi/Zoom/CMS.
Автор: Базарнов Никита Викторович
Публичная версия: https://videoconnect.relaxdev.ru/
Что реализовано
- Python + Django 5.2;
- HTML5/CSS3/JavaScript + Bootstrap 5.3 без CMS;
- 10+ публичных страниц, 10+ пунктов меню и breadcrumbs;
- локальная регистрация/авторизация для учебной версии, три роли;
- опциональная корпоративная авторизация LDAP/Active Directory без хранения LDAP-пароля;
- личные кабинеты и собственная административная панель;
- поиск и фильтрация данных в административных таблицах;
- массовые административные действия для активации и блокировки учетных записей;
- создание, изменение и отмена конференций, персональные приглашения и гостевой вход по защищенной ссылке без регистрации;
- камера, микрофон, выключение устройств, выбор устройств и демонстрация экрана для всех ролей;
- автоматический главный видеоблок для демонстрации экрана и активного говорящего; зеленая подсветка говорящих;
- собственный WebRTC signaling через Django JSON API;
- STUN и опциональный TURN;
- очередь ICE-кандидатов, heartbeat присутствия, повторное подключение устройств;
- чат, файлы, история посещаемости;
- внутренние и почтовые SMTP-уведомления о приглашениях, изменениях и отмене встреч;
- DOCX/XLSX;
- PostgreSQL в production и SQLite локально;
- готовые миграции в репозитории;
- Dockerfile и конфигурация для RelaxDev;
/health/для проверки доступности.
Локальный запуск Windows
cd C:\VideoConnect
python -m venv .venv
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txt
python manage.py migrate
python manage.py seed_demo
python manage.py runserver 0.0.0.0:8000
На том же ПК открывайте http://127.0.0.1:8000/ или http://localhost:8000/.
Камера и микрофон на другом ПК по адресу вида
http://192.168.x.x:8000блокируются самим браузером: это ограничение Web API, а не ошибка Django. Для двух разных ПК используйте HTTPS. Production-развертывание RelaxDev сразу дает HTTPS.
Демонстрационные учетные записи
Только после python manage.py seed_demo:
| Роль | Логин | Пароль |
|---|---|---|
| Администратор | admin |
AdminVC-2026! |
| Организатор | organizer |
OrganizerVC-2026! |
| Участник | participant |
ParticipantVC-2026! |
Не запускайте seed_demo в публичном production с этими паролями.
Управление пользователями администратором
В собственной панели администрирования откройте Администрирование → Пользователи. Администратор может:
- создать новую учетную запись и назначить роль;
- изменить роль существующего пользователя;
- заблокировать или разблокировать учетную запись;
- установить пользователю новый пароль.
Создание учетной записи и смена пароля записываются в журнал аудита. Пароли в открытом виде не хранятся.
Проверка видеосвязи в интернете
- Разверните проект на HTTPS.
- Организатор создает встречу и оставляет включенным «Разрешить вход гостям по ссылке».
- Организатор запускает встречу и копирует гостевую ссылку из карточки или видеокомнаты.
- Друг открывает ссылку, вводит только отображаемое имя и подключается без регистрации.
- Система автоматически создает внутреннюю гостевую сессию с ролью «Участник» только для этой конференции.
- Браузеры обмениваются SDP/ICE через наш Django signaling.
- Если прямой P2P-маршрут невозможен, рекомендуется TURN.
TURN
По умолчанию используются публичные STUN-серверы Cloudflare и Google. Этого хватает для многих домашних сетей, но не для всех NAT/Firewall.
Для надежной внешней проверки можно либо задать универсальный REST URL провайдера TURN, либо Cloudflare TURN:
WEBRTC_TURN_CREDENTIALS_URL=<server-side URL выдачи iceServers>
# либо
CLOUDFLARE_TURN_KEY_ID=...
CLOUDFLARE_TURN_API_TOKEN=...
VideoConnect сам получает краткоживущие ICE credentials на серверной стороне и передает клиенту только временные параметры.
Альтернативно можно передать собственный список:
WEBRTC_ICE_SERVERS_JSON=[{"urls":"stun:..."},{"urls":"turns:...","username":"...","credential":"..."}]
Интеграции, описанные в ВКР
LDAP / Active Directory
В учебной конфигурации используется Django Auth. Для рабочей среды включите LDAP_ENABLED=1 и заполните переменные LDAP_* из .env.example. При включенном LDAP локальная регистрация по умолчанию отключается, а пароль пользователя проверяется каталогом и не записывается в локальную БД. Для первичного назначения прикладных ролей можно задать LDAP_ADMIN_USERNAMES и LDAP_ORGANIZER_USERNAMES.
Корпоративная почта
Для отправки приглашений и уведомлений задайте EMAIL_HOST, порт, режим TLS/SSL, учетные данные и DEFAULT_FROM_EMAIL, затем включите CONFERENCE_EMAIL_NOTIFICATIONS_ENABLED=1. Ошибка SMTP не отменяет сохраненную конференцию или приглашение и фиксируется в журнале.
Соответствие тексту ВКР
Карта соответствия требований и исходного кода находится в docs/WKR_TRACEABILITY.md. Техническое задание, 32 приемочных сценария и руководства пользователя/администратора синхронизированы с приложениями ВКР.
Production / RelaxDev
Полная инструкция: docs/DEPLOY_RELAXDEV.md.
Основные переменные:
DJANGO_DEBUG=0
DJANGO_SECRET_KEY=<случайный длинный ключ>
DJANGO_ALLOWED_HOSTS=<project>.relaxdev.ru
DJANGO_CSRF_TRUSTED_ORIGINS=https://<project>.relaxdev.ru
DJANGO_SECURE_SSL_REDIRECT=1
AUTHOR_FULL_NAME=Базарнов Никита Викторович
DATABASE_URL RelaxDev добавляет автоматически после подключения PostgreSQL.
Запуск задается через Procfile → deploy/start.sh, который выполняет миграции, collectstatic, проверяет роли и запускает Gunicorn на $PORT.
Production bootstrap
Для локальной/обычной Django-аутентификации, чтобы не публиковать известный пароль admin, можно один раз задать environment variables:
BOOTSTRAP_ADMIN_USERNAME=adminvc
BOOTSTRAP_ADMIN_EMAIL=...
BOOTSTRAP_ADMIN_PASSWORD=<сложный пароль>
BOOTSTRAP_ORGANIZER_USERNAME=organizer
BOOTSTRAP_ORGANIZER_EMAIL=...
BOOTSTRAP_ORGANIZER_PASSWORD=<сложный пароль>
Команда bootstrap_production идемпотентна. После первого успешного входа пароли можно удалить из переменных окружения и изменить через приложение/администрирование. В строгом LDAP-режиме локальные bootstrap-учетные записи не создаются: стартовые роли назначаются через LDAP_ADMIN_USERNAMES и LDAP_ORGANIZER_USERNAMES.
База данных
- локально: база хранится вне каталога проекта (
%LOCALAPPDATA%\VideoConnect\videoconnect.sqlite3в Windows или~/.videoconnect/videoconnect.sqlite3в Linux), поэтому замена папки с новой версией не удаляет пользователей; при первом запуске автоматически копируется стараяdatabase/videoconnect.sqlite3, если она существует; - production: PostgreSQL через
DATABASE_URLрекомендуется и защищает пользователей между redeploy; - если PostgreSQL недоступен, задайте
VIDEOCONNECT_DATA_DIRна реально постоянный/mounted каталог хостинга; в production запуск безDATABASE_URLи безVIDEOCONNECT_DATA_DIRнамеренно блокируется, чтобы не потерять пользователей при обновлении; database/schema.sql— справочная SQL-схема для материалов ВКР;accounts/migrations,core/migrations,conferences/migrations— реальные Django migrations и должны храниться в Git.
Структура
accounts/ роли, пользователи, профили, уведомления
conferences/ встречи, WebRTC signaling, чат, файлы, attendance
core/ публичные страницы, статьи, feedback, audit
management_panel/ собственная административная панель
reports/ DOCX/XLSX
templates/ HTML
static/ CSS/JavaScript
media/ пользовательские файлы
database/ SQL/SQLite материалы
deploy/ production start script
docs/ аналитическая и проектная документация
Git
Проект полностью подходит для GitFlic. Не коммитьте .env, пароли, токены TURN, production SECRET_KEY и реальные пользовательские файлы. Коммиты должны отражать реальные итерации разработки; docs/COMMIT_PLAN.md содержит план развития.
Изменения 0.2.3
В комнате конференции доступен выбор камеры, микрофона и аудиовыхода, а также постоянный список активных участников и плитки-заглушки для пользователей без видеопотока.
Изменения 0.3.0
- Проект синхронизирован с главой 2 и приложениями ВКР.
- Добавлены изменение и отмена конференции.
- Добавлен опциональный LDAP/AD backend.
- Добавлены SMTP-уведомления и устойчивое поведение при ошибке почтового сервера.
- Добавлен Bootstrap 5.3 и обновлена эксплуатационная документация.