Выгрузка F7cloud_HPB: модернизация install.sh - поддержка переменных окружения и файла секретов

This commit is contained in:
root 2026-02-20 09:41:21 +00:00
parent 81f7f4af95
commit 37a4ddd26d
2 changed files with 80 additions and 15 deletions

View File

@ -17,6 +17,8 @@
### Автоматическая установка ### Автоматическая установка
#### Вариант 1: Автогенерация секретов (по умолчанию)
```bash ```bash
# Клонируйте репозиторий # Клонируйте репозиторий
git clone https://git.f7cloud.ru/root/F7_HPB.git /tmp/f7cloud-hpb git clone https://git.f7cloud.ru/root/F7_HPB.git /tmp/f7cloud-hpb
@ -34,6 +36,48 @@ sudo ./install.sh
- ✅ Настраивает systemd unit файлы - ✅ Настраивает systemd unit файлы
- ✅ Сохраняет секреты в `/etc/f7cloud-spreed-signaling/.secrets.txt` - ✅ Сохраняет секреты в `/etc/f7cloud-spreed-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. Автогенерация (если ничего не задано)
### После установки ### После установки
**ВАЖНО: Обязательно отредактируйте конфиги перед запуском!** **ВАЖНО: Обязательно отредактируйте конфиги перед запуском!**

View File

@ -52,22 +52,39 @@ generate_base64() {
# Генерация всех секретов # Генерация всех секретов
generate_secrets() { generate_secrets() {
log_info "Генерация секретов..." log_info "Проверка секретов..."
# Signaling server секреты # Проверяем переменные окружения или файл с секретами
SIGNALING_HASHKEY=$(generate_hex 32) # 32 байта = 64 hex символа if [ -f "/tmp/hpb-secrets.env" ]; then
SIGNALING_BLOCKKEY=$(generate_hex 16) # 16 байт = 32 hex символа log_info "Загрузка секретов из /tmp/hpb-secrets.env..."
SIGNALING_INTERNAL_SECRET=$(generate_hex 32) # 64 hex символа source /tmp/hpb-secrets.env
SIGNALING_BACKEND_SECRET=$(generate_hex 32) # 64 hex символа
# TURN секрет (должен совпадать в signaling и turnserver) # Используем секреты из файла, если они заданы
TURN_SECRET=$(generate_hex 32) # 64 hex символа SIGNALING_HASHKEY=${HPB_HASHKEY:-${SIGNALING_HASHKEY:-$(generate_hex 32)}}
TURN_API_KEY=$(generate_base64 16) # ~16 символов base64 SIGNALING_BLOCKKEY=${HPB_BLOCKKEY:-${SIGNALING_BLOCKKEY:-$(generate_hex 16)}}
SIGNALING_INTERNAL_SECRET=${HPB_INTERNAL_SECRET:-${SIGNALING_INTERNAL_SECRET:-$(generate_hex 32)}}
SIGNALING_BACKEND_SECRET=${HPB_BACKEND_SECRET:-${SIGNALING_BACKEND_SECRET:-$(generate_hex 32)}}
TURN_SECRET=${TURN_SECRET:-$(generate_hex 32)}
TURN_API_KEY=${TURN_API_KEY:-$(generate_base64 16)}
JANUS_ADMIN_SECRET=${JANUS_ADMIN_SECRET:-$(generate_base64 16)}
# Janus admin secret log_info "Секреты загружены из файла"
JANUS_ADMIN_SECRET=$(generate_base64 16) # ~16 символов else
# Проверяем переменные окружения
SIGNALING_HASHKEY=${HPB_HASHKEY:-$(generate_hex 32)}
SIGNALING_BLOCKKEY=${HPB_BLOCKKEY:-$(generate_hex 16)}
SIGNALING_INTERNAL_SECRET=${HPB_INTERNAL_SECRET:-$(generate_hex 32)}
SIGNALING_BACKEND_SECRET=${HPB_BACKEND_SECRET:-$(generate_hex 32)}
TURN_SECRET=${TURN_SECRET:-$(generate_hex 32)}
TURN_API_KEY=${TURN_API_KEY:-$(generate_base64 16)}
JANUS_ADMIN_SECRET=${JANUS_ADMIN_SECRET:-$(generate_base64 16)}
log_info "Секреты сгенерированы" if [ -n "${HPB_HASHKEY:-}" ] || [ -n "${HPB_BLOCKKEY:-}" ] || [ -n "${HPB_INTERNAL_SECRET:-}" ]; then
log_info "Секреты загружены из переменных окружения"
else
log_info "Секреты сгенерированы автоматически"
fi
fi
} }
# Создание пользователей системы # Создание пользователей системы
@ -164,12 +181,16 @@ install_configs() {
# Signaling server.conf # Signaling server.conf
if [[ -f "$SCRIPT_DIR/server.conf.example" ]]; then if [[ -f "$SCRIPT_DIR/server.conf.example" ]]; then
# Определяем URL Nextcloud из переменной окружения или используем плейсхолдер
NEXTCLOUD_URL=${F7CLOUD_URL:-${NEXTCLOUD_URL:-"https://your-nextcloud.example"}}
sed -e "s|YOUR_32_OR_64_BYTE_HEX_HASHKEY|$SIGNALING_HASHKEY|g" \ sed -e "s|YOUR_32_OR_64_BYTE_HEX_HASHKEY|$SIGNALING_HASHKEY|g" \
-e "s|YOUR_16_24_OR_32_BYTE_HEX_BLOCKKEY|$SIGNALING_BLOCKKEY|g" \ -e "s|YOUR_16_24_OR_32_BYTE_HEX_BLOCKKEY|$SIGNALING_BLOCKKEY|g" \
-e "s|YOUR_INTERNAL_CLIENT_SECRET|$SIGNALING_INTERNAL_SECRET|g" \ -e "s|YOUR_INTERNAL_CLIENT_SECRET|$SIGNALING_INTERNAL_SECRET|g" \
-e "s|YOUR_NEXTCLOUD_BACKEND_SECRET|$SIGNALING_BACKEND_SECRET|g" \ -e "s|YOUR_NEXTCLOUD_BACKEND_SECRET|$SIGNALING_BACKEND_SECRET|g" \
-e "s|YOUR_TURN_API_KEY|$TURN_API_KEY|g" \ -e "s|YOUR_TURN_API_KEY|$TURN_API_KEY|g" \
-e "s|YOUR_TURN_SHARED_SECRET|$TURN_SECRET|g" \ -e "s|YOUR_TURN_SHARED_SECRET|$TURN_SECRET|g" \
-e "s|https://your-nextcloud.example|$NEXTCLOUD_URL|g" \
"$SCRIPT_DIR/server.conf.example" > "$INSTALL_DIR/server.conf" "$SCRIPT_DIR/server.conf.example" > "$INSTALL_DIR/server.conf"
chmod 600 "$INSTALL_DIR/server.conf" chmod 600 "$INSTALL_DIR/server.conf"
chown _signaling:_signaling "$INSTALL_DIR/server.conf" chown _signaling:_signaling "$INSTALL_DIR/server.conf"