- Переименовано Nextcloud на F7cloud - Добавлены зависимости Firefox ESR и Geckodriver - Создан скрипт установки с поддержкой параметров HPB - Добавлена документация и инструкции по установке Co-authored-by: Cursor <cursoragent@cursor.com>
289 lines
8.7 KiB
Markdown
289 lines
8.7 KiB
Markdown
# Инструкция по установке 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 ./install.sh --hpb-url https://hpb.example.com --hpb-secret your-hpb-secret-here
|
||
```
|
||
|
||
**Обязательные параметры:**
|
||
- `--hpb-url` - URL сервера HPB (signaling server)
|
||
- `--hpb-secret` - Секрет для подключения к HPB (internalsecret)
|
||
|
||
**Опциональные параметры:**
|
||
- `--f7cloud-url` - URL сервера F7cloud
|
||
- `--f7cloud-secret` - Секрет для подключения к F7cloud
|
||
- `--listen` - Адрес и порт для прослушивания (по умолчанию: `127.0.0.1:8000`)
|
||
|
||
**Пример полной установки:**
|
||
|
||
```bash
|
||
sudo ./install.sh \
|
||
--hpb-url https://hpb.example.com \
|
||
--hpb-secret your-hpb-secret-here \
|
||
--f7cloud-url https://f7cloud.example.com \
|
||
--f7cloud-secret your-f7cloud-secret-here \
|
||
--listen 127.0.0.1:8000
|
||
```
|
||
|
||
**Просмотр справки:**
|
||
|
||
```bash
|
||
sudo ./install.sh --help
|
||
```
|
||
|
||
Скрипт выполнит:
|
||
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` согласно вашим настройкам.
|
||
|
||
**Примечание:** При использовании скрипта `install.sh` с параметрами `--hpb-url` и `--hpb-secret`, конфигурация будет настроена автоматически. Вам нужно будет только добавить секцию для 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 проекта
|
||
├── install.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`.
|