F7_recording/README.md
F7cloud 0b94d1826e Initial commit: F7cloud Talk Recording Server
- Переименовано Nextcloud на F7cloud
- Добавлены зависимости Firefox ESR и Geckodriver
- Создан скрипт установки с поддержкой параметров HPB
- Добавлена документация и инструкции по установке

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 12:18:51 +00:00

174 lines
5.4 KiB
Markdown
Raw 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.

# F7cloud Talk Recording Server
Сервер записи для F7cloud Talk, который позволяет записывать видеозвонки.
## Описание
F7cloud Talk Recording Server предоставляет HTTP API для записи видеозвонков в F7cloud Talk. Сервер работает как клиент Talk и записывает звонки через браузер.
## Структура проекта
```
f7cloud-talk-recording/
├── src/ # Исходный код
│ └── f7cloud/
│ └── talk/
│ └── recording/
│ ├── __init__.py # Инициализация модуля
│ ├── __main__.py # Точка входа CLI
│ ├── Server.py # HTTP сервер (Flask)
│ ├── Service.py # Сервис записи
│ ├── Config.py # Управление конфигурацией
│ ├── Participant.py # Управление участником в браузере
│ ├── BackendNotifier.py # Уведомления бэкенда
│ ├── RecorderArgumentsBuilder.py # Построитель аргументов для ffmpeg
│ └── Benchmark.py # Бенчмарк для тестирования
├── dependencies/ # Внешние зависимости
│ ├── firefox-esr/ # Firefox ESR (браузер для записи)
│ └── geckodriver # Geckodriver (Selenium WebDriver для Firefox)
├── tests/ # Тесты
│ ├── ServerTest.py # Тесты сервера
│ └── ConfigTest.py # Тесты конфигурации
├── server.conf.in # Шаблон конфигурационного файла
├── pyproject.toml # Конфигурация Python проекта
├── install.sh # Скрипт автоматической установки
├── INSTALL.md # Подробная инструкция по установке
└── README.md # Этот файл
```
## Быстрый старт
### Установка
```bash
sudo ./install.sh
```
### Конфигурация
Отредактируйте `/etc/f7cloud-talk-recording/server.conf`:
```ini
[http]
listen = 127.0.0.1:8000
[backend]
backends = my-backend
secret = your-shared-secret-here
[my-backend]
url = https://your-f7cloud-instance.com
secret = your-shared-secret-here
[recording]
browser = firefox
driverPath = /usr/local/bin/geckodriver
browserPath = /usr/local/bin/firefox-esr
```
### Запуск
```bash
sudo systemctl start f7cloud-talk-recording
sudo systemctl enable f7cloud-talk-recording
```
## Зависимости
### Системные зависимости
- Python 3.8+
- PulseAudio
- Xvfb (виртуальный дисплей)
- FFmpeg
- Firefox ESR (включен в `dependencies/`)
- Geckodriver (включен в `dependencies/`)
### Python зависимости
- flask
- prometheus-client
- psutil
- pulsectl
- pyvirtualdisplay>=2.0
- requests
- requests-toolbelt
- selenium>=4.11.0
- websocket-client
Все зависимости указаны в `pyproject.toml` и будут установлены автоматически при установке.
## Основные компоненты
### Server.py
HTTP сервер на Flask, который обрабатывает запросы на начало/конец записи.
### Service.py
Управляет процессом записи:
- Создает виртуальный дисплей (Xvfb)
- Создает аудио sink (PulseAudio)
- Запускает браузер в kiosk режиме
- Запускает FFmpeg для записи
- Загружает запись на сервер
### Participant.py
Управляет участником в браузере через Selenium WebDriver:
- Открывает страницу записи
- Подключается к signaling серверу
- Управляет медиа потоками
### Config.py
Управляет конфигурацией из файла `server.conf`.
## API
Сервер предоставляет HTTP API для управления записями. Подробности см. в документации API.
## Развертывание
Для развертывания на новом сервере:
1. Скопируйте весь репозиторий на сервер
2. Запустите `sudo ./install.sh`
3. Настройте `/etc/f7cloud-talk-recording/server.conf`
4. Запустите сервис: `sudo systemctl start f7cloud-talk-recording`
Подробные инструкции см. в `INSTALL.md`.
## Разработка
### Установка для разработки
```bash
python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
```
### Запуск тестов
```bash
pytest tests/
```
### Линтинг
```bash
pylint src/
```
## Лицензия
AGPL-3.0-or-later
## Поддержка
Для получения помощи см. `INSTALL.md` или создайте issue в репозитории.