F7_HPB/INSTALL.md

242 lines
8.1 KiB
Markdown
Raw Permalink 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.

# Инструкция по установке 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>`
- Права доступа к файлам
- Открыты ли необходимые порты
- Правильность конфигурации