86 lines
6.2 KiB
Markdown
86 lines
6.2 KiB
Markdown
# F7cloud Talk Recording — сборка для развёртывания
|
||
|
||
В репозитории собраны **все компоненты для работы сервиса, кроме Python**. Firefox ESR и GeckoDriver скопированы с машины сборки в `vendor/` и при развёртывании на другом сервере просто копируются из репо в `/opt/firefox-esr` и `/usr/local/bin/geckodriver`. Python, xvfb и ffmpeg на целевой машине ставятся через apt в install.
|
||
|
||
## Структура
|
||
|
||
```
|
||
f7-recording/
|
||
├── README.md
|
||
├── install # скрипт установки (запуск: sudo ./install)
|
||
├── 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
|
||
```
|
||
|
||
Скрипт установит через apt только 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`, чтобы конфиг заполнился автоматически:
|
||
|
||
| Переменная | Описание |
|
||
|------------|----------|
|
||
| `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-серверу |
|
||
|
||
Пример:
|
||
|
||
```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
|
||
```
|
||
|
||
Если переменные не заданы, после деплоя отредактируйте `/etc/f7cloud-talk-recording/server.conf` (замените строки `F7CLOUD_*` на нужные значения) и выполните:
|
||
|
||
```bash
|
||
systemctl start f7cloud-talk-recording.service
|
||
```
|
||
|
||
## Что делает install
|
||
|
||
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 они копируются на место без доступа в интернет. Обновить или заново положить их в репо — см. `vendor/README.md`.
|
||
|
||
### Ручное развёртывание (без install)
|
||
|
||
Если нужно развернуть вручную: установите Python 3.12, xvfb, ffmpeg; установите Firefox ESR и GeckoDriver из `vendor/` или скачайте (см. `vendor/README.md`); создайте пользователя и каталоги (как в install); скопируйте `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, каталог записей при необходимости поправьте).
|