242 lines
8.1 KiB
Markdown
242 lines
8.1 KiB
Markdown
# Инструкция по установке HPB - Nextcloud Spreed Signaling Stack
|
||
|
||
Этот репозиторий содержит все необходимое для развертывания стека Nextcloud Talk на новом сервере.
|
||
|
||
## Быстрая установка
|
||
|
||
### Требования
|
||
|
||
- Linux (Debian/Ubuntu рекомендуется)
|
||
- Root доступ
|
||
- Открытые порты:
|
||
- 8080 (signaling HTTP, можно изменить)
|
||
- 8188 (Janus WebSocket)
|
||
- 4222 (NATS)
|
||
- 3478/5349 (coTURN UDP/TCP/TLS)
|
||
- 9991 (coTURN для signaling, можно изменить)
|
||
|
||
### Автоматическая установка
|
||
|
||
#### Вариант 1: Автогенерация секретов (по умолчанию)
|
||
|
||
```bash
|
||
# Клонируйте репозиторий
|
||
git clone https://git.f7cloud.ru/root/F7_HPB.git /tmp/f7cloud-hpb
|
||
cd /tmp/f7cloud-hpb
|
||
|
||
# Запустите скрипт установки (от root)
|
||
sudo ./install.sh
|
||
```
|
||
|
||
Скрипт автоматически:
|
||
- ✅ Генерирует все необходимые секреты
|
||
- ✅ Создает системных пользователей
|
||
- ✅ Устанавливает бинарники в `/usr/bin` и `/usr/sbin`
|
||
- ✅ Копирует конфиги с подстановкой секретов
|
||
- ✅ Настраивает systemd unit файлы
|
||
- ✅ Сохраняет секреты в `/etc/f7cloud-talk-signaling/.secrets.txt`
|
||
|
||
#### Вариант 2: Использование переменных окружения
|
||
|
||
Если нужно использовать существующие секреты (например, при миграции или синхронизации между серверами):
|
||
|
||
```bash
|
||
export HPB_HASHKEY="your_64_char_hex_string"
|
||
export HPB_BLOCKKEY="your_32_char_hex_string"
|
||
export HPB_INTERNAL_SECRET="your_64_char_hex_string"
|
||
export HPB_BACKEND_SECRET="your_64_char_hex_string"
|
||
export TURN_SECRET="your_64_char_hex_string"
|
||
export TURN_API_KEY="your_base64_string"
|
||
export JANUS_ADMIN_SECRET="your_base64_string"
|
||
export F7CLOUD_URL="https://cloud.example.com"
|
||
|
||
sudo ./install.sh
|
||
```
|
||
|
||
#### Вариант 3: Использование файла секретов
|
||
|
||
Создайте файл `/tmp/hpb-secrets.env`:
|
||
|
||
```bash
|
||
cat > /tmp/hpb-secrets.env <<EOF
|
||
HPB_HASHKEY="your_64_char_hex_string"
|
||
HPB_BLOCKKEY="your_32_char_hex_string"
|
||
HPB_INTERNAL_SECRET="your_64_char_hex_string"
|
||
HPB_BACKEND_SECRET="your_64_char_hex_string"
|
||
TURN_SECRET="your_64_char_hex_string"
|
||
TURN_API_KEY="your_base64_string"
|
||
JANUS_ADMIN_SECRET="your_base64_string"
|
||
F7CLOUD_URL="https://cloud.example.com"
|
||
EOF
|
||
|
||
chmod 600 /tmp/hpb-secrets.env
|
||
sudo ./install.sh
|
||
```
|
||
|
||
**Приоритет загрузки секретов:**
|
||
1. Файл `/tmp/hpb-secrets.env` (наивысший приоритет)
|
||
2. Переменные окружения
|
||
3. Автогенерация (если ничего не задано)
|
||
|
||
### После установки
|
||
|
||
**ВАЖНО: Обязательно отредактируйте конфиги перед запуском!**
|
||
|
||
1. **Signaling server** (`/etc/f7cloud-talk-signaling/server.conf`):
|
||
```bash
|
||
nano /etc/f7cloud-talk-signaling/server.conf
|
||
```
|
||
- Укажите реальные URL бэкендов Nextcloud в секции `[nextcloud-backend-0]`
|
||
- Проверьте секреты (они уже сгенерированы)
|
||
|
||
2. **coTURN** (`/etc/turnserver.conf`):
|
||
```bash
|
||
nano /etc/turnserver.conf
|
||
```
|
||
- Укажите реальные IP адреса в `listening-ip` и `relay-ip`
|
||
- Укажите `realm` (домен вашего сервера)
|
||
- Укажите пути к TLS сертификатам (если используете HTTPS)
|
||
|
||
3. **Janus** (`/etc/janus/janus.jcfg`):
|
||
- Проверьте пути к плагинам и транспортам
|
||
- Admin secret уже сгенерирован
|
||
|
||
### Запуск сервисов
|
||
|
||
```bash
|
||
# Включить автозапуск
|
||
sudo systemctl enable signaling janus nats-server coturn
|
||
|
||
# Запустить сервисы
|
||
sudo systemctl start signaling janus nats-server coturn
|
||
|
||
# Проверить статус
|
||
sudo systemctl status signaling janus nats-server coturn
|
||
```
|
||
|
||
### Проверка работы
|
||
|
||
```bash
|
||
# Логи signaling
|
||
sudo journalctl -u signaling -f
|
||
|
||
# Логи janus
|
||
sudo journalctl -u janus -f
|
||
|
||
# Логи NATS
|
||
sudo journalctl -u nats-server -f
|
||
|
||
# Логи coTURN
|
||
sudo journalctl -u coturn -f
|
||
```
|
||
|
||
## Структура установки
|
||
|
||
После установки файлы будут находиться:
|
||
|
||
```
|
||
/usr/bin/
|
||
├── signaling # Signaling server
|
||
├── janus # Janus WebRTC Gateway
|
||
└── turnserver # coTURN TURN server
|
||
|
||
/usr/sbin/
|
||
└── nats-server # NATS Server
|
||
|
||
/usr/lib/x86_64-linux-gnu/janus/
|
||
├── plugins/ # Janus плагины
|
||
├── transports/ # Janus транспорты
|
||
├── events/ # Janus event handlers
|
||
└── loggers/ # Janus loggers
|
||
|
||
/etc/f7cloud-talk-signaling/
|
||
├── server.conf # Конфиг signaling (с секретами!)
|
||
└── .secrets.txt # Сохраненные секреты
|
||
|
||
/etc/janus/ # Конфиги Janus
|
||
|
||
/etc/turnserver.conf # Конфиг coTURN
|
||
|
||
/etc/nats-server.conf # Конфиг NATS
|
||
|
||
/etc/systemd/system/
|
||
├── signaling.service
|
||
├── janus.service
|
||
├── nats-server.service
|
||
└── coturn.service
|
||
```
|
||
|
||
## Секреты
|
||
|
||
Все секреты автоматически генерируются при установке и сохраняются в:
|
||
```
|
||
/etc/f7cloud-talk-signaling/.secrets.txt
|
||
```
|
||
|
||
**ВАЖНО:** Сохраните этот файл в безопасном месте! Он понадобится для:
|
||
- Настройки Nextcloud (backend secret)
|
||
- Восстановления конфигурации
|
||
- Синхронизации секретов между серверами
|
||
|
||
## Ручная установка
|
||
|
||
Если автоматический скрипт не подходит, можно установить вручную:
|
||
|
||
1. Скопируйте бинарники из `overlay/usr/bin/` и `overlay/usr/sbin/` в `/usr/bin/` и `/usr/sbin/`
|
||
2. Скопируйте конфиги из `config/` и `systemd/`
|
||
3. Сгенерируйте секреты вручную:
|
||
```bash
|
||
# Генерация hex секрета (64 символа)
|
||
openssl rand -hex 32
|
||
|
||
# Генерация base64 секрета
|
||
openssl rand -base64 16
|
||
```
|
||
4. Подставьте секреты в конфиги
|
||
5. Создайте пользователей и настройте права доступа
|
||
6. Установите systemd unit файлы
|
||
|
||
## Обновление
|
||
|
||
Для обновления:
|
||
|
||
```bash
|
||
# Остановите сервисы
|
||
sudo systemctl stop signaling janus nats-server coturn
|
||
|
||
# Обновите бинарники из репозитория
|
||
git pull
|
||
sudo cp overlay/usr/bin/signaling overlay/usr/bin/turnserver /usr/bin/
|
||
sudo cp overlay/usr/sbin/nats-server /usr/sbin/
|
||
|
||
# Перезапустите сервисы
|
||
sudo systemctl start signaling janus nats-server coturn
|
||
```
|
||
|
||
## Удаление
|
||
|
||
```bash
|
||
# Остановите и отключите сервисы
|
||
sudo systemctl stop signaling janus nats-server coturn
|
||
sudo systemctl disable signaling janus nats-server coturn
|
||
|
||
# Удалите файлы
|
||
sudo rm -rf /etc/f7cloud-spreed-signaling
|
||
sudo rm -f /usr/bin/signaling /usr/bin/janus /usr/bin/turnserver
|
||
sudo rm -f /usr/sbin/nats-server
|
||
sudo rm -rf /usr/lib/x86_64-linux-gnu/janus
|
||
sudo rm -f /etc/systemd/system/{signaling,janus,nats-server,coturn}.service
|
||
sudo systemctl daemon-reload
|
||
|
||
# Удалите пользователей (опционально)
|
||
sudo userdel _signaling nats turnserver
|
||
```
|
||
|
||
## Поддержка
|
||
|
||
При возникновении проблем проверьте:
|
||
- Логи сервисов: `journalctl -u <service-name>`
|
||
- Права доступа к файлам
|
||
- Открыты ли необходимые порты
|
||
- Правильность конфигурации
|