Сервер записи вызовов
Go to file
2026-03-11 11:47:50 +00:00
etc/f7cloud-talk-recording F7cloud Talk Recording: install-скрипт, vendor (Firefox ESR, GeckoDriver), systemd, конфиг-шаблон 2026-03-10 20:20:35 +00:00
opt pyproject.toml: имена скриптов с дефисами (f7cloud-talk-recording); systemd: модуль f7cloud.talk.recording 2026-03-11 11:47:50 +00:00
scripts F7cloud Talk Recording: install-скрипт, vendor (Firefox ESR, GeckoDriver), systemd, конфиг-шаблон 2026-03-10 20:20:35 +00:00
systemd pyproject.toml: имена скриптов с дефисами (f7cloud-talk-recording); systemd: модуль f7cloud.talk.recording 2026-03-11 11:47:50 +00:00
vendor install.sh: установка python3.12, xvfb и ffmpeg через apt-get 2026-03-11 11:15:53 +00:00
install.sh Вендоринг исходников nextcloud-talk-recording в opt/f7cloud-talk-recording-src и уточнение apt-установки 2026-03-11 11:28:07 +00:00
README.md install.sh: установка python3.12, xvfb и ffmpeg через apt-get 2026-03-11 11:15:53 +00:00

F7cloud Talk Recording — сборка для развёртывания

В репозитории собраны все компоненты для работы сервиса, кроме системных пакетов Python/xvfb/ffmpeg. Firefox ESR и GeckoDriver скопированы с машины сборки в vendor/ и при развёртывании на другом сервере просто копируются из репо в /opt/firefox-esr и /usr/local/bin/geckodriver. А вот python3.12, python3.12-venv, xvfb и ffmpeg ставятся на целевой машине через apt-get (скрипт install.sh сначала проверяет их наличие и, если нужно, пытается установить командой apt-get install python3.12 python3.12-venv xvfb ffmpeg).

Структура

f7-recording/
├── README.md
├── install.sh                            # скрипт установки (запуск: sudo ./install.sh)
├── scripts/
│   └── download-vendor.sh                  # скачать Firefox ESR и GeckoDriver в vendor/ (обновление репо)
├── vendor/                                 # Firefox ESR и GeckoDriver (скопированы с машины сборки)
│   ├── README.md
│   ├── firefox-esr/                        # каталог Firefox ESR — при деплое копируется в /opt/firefox-esr
│   └── geckodriver/geckodriver             # бинарь GeckoDriver — при деплое копируется в /usr/local/bin
├── systemd/
│   └── f7cloud-talk-recording.service
├── etc/
│   └── f7cloud-talk-recording/
│       └── server.conf.template
└── opt/
    ├── f7cloud-talk-recording-src/         # исходники пакета (editable install)
    └── f7cloud-talk-recording/
        ├── requirements.txt
        └── venv/                            # на цели venv создаётся заново

Развёртывание одной командой

На целевой машине (Debian/Ubuntu) скопируйте эту папку и выполните:

sudo ./install.sh

Скрипт проверяет наличие Python 3.12, xvfb и ffmpeg; если чего-то не хватает — выводит список недостающих пакетов и завершает установку с подсказкой, что их нужно доставить вручную. Firefox ESR и GeckoDriver скопирует из vendor/ в /opt/firefox-esr и /usr/local/bin; создаст пользователя и каталоги, разложит файлы, соберёт venv и включит systemd-сервис. Конфиг создаётся из шаблона; если не заданы переменные окружения (см. ниже), в конфиг попадут плейсхолдеры — их нужно заменить вручную в /etc/f7cloud-talk-recording/server.conf и затем запустить сервис.

Секреты и адреса (HPB и Nextcloud)

Задайте переменные окружения до запуска install.sh, чтобы конфиг заполнился автоматически:

Переменная Описание
F7CLOUD_NEXTCLOUD_URL URL сервера Nextcloud (например https://forbion.f7cloud.ru)
F7CLOUD_SECRET Общий секрет (backend + nextcloud)
F7CLOUD_TALK_URL URL signaling (HPB), например https://hpb-prod.f7cloud.ru/standalone-signaling
F7CLOUD_TALK_INTERNALSECRET internalsecret для доступа к signaling-серверу

Где какой секрет брать

Параметр Где взять
F7CLOUD_NEXTCLOUD_URL Публичный URL вашего сервера Nextcloud/F7cloud (тот же, что открывают в браузере), например https://forbion.f7cloud.ru. Без слэша в конце.
F7CLOUD_SECRET Общий секрет между Nextcloud и сервером записи. Задаётся в двух местах и должен совпадать: (1) в конфиге записи — секции [backend] и [nextcloud]; (2) в админке Nextcloud: Настройки → Talk → Recording backend — поле «Secret» (или «Секрет»). Можно сгенерировать: openssl rand -hex 32. Используется для проверки запросов от Talk к серверу записи.
F7CLOUD_TALK_URL URL signaling-сервера (HPB). Тот же URL, что указан в админке Talk для signaling (например https://hpb-prod.f7cloud.ru/standalone-signaling). Должен быть доступен с машины, где крутится сервер записи.
F7CLOUD_TALK_INTERNALSECRET Секрет между signaling (HPB) и сервером записи — это не тот же секрет, что для Nextcloud. Берётся из конфига signaling-сервера: параметр clients->internalsecret в файле конфигурации HPB (часто /etc/nextcloud-spreed-signaling/server.conf или аналог на вашем стенде). Значение должно быть одинаковым в конфиге HPB и в конфиге сервера записи. Если на HPB internalsecret не задан, запросы от сервера записи будут отклоняться.

Кратко: F7CLOUD_SECRET — в админке Talk (Recording backend) и в нашем конфиге; F7CLOUD_TALK_INTERNALSECRET — только в конфиге HPB и в нашем конфиге (в админке Talk его нет).

Пример:

export F7CLOUD_NEXTCLOUD_URL="https://forbion.f7cloud.ru"
export F7CLOUD_SECRET=аш_секрет_hex"
export F7CLOUD_TALK_URL="https://hpb-prod.f7cloud.ru/standalone-signaling"
export F7CLOUD_TALK_INTERNALSECRET=аш_internalsecret_hex"
sudo -E ./install.sh

Если переменные не заданы, после деплоя отредактируйте /etc/f7cloud-talk-recording/server.conf (замените строки F7CLOUD_* на нужные значения) и выполните:

systemctl start f7cloud-talk-recording.service

Что делает install.sh

  1. Ставит через apt только: Python 3.12, python3.12-venv, xvfb, ffmpeg (остальное — из репо).
  2. Копирует Firefox ESR и GeckoDriver из vendor/ в /opt/firefox-esr и /usr/local/bin (в репо они уже есть, скопированы с машины сборки).
  3. Создаёт пользователя и группу f7cloud-talk-recording, каталоги /var/lib/f7cloud-talk-recording и /var/lib/f7cloud-recordings.
  4. Копирует systemd unit в /etc/systemd/system/.
  5. Создаёт конфиг из server.conf.template в /etc/f7cloud-talk-recording/server.conf.
  6. Копирует исходники в /opt/f7cloud-talk-recording-src/, создаёт venv в /opt/f7cloud-talk-recording/venv и ставит зависимости.
  7. Включает сервис; при заданных секретах — сразу запускает его.

Firefox ESR и GeckoDriver уже включены в репо (скопированы с этой машины в vendor/). При клонировании репо на другой сервер и запуске install.sh они копируются на место без доступа в интернет. Обновить или заново положить их в репо — см. vendor/README.md.

Ручное развёртывание (без install.sh)

Если нужно развернуть вручную: установите Python 3.12, xvfb, ffmpeg; установите Firefox ESR и GeckoDriver из vendor/ или скачайте (см. vendor/README.md); создайте пользователя и каталоги (как в install.sh); скопируйте systemd/, etc/, opt/ в целевые пути; создайте venv; заполните конфиг из шаблона; выполните systemctl daemon-reload, systemctl enable f7cloud-talk-recording.service, systemctl start f7cloud-talk-recording.service.

Проверка

  • Логи: journalctl -u f7cloud-talk-recording.service -f
  • Конфиг: /etc/f7cloud-talk-recording/server.conf (пути браузера, ffmpeg, каталог записей при необходимости поправьте).