- Создан скрипт deploy.sh для автоматического развертывания на новом сервере - Добавлена автоматическая загрузка Firefox ESR и Geckodriver в install.sh - Добавлена поддержка переменных окружения для секретов - Обновлена документация (DEPLOY.md, README.md) - Скрипт deploy.sh поддерживает интерактивный ввод секретов
186 lines
6.1 KiB
Markdown
186 lines
6.1 KiB
Markdown
# 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 в репозитории.
|