# 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 в репозитории.