- Создан скрипт deploy.sh для автоматического развертывания на новом сервере - Добавлена автоматическая загрузка Firefox ESR и Geckodriver в install.sh - Добавлена поддержка переменных окружения для секретов - Обновлена документация (DEPLOY.md, README.md) - Скрипт deploy.sh поддерживает интерактивный ввод секретов
203 lines
5.7 KiB
Bash
Executable File
203 lines
5.7 KiB
Bash
Executable File
#!/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 ""
|