F7_recording/deploy.sh
F7cloud ec0a1b89c7 Add deployment script and auto-download dependencies
- Создан скрипт deploy.sh для автоматического развертывания на новом сервере
- Добавлена автоматическая загрузка Firefox ESR и Geckodriver в install.sh
- Добавлена поддержка переменных окружения для секретов
- Обновлена документация (DEPLOY.md, README.md)
- Скрипт deploy.sh поддерживает интерактивный ввод секретов
2026-02-18 11:43:00 +00:00

203 lines
5.7 KiB
Bash
Executable File
Raw 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.

#!/bin/bash
# Скрипт развертывания F7cloud Talk Recording Server на новом сервере
# Этот скрипт клонирует репозиторий и выполняет установку с интерактивным вводом секретов
#
# Использование:
# curl -fsSL https://git.f7cloud.ru/root/F7_recording/raw/branch/main/deploy.sh | bash
# или
# wget -qO- https://git.f7cloud.ru/root/F7_recording/raw/branch/main/deploy.sh | bash
set -e
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Функция для вывода сообщений
info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
error() {
echo -e "${RED}[ERROR]${NC} $1"
}
question() {
echo -e "${BLUE}[?]${NC} $1"
}
# Проверка прав root
if [ "$EUID" -ne 0 ]; then
error "Пожалуйста, запустите скрипт с правами root (sudo)"
exit 1
fi
info "=========================================="
info "Развертывание F7cloud Talk Recording Server"
info "=========================================="
echo ""
# Параметры по умолчанию
REPO_URL="https://git.f7cloud.ru/root/F7_recording.git"
INSTALL_DIR="/opt/f7cloud-talk-recording"
HPB_URL=""
HPB_SECRET=""
F7CLOUD_URL=""
F7CLOUD_SECRET=""
LISTEN_ADDRESS="127.0.0.1:8000"
AUTO_DOWNLOAD_DEPS=true
# Функция для безопасного ввода секрета
read_secret() {
local prompt="$1"
local var_name="$2"
local value
question "$prompt"
read -s value
echo ""
eval "$var_name='$value'"
}
# Функция для ввода URL
read_url() {
local prompt="$1"
local var_name="$2"
local default="$3"
local value
if [ -n "$default" ]; then
question "$prompt (по умолчанию: $default)"
else
question "$prompt"
fi
read value
if [ -z "$value" ] && [ -n "$default" ]; then
value="$default"
fi
eval "$var_name='$value'"
}
# Интерактивный ввод параметров
info "Настройка параметров установки..."
echo ""
# HPB URL
while [ -z "$HPB_URL" ]; do
read_url "Введите URL сервера HPB (signaling server)" HPB_URL
if [ -z "$HPB_URL" ]; then
error "URL HPB обязателен для ввода!"
fi
done
# HPB Secret
while [ -z "$HPB_SECRET" ]; do
read_secret "Введите секрет для подключения к HPB (internalsecret)" HPB_SECRET
if [ -z "$HPB_SECRET" ]; then
error "Секрет HPB обязателен для ввода!"
fi
done
echo ""
# F7cloud URL (опционально)
read_url "Введите URL сервера F7cloud (опционально, можно пропустить)" F7CLOUD_URL ""
# F7cloud Secret (если указан URL)
if [ -n "$F7CLOUD_URL" ]; then
while [ -z "$F7CLOUD_SECRET" ]; do
read_secret "Введите секрет для подключения к F7cloud" F7CLOUD_SECRET
if [ -z "$F7CLOUD_SECRET" ]; then
error "Секрет F7cloud обязателен, если указан URL!"
fi
done
fi
echo ""
# Listen address
read_url "Введите адрес и порт для прослушивания" LISTEN_ADDRESS "127.0.0.1:8000"
echo ""
info "Параметры установки:"
info " HPB URL: $HPB_URL"
info " Listen: $LISTEN_ADDRESS"
if [ -n "$F7CLOUD_URL" ]; then
info " F7cloud URL: $F7CLOUD_URL"
fi
echo ""
# Подтверждение
question "Продолжить установку? (y/n)"
read -r confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
info "Установка отменена"
exit 0
fi
# Клонирование репозитория
info "Клонирование репозитория..."
if [ -d "$INSTALL_DIR" ]; then
warn "Директория $INSTALL_DIR уже существует"
question "Удалить существующую директорию и продолжить? (y/n)"
read -r confirm
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
rm -rf "$INSTALL_DIR"
else
error "Установка отменена"
exit 1
fi
fi
# Проверка наличия git
if ! command -v git &> /dev/null; then
info "Установка git..."
if command -v apt-get &> /dev/null; then
apt-get update -qq
apt-get install -y git
elif command -v yum &> /dev/null; then
yum install -y git
else
error "Не удалось установить git. Установите его вручную."
exit 1
fi
fi
git clone "$REPO_URL" "$INSTALL_DIR"
cd "$INSTALL_DIR"
# Запуск скрипта установки
info "Запуск скрипта установки..."
INSTALL_CMD="./install.sh --hpb-url \"$HPB_URL\" --hpb-secret \"$HPB_SECRET\" --listen \"$LISTEN_ADDRESS\""
if [ -n "$F7CLOUD_URL" ] && [ -n "$F7CLOUD_SECRET" ]; then
INSTALL_CMD="$INSTALL_CMD --f7cloud-url \"$F7CLOUD_URL\" --f7cloud-secret \"$F7CLOUD_SECRET\""
fi
eval "$INSTALL_CMD"
info ""
info "=========================================="
info "Развертывание завершено успешно!"
info "=========================================="
info ""
info "Сервер установлен в: $INSTALL_DIR"
info ""
info "Для запуска сервиса выполните:"
info " sudo systemctl start f7cloud-talk-recording"
info " sudo systemctl enable f7cloud-talk-recording"
info ""
info "Для проверки статуса:"
info " sudo systemctl status f7cloud-talk-recording"
info ""