#!/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 ""