F7_recording/README.md
F7cloud ec0a1b89c7 Add deployment script and auto-download dependencies
- Создан скрипт deploy.sh для автоматического развертывания на новом сервере
- Добавлена автоматическая загрузка Firefox ESR и Geckodriver в install.sh
- Добавлена поддержка переменных окружения для секретов
- Обновлена документация (DEPLOY.md, README.md)
- Скрипт deploy.sh поддерживает интерактивный ввод секретов
2026-02-18 11:43:00 +00:00

186 lines
6.1 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
curl -fsSL https://git.f7cloud.ru/root/F7_recording/raw/branch/main/deploy.sh | bash
```
Скрипт выполнит все необходимые шаги, включая интерактивный ввод секретов.
### Установка из клонированного репозитория
```bash
git clone https://git.f7cloud.ru/root/F7_recording.git
cd F7_recording
sudo ./install.sh --hpb-url https://hpb.example.com --hpb-secret your-secret-here
```
### Конфигурация
Отредактируйте `/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 в репозитории.