F7_recording/README.md

97 lines
9.0 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 — сборка для развёртывания
В репозитории собраны **все компоненты для работы сервиса, кроме системных пакетов Python**. Firefox ESR и GeckoDriver скопированы с машины сборки в `vendor/` и при развёртывании на другом сервере просто копируются из репо в `/opt/firefox-esr` и `/usr/local/bin/geckodriver`. Пакеты **xvfb** и **ffmpeg** также включены в репозиторий в виде `.deb` (для Debian/Ubuntu) и при установке, при их отсутствии в системе, ставятся скриптом `install.sh` из `vendor/debs/` через `dpkg -i` (без доступа к внешним репозиториям). А вот **python3.12** и **python3.12-venv** ставятся через `apt-get` на целевой машине (если их ещё нет).
## Структура
```
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) скопируйте эту папку и выполните:
```bash
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 его нет).
Пример:
```bash
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_*` на нужные значения) и выполните:
```bash
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, каталог записей при необходимости поправьте).