# Инструкция по установке F7cloud Talk Recording Server ## Описание F7cloud Talk Recording Server - это сервер записи для F7cloud Talk, который позволяет записывать видеозвонки. ## Системные требования - Linux (рекомендуется Debian/Ubuntu) - Python 3.8 или выше - Системные зависимости (см. ниже) ## Зависимости ### Системные пакеты ```bash # Debian/Ubuntu sudo apt-get update sudo apt-get install -y \ python3 \ python3-pip \ python3-venv \ pulseaudio \ xvfb \ ffmpeg \ libpulse0 \ libpulse-dev \ libx11-dev \ libxext-dev \ libxrender-dev \ libxtst6 \ libxi6 \ libgconf-2-4 \ libasound2-dev ``` ### Firefox ESR и Geckodriver Firefox ESR и Geckodriver уже включены в репозиторий в папке `dependencies/`: - `dependencies/firefox-esr/` - Firefox ESR - `dependencies/geckodriver` - Geckodriver Эти зависимости будут установлены автоматически скриптом установки. ## Установка ### Автоматическая установка Используйте скрипт установки с обязательными параметрами для HPB: ```bash sudo ./f7recording.sh /path/to/f7cloud-install.env ``` **Обязательные параметры:** - `--hpb-url` - URL сервера HPB (signaling server) - `--hpb-secret` - Секрет для подключения к HPB (internalsecret) **Опциональные параметры:** - `--f7cloud-url` - URL сервера F7cloud - `--f7cloud-secret` - Секрет для подключения к F7cloud - `--listen` - Адрес и порт для прослушивания (по умолчанию: `127.0.0.1:8000`) **Пример полной установки:** ```bash # Подготовьте .env с HPB_DOMAIN, HPB_INTERNAL_SECRET, DOMAIN, HPB_BACKEND_SECRET: sudo ./f7recording.sh /path/to/f7cloud-install.env ``` **Просмотр справки:** ```bash # Использование: ./f7recording.sh /path/to/f7cloud-install.env ``` Скрипт выполнит: 1. Установку системных зависимостей 2. Установку Firefox ESR и Geckodriver 3. Создание виртуального окружения Python 4. Установку Python-зависимостей 5. Создание пользователя для запуска сервера 6. Автоматическую настройку конфигурационного файла с указанными параметрами ### Ручная установка #### 1. Установка системных зависимостей ```bash sudo apt-get update sudo apt-get install -y python3 python3-pip python3-venv pulseaudio xvfb ffmpeg \ libpulse0 libpulse-dev libx11-dev libxext-dev libxrender-dev libxtst6 \ libxi6 libgconf-2-4 libasound2-dev ``` #### 2. Установка Firefox ESR ```bash sudo cp -r dependencies/firefox-esr /opt/firefox-esr sudo ln -sf /opt/firefox-esr/firefox /usr/local/bin/firefox-esr ``` #### 3. Установка Geckodriver ```bash sudo cp dependencies/geckodriver /usr/local/bin/geckodriver sudo chmod +x /usr/local/bin/geckodriver ``` #### 4. Создание виртуального окружения Python ```bash cd /opt/f7cloud-talk-recording python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install -e . ``` #### 5. Создание пользователя ```bash sudo useradd -r -s /bin/false -d /var/lib/f7cloud-talk-recording f7cloud-talk-recording sudo mkdir -p /var/lib/f7cloud-talk-recording sudo chown f7cloud-talk-recording:f7cloud-talk-recording /var/lib/f7cloud-talk-recording ``` #### 6. Настройка конфигурации ```bash sudo mkdir -p /etc/f7cloud-talk-recording sudo cp server.conf.in /etc/f7cloud-talk-recording/server.conf sudo chown f7cloud-talk-recording:f7cloud-talk-recording /etc/f7cloud-talk-recording/server.conf sudo chmod 600 /etc/f7cloud-talk-recording/server.conf ``` Отредактируйте `/etc/f7cloud-talk-recording/server.conf` согласно вашим настройкам. **Примечание:** При использовании скрипта `f7recording.sh` с файлом .env конфигурация создаётся автоматически. Вам нужно будет только добавить секцию для F7cloud backend, если она не была указана при установке. ## Конфигурация Основной конфигурационный файл находится в `/etc/f7cloud-talk-recording/server.conf`. ### Основные параметры - `[http] listen` - IP и порт для прослушивания HTTP-запросов (по умолчанию: `127.0.0.1:8000`) - `[backend]` - настройки бэкенда - `[signaling]` - настройки signaling сервера - `[recording]` - настройки записи (браузер, пути к драйверам) ### Пример конфигурации ```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 source venv/bin/activate f7cloud-talk-recording --config /etc/f7cloud-talk-recording/server.conf ``` ### Запуск как служба systemd Создайте файл `/etc/systemd/system/f7cloud-talk-recording.service`: ```ini [Unit] Description=F7cloud Talk Recording Server After=network.target [Service] Type=simple User=f7cloud-talk-recording Group=f7cloud-talk-recording WorkingDirectory=/opt/f7cloud-talk-recording Environment="PATH=/opt/f7cloud-talk-recording/venv/bin:/usr/local/bin:/usr/bin:/bin" ExecStart=/opt/f7cloud-talk-recording/venv/bin/f7cloud-talk-recording --config /etc/f7cloud-talk-recording/server.conf Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ``` Затем: ```bash sudo systemctl daemon-reload sudo systemctl enable f7cloud-talk-recording sudo systemctl start f7cloud-talk-recording ``` ## Проверка работы Проверьте статус службы: ```bash sudo systemctl status f7cloud-talk-recording ``` Проверьте логи: ```bash sudo journalctl -u f7cloud-talk-recording -f ``` ## Структура проекта ``` f7cloud-talk-recording/ ├── src/ │ └── f7cloud/ │ └── talk/ │ └── recording/ │ ├── __init__.py │ ├── __main__.py │ ├── Server.py │ ├── Service.py │ ├── Config.py │ ├── Participant.py │ ├── BackendNotifier.py │ ├── RecorderArgumentsBuilder.py │ └── Benchmark.py ├── dependencies/ │ ├── firefox-esr/ # Firefox ESR │ └── geckodriver # Geckodriver ├── tests/ # Тесты ├── server.conf.in # Шаблон конфигурации ├── pyproject.toml # Конфигурация Python проекта ├── f7recording.sh # Скрипт установки ├── INSTALL.md # Данная инструкция └── README.md # Основная документация ``` ## Устранение неполадок ### Проблемы с PulseAudio Если возникают проблемы с PulseAudio: ```bash pulseaudio --start --exit-idle-time=120 ``` ### Проблемы с правами доступа Убедитесь, что пользователь `f7cloud-talk-recording` имеет права на: - `/var/lib/f7cloud-talk-recording` - для временных файлов записи - `/etc/f7cloud-talk-recording/server.conf` - для чтения конфигурации ### Проблемы с Firefox/Geckodriver Проверьте пути в конфигурации: ```bash which firefox-esr which geckodriver ``` Убедитесь, что пути указаны правильно в `server.conf`. ## Дополнительная информация Для получения дополнительной информации см. `README.md`.