f7hpb: конфиг в /etc/f7cloud-talk-signaling, overlay server.conf, LF line endings (.gitattributes), fix CRLF
This commit is contained in:
parent
52a0d58510
commit
7a1d7c73da
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
* text=auto
|
||||
*.sh text eol=lf
|
||||
345
f7hpb.sh
345
f7hpb.sh
|
|
@ -1,171 +1,174 @@
|
|||
#!/bin/bash
|
||||
# Установка F7_HPB (signaling, конфиг, systemd). Запускается на сервере HPB.
|
||||
# Использование: ./f7hpb.sh [/path/to/f7cloud-install.env]
|
||||
# Переменные можно передать через env-файл или ввести в диалоге, если не заданы.
|
||||
|
||||
set -e
|
||||
ROLE="f7hpb"
|
||||
ERROR_LOG="/tmp/install-error-${ROLE}.log"
|
||||
|
||||
log_error() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: $*" >> "$ERROR_LOG"; echo "ERROR: $*" >&2; }
|
||||
log_warn() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARN: $*" >> "$ERROR_LOG"; echo "WARN: $*" >&2; }
|
||||
|
||||
# Два режима: если переменная передана (не пустая) — использовать; иначе — запросить ввод.
|
||||
# Использование: get_var ИМЯ_ПЕРЕМЕННОЙ "Подсказка для пользователя"
|
||||
get_var() {
|
||||
local name="$1"
|
||||
local prompt="$2"
|
||||
local val="${!name}"
|
||||
if [ -z "$val" ]; then
|
||||
read -rp "$prompt: " val
|
||||
[ -z "$val" ] && { log_error "Переменная $name не задана."; exit 1; }
|
||||
printf -v "$name" '%s' "$val"
|
||||
fi
|
||||
}
|
||||
# Опциональная переменная: запрос с возможностью оставить пустым
|
||||
get_var_optional() {
|
||||
local name="$1"
|
||||
local prompt="$2"
|
||||
local val="${!name}"
|
||||
if [ -z "$val" ]; then
|
||||
read -rp "$prompt: " val
|
||||
printf -v "$name" '%s' "$val"
|
||||
fi
|
||||
}
|
||||
|
||||
# Путь к env-файлу: аргумент скрипта или запрос
|
||||
ENV_FILE="${1:-}"
|
||||
get_var ENV_FILE "Путь к файлу конфигурации (например /path/to/f7cloud-install.env)"
|
||||
|
||||
if [ ! -f "$ENV_FILE" ]; then
|
||||
log_error "Файл конфигурации не найден: $ENV_FILE"
|
||||
exit 1
|
||||
fi
|
||||
# shellcheck source=/dev/null
|
||||
set -a && source "$ENV_FILE" && set +a
|
||||
|
||||
# Переменные из env или диалог, если не переданы
|
||||
get_var HPB_HASHKEY "HPB hashkey"
|
||||
get_var HPB_BLOCKKEY "HPB blockkey"
|
||||
get_var HPB_INTERNAL_SECRET "HPB internal_secret"
|
||||
get_var HPB_BACKEND_SECRET "HPB backend secret"
|
||||
get_var F7CLOUD_URL "URL F7 Cloud (например https://cloud.example.com)"
|
||||
HPB_DOMAIN="${F7CLOUD_URL}"
|
||||
get_var STATIC_AUTH_SECRET "TURN static-auth-secret (источник уточняется)"
|
||||
# TURN REST API key для Janus (пока не задан, позже — из конфига coturn)
|
||||
get_var_optional TURN_REST_API_KEY "TURN REST API key для Janus (Enter — пропустить)"
|
||||
|
||||
> "$ERROR_LOG"
|
||||
echo "=== Лог установки F7_HPB ===" >> "$ERROR_LOG"
|
||||
echo "Начало: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG"
|
||||
|
||||
if ! command -v git >/dev/null 2>&1; then
|
||||
echo "Установка git..."
|
||||
apt-get update -qq && apt-get install -y git || { log_error "Не удалось установить git"; exit 1; }
|
||||
fi
|
||||
|
||||
rm -rf /tmp/F7_HPB
|
||||
echo "Клонирование репозитория F7_HPB..."
|
||||
if ! (cd /tmp && git clone https://git.f7cloud.ru/root/F7_HPB.git); then
|
||||
log_error "Не удалось клонировать репозиторий F7_HPB"
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
if ! [ -d /tmp/F7_HPB ]; then
|
||||
log_error "Директория /tmp/F7_HPB не существует после клонирования"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Секреты должны быть в env (переданы из главного скрипта)
|
||||
if [ -f /tmp/hpb-secrets.env ]; then
|
||||
# shellcheck source=/dev/null
|
||||
set -a && source /tmp/hpb-secrets.env && set +a
|
||||
fi
|
||||
|
||||
R=/tmp/F7_HPB
|
||||
mkdir -p /etc/f7cloud-spreed-signaling
|
||||
|
||||
if [ -f "$R/server.conf.example" ]; then
|
||||
cp "$R/server.conf.example" /etc/f7cloud-spreed-signaling/server.conf
|
||||
sed -i "s|hashkey = .*|hashkey = \"${HPB_HASHKEY}\"|i" /etc/f7cloud-spreed-signaling/server.conf
|
||||
sed -i "s|blockkey = .*|blockkey = \"${HPB_BLOCKKEY}\"|i" /etc/f7cloud-spreed-signaling/server.conf
|
||||
sed -i "s|internalsecret = .*|internalsecret = \"${HPB_INTERNAL_SECRET}\"|i" /etc/f7cloud-spreed-signaling/server.conf
|
||||
sed -i "s|secret = YOUR_NEXTCLOUD_BACKEND_SECRET|secret = \"${HPB_BACKEND_SECRET}\"|g" /etc/f7cloud-spreed-signaling/server.conf
|
||||
sed -i "s|url = https://[^ ]*|url = ${F7CLOUD_URL}|" /etc/f7cloud-spreed-signaling/server.conf
|
||||
# [turn]: apikey, secret, servers — из переменных, ключи не теряются
|
||||
REALM="${F7CLOUD_URL#*://}"; REALM="${REALM%%/*}"; REALM="${REALM%%:*}"
|
||||
[ -n "$TURN_REST_API_KEY" ] && sed -i "s|apikey = YOUR_TURN_API_KEY|apikey = ${TURN_REST_API_KEY}|" /etc/f7cloud-spreed-signaling/server.conf
|
||||
[ -n "$STATIC_AUTH_SECRET" ] && sed -i "s|secret = YOUR_TURN_SHARED_SECRET|secret = ${STATIC_AUTH_SECRET}|" /etc/f7cloud-spreed-signaling/server.conf
|
||||
[ -n "$REALM" ] && sed -i "s|servers = turn:.*|servers = turn:${REALM}:9991?transport=udp,turn:${REALM}:9991?transport=tcp|" /etc/f7cloud-spreed-signaling/server.conf
|
||||
fi
|
||||
|
||||
# Бинарник signaling только из overlay (signaling-server убран как дубликат)
|
||||
if [ -f "$R/overlay/usr/bin/signaling" ]; then
|
||||
cp "$R/overlay/usr/bin/signaling" /usr/bin/ && chmod +x /usr/bin/signaling
|
||||
else
|
||||
log_error "Бинарник signaling не найден: $R/overlay/usr/bin/signaling"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Юниты: coturn, nats-server, janus, signaling
|
||||
find "$R" -name "*.service" -exec cp {} /etc/systemd/system/ \;
|
||||
|
||||
# Overlay: файлы и каталоги из репозитория на те же пути в системе
|
||||
if [ -d "$R/overlay" ]; then
|
||||
echo "Установка overlay (nats, janus, coturn, бинарники)..."
|
||||
REALM="${F7CLOUD_URL#*://}"; REALM="${REALM%%/*}"; REALM="${REALM%%:*}"
|
||||
[ -f "$R/overlay/etc/nats-server.conf" ] && cp "$R/overlay/etc/nats-server.conf" /etc/
|
||||
[ -d "$R/overlay/etc/janus" ] && cp -a "$R/overlay/etc/janus" /etc/
|
||||
# janus.jcfg: stun_server = домен, turn_rest_api_key = переменная (пока пусто)
|
||||
if [ -f /etc/janus/janus.jcfg ] && [ -n "$REALM" ]; then
|
||||
sed -i "s|stun_server = \".*\"|stun_server = \"$REALM\"|" /etc/janus/janus.jcfg
|
||||
fi
|
||||
[ -n "$TURN_REST_API_KEY" ] && [ -f /etc/janus/janus.jcfg ] && sed -i "s|turn_rest_api_key = \".*\"|turn_rest_api_key = \"$TURN_REST_API_KEY\"|" /etc/janus/janus.jcfg
|
||||
[ -d "$R/overlay/etc/coturn" ] && cp -a "$R/overlay/etc/coturn" /etc/
|
||||
[ -f "$R/overlay/etc/turnserver.conf" ] && cp "$R/overlay/etc/turnserver.conf" /etc/
|
||||
# Библиотеки и плагины Janus
|
||||
if [ -d "$R/overlay/usr/lib/x86_64-linux-gnu/janus" ]; then
|
||||
mkdir -p /usr/lib/x86_64-linux-gnu
|
||||
cp -a "$R/overlay/usr/lib/x86_64-linux-gnu/janus" /usr/lib/x86_64-linux-gnu/
|
||||
fi
|
||||
# Подстановка в turnserver.conf: реальный IP, realm (домен), static-auth-secret
|
||||
if [ -f /etc/turnserver.conf ]; then
|
||||
REAL_IP=$(hostname -I 2>/dev/null | awk '{print $1}')
|
||||
[ -z "$REAL_IP" ] && REAL_IP=$(ip -4 route get 8.8.8.8 2>/dev/null | grep -oP 'src \K[^ ]+' || true)
|
||||
[ -n "$REAL_IP" ] && sed -i "s|listening-ip=192.168.70.81|listening-ip=$REAL_IP|g" /etc/turnserver.conf && sed -i "s|relay-ip=192.168.70.81|relay-ip=$REAL_IP|g" /etc/turnserver.conf
|
||||
[ -n "$REALM" ] && sed -i "s|^realm=.*|realm=$REALM|" /etc/turnserver.conf
|
||||
[ -n "$STATIC_AUTH_SECRET" ] && sed -i "s|^static-auth-secret=.*|static-auth-secret=$STATIC_AUTH_SECRET|" /etc/turnserver.conf
|
||||
fi
|
||||
[ -f "$R/overlay/usr/sbin/nats-server" ] && cp "$R/overlay/usr/sbin/nats-server" /usr/sbin/ && chmod +x /usr/sbin/nats-server
|
||||
[ -f "$R/overlay/usr/bin/janus" ] && cp "$R/overlay/usr/bin/janus" /usr/bin/ && chmod +x /usr/bin/janus
|
||||
[ -f "$R/overlay/usr/bin/turnserver" ] && cp "$R/overlay/usr/bin/turnserver" /usr/bin/ && chmod +x /usr/bin/turnserver
|
||||
[ -f "$R/overlay/usr/bin/signaling" ] && cp "$R/overlay/usr/bin/signaling" /usr/bin/ && chmod +x /usr/bin/signaling
|
||||
# Права для coturn: пользователь turnserver, каталоги 750
|
||||
if [ -d /etc/coturn ] || [ -f /etc/turnserver.conf ]; then
|
||||
getent passwd turnserver >/dev/null 2>&1 || (useradd -r -s /usr/sbin/nologin turnserver 2>/dev/null || true)
|
||||
[ -f /etc/turnserver.conf ] && chown turnserver:turnserver /etc/turnserver.conf && chmod 640 /etc/turnserver.conf
|
||||
if [ -d /etc/coturn ]; then
|
||||
chown -R turnserver:turnserver /etc/coturn
|
||||
find /etc/coturn -type d -exec chmod 750 {} \;
|
||||
find /etc/coturn -type f -exec chmod 640 {} \;
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Пользователи для служб (если ещё не созданы)
|
||||
getent passwd nats >/dev/null 2>&1 || (useradd -r -s /usr/sbin/nologin nats 2>/dev/null || true)
|
||||
getent passwd _signaling >/dev/null 2>&1 || (useradd -r -s /usr/sbin/nologin _signaling 2>/dev/null || true)
|
||||
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
# Включить и запустить службы
|
||||
for svc in coturn nats-server janus signaling; do
|
||||
systemctl enable "$svc" 2>/dev/null || true
|
||||
systemctl start "$svc" 2>/dev/null || true
|
||||
done
|
||||
# Совместимость со старыми именами
|
||||
systemctl enable f7cloud-spreed-signaling 2>/dev/null || systemctl enable signaling 2>/dev/null || true
|
||||
systemctl start f7cloud-spreed-signaling 2>/dev/null || systemctl start signaling 2>/dev/null || true
|
||||
|
||||
echo "Конец: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG"
|
||||
echo "F7_HPB установлен. Лог ошибок: $ERROR_LOG"
|
||||
exit 0
|
||||
#!/bin/bash
|
||||
# Установка F7_HPB (signaling, конфиг, systemd). Запускается на сервере HPB.
|
||||
# Использование: ./f7hpb.sh [/path/to/f7cloud-install.env]
|
||||
# Переменные можно передать через env-файл или ввести в диалоге, если не заданы.
|
||||
|
||||
set -e
|
||||
ROLE="f7hpb"
|
||||
ERROR_LOG="/tmp/install-error-${ROLE}.log"
|
||||
|
||||
log_error() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: $*" >> "$ERROR_LOG"; echo "ERROR: $*" >&2; }
|
||||
log_warn() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARN: $*" >> "$ERROR_LOG"; echo "WARN: $*" >&2; }
|
||||
|
||||
# Два режима: если переменная передана (не пустая) — использовать; иначе — запросить ввод.
|
||||
# Использование: get_var ИМЯ_ПЕРЕМЕННОЙ "Подсказка для пользователя"
|
||||
get_var() {
|
||||
local name="$1"
|
||||
local prompt="$2"
|
||||
local val="${!name}"
|
||||
if [ -z "$val" ]; then
|
||||
read -rp "$prompt: " val
|
||||
[ -z "$val" ] && { log_error "Переменная $name не задана."; exit 1; }
|
||||
printf -v "$name" '%s' "$val"
|
||||
fi
|
||||
}
|
||||
# Опциональная переменная: запрос с возможностью оставить пустым
|
||||
get_var_optional() {
|
||||
local name="$1"
|
||||
local prompt="$2"
|
||||
local val="${!name}"
|
||||
if [ -z "$val" ]; then
|
||||
read -rp "$prompt: " val
|
||||
printf -v "$name" '%s' "$val"
|
||||
fi
|
||||
}
|
||||
|
||||
# Путь к env-файлу: аргумент скрипта или запрос
|
||||
ENV_FILE="${1:-}"
|
||||
get_var ENV_FILE "Путь к файлу конфигурации (например /path/to/f7cloud-install.env)"
|
||||
|
||||
if [ ! -f "$ENV_FILE" ]; then
|
||||
log_error "Файл конфигурации не найден: $ENV_FILE"
|
||||
exit 1
|
||||
fi
|
||||
# shellcheck source=/dev/null
|
||||
set -a && source "$ENV_FILE" && set +a
|
||||
|
||||
# Переменные из env или диалог, если не переданы
|
||||
get_var HPB_HASHKEY "HPB hashkey"
|
||||
get_var HPB_BLOCKKEY "HPB blockkey"
|
||||
get_var HPB_INTERNAL_SECRET "HPB internal_secret"
|
||||
get_var HPB_BACKEND_SECRET "HPB backend secret"
|
||||
get_var F7CLOUD_URL "URL F7 Cloud (например https://cloud.example.com)"
|
||||
HPB_DOMAIN="${F7CLOUD_URL}"
|
||||
get_var STATIC_AUTH_SECRET "TURN static-auth-secret (источник уточняется)"
|
||||
# TURN REST API key для Janus (пока не задан, позже — из конфига coturn)
|
||||
get_var_optional TURN_REST_API_KEY "TURN REST API key для Janus (Enter — пропустить)"
|
||||
|
||||
> "$ERROR_LOG"
|
||||
echo "=== Лог установки F7_HPB ===" >> "$ERROR_LOG"
|
||||
echo "Начало: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG"
|
||||
|
||||
if ! command -v git >/dev/null 2>&1; then
|
||||
echo "Установка git..."
|
||||
apt-get update -qq && apt-get install -y git || { log_error "Не удалось установить git"; exit 1; }
|
||||
fi
|
||||
|
||||
rm -rf /tmp/F7_HPB
|
||||
echo "Клонирование репозитория F7_HPB..."
|
||||
if ! (cd /tmp && git clone https://git.f7cloud.ru/root/F7_HPB.git); then
|
||||
log_error "Не удалось клонировать репозиторий F7_HPB"
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
if ! [ -d /tmp/F7_HPB ]; then
|
||||
log_error "Директория /tmp/F7_HPB не существует после клонирования"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Секреты должны быть в env (переданы из главного скрипта)
|
||||
if [ -f /tmp/hpb-secrets.env ]; then
|
||||
# shellcheck source=/dev/null
|
||||
set -a && source /tmp/hpb-secrets.env && set +a
|
||||
fi
|
||||
|
||||
R=/tmp/F7_HPB
|
||||
SIGNALING_CONF_DIR="/etc/f7cloud-talk-signaling"
|
||||
mkdir -p "$SIGNALING_CONF_DIR"
|
||||
if [ -f "$R/overlay/etc/f7cloud-talk-signaling/server.conf" ]; then
|
||||
cp "$R/overlay/etc/f7cloud-talk-signaling/server.conf" "$SIGNALING_CONF_DIR/"
|
||||
else
|
||||
[ -f "$R/server.conf.example" ] && cp "$R/server.conf.example" "$SIGNALING_CONF_DIR/server.conf"
|
||||
fi
|
||||
if [ -f "$SIGNALING_CONF_DIR/server.conf" ]; then
|
||||
sed -i "s|hashkey = .*|hashkey = \"${HPB_HASHKEY}\"|i" "$SIGNALING_CONF_DIR/server.conf"
|
||||
sed -i "s|blockkey = .*|blockkey = \"${HPB_BLOCKKEY}\"|i" "$SIGNALING_CONF_DIR/server.conf"
|
||||
sed -i "s|internalsecret = .*|internalsecret = \"${HPB_INTERNAL_SECRET}\"|i" "$SIGNALING_CONF_DIR/server.conf"
|
||||
sed -i "s|secret = YOUR_NEXTCLOUD_BACKEND_SECRET|secret = \"${HPB_BACKEND_SECRET}\"|g" "$SIGNALING_CONF_DIR/server.conf"
|
||||
sed -i "s|url = https://[^ ]*|url = ${F7CLOUD_URL}|" "$SIGNALING_CONF_DIR/server.conf"
|
||||
REALM="${F7CLOUD_URL#*://}"; REALM="${REALM%%/*}"; REALM="${REALM%%:*}"
|
||||
[ -n "$TURN_REST_API_KEY" ] && sed -i "s|apikey = YOUR_TURN_API_KEY|apikey = ${TURN_REST_API_KEY}|" "$SIGNALING_CONF_DIR/server.conf"
|
||||
[ -n "$STATIC_AUTH_SECRET" ] && sed -i "s|secret = YOUR_TURN_SHARED_SECRET|secret = ${STATIC_AUTH_SECRET}|" "$SIGNALING_CONF_DIR/server.conf"
|
||||
[ -n "$REALM" ] && sed -i "s|servers = turn:.*|servers = turn:${REALM}:9991?transport=udp,turn:${REALM}:9991?transport=tcp|" "$SIGNALING_CONF_DIR/server.conf"
|
||||
fi
|
||||
|
||||
# Бинарник signaling только из overlay (signaling-server убран как дубликат)
|
||||
if [ -f "$R/overlay/usr/bin/signaling" ]; then
|
||||
cp "$R/overlay/usr/bin/signaling" /usr/bin/ && chmod +x /usr/bin/signaling
|
||||
else
|
||||
log_error "Бинарник signaling не найден: $R/overlay/usr/bin/signaling"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Юниты: coturn, nats-server, janus, signaling
|
||||
find "$R" -name "*.service" -exec cp {} /etc/systemd/system/ \;
|
||||
|
||||
# Overlay: файлы и каталоги из репозитория на те же пути в системе
|
||||
if [ -d "$R/overlay" ]; then
|
||||
echo "Установка overlay (nats, janus, coturn, бинарники)..."
|
||||
REALM="${F7CLOUD_URL#*://}"; REALM="${REALM%%/*}"; REALM="${REALM%%:*}"
|
||||
[ -f "$R/overlay/etc/nats-server.conf" ] && cp "$R/overlay/etc/nats-server.conf" /etc/
|
||||
[ -d "$R/overlay/etc/janus" ] && cp -a "$R/overlay/etc/janus" /etc/
|
||||
# janus.jcfg: stun_server = домен, turn_rest_api_key = переменная (пока пусто)
|
||||
if [ -f /etc/janus/janus.jcfg ] && [ -n "$REALM" ]; then
|
||||
sed -i "s|stun_server = \".*\"|stun_server = \"$REALM\"|" /etc/janus/janus.jcfg
|
||||
fi
|
||||
[ -n "$TURN_REST_API_KEY" ] && [ -f /etc/janus/janus.jcfg ] && sed -i "s|turn_rest_api_key = \".*\"|turn_rest_api_key = \"$TURN_REST_API_KEY\"|" /etc/janus/janus.jcfg
|
||||
[ -d "$R/overlay/etc/coturn" ] && cp -a "$R/overlay/etc/coturn" /etc/
|
||||
[ -f "$R/overlay/etc/turnserver.conf" ] && cp "$R/overlay/etc/turnserver.conf" /etc/
|
||||
# Библиотеки и плагины Janus
|
||||
if [ -d "$R/overlay/usr/lib/x86_64-linux-gnu/janus" ]; then
|
||||
mkdir -p /usr/lib/x86_64-linux-gnu
|
||||
cp -a "$R/overlay/usr/lib/x86_64-linux-gnu/janus" /usr/lib/x86_64-linux-gnu/
|
||||
fi
|
||||
# Подстановка в turnserver.conf: реальный IP, realm (домен), static-auth-secret
|
||||
if [ -f /etc/turnserver.conf ]; then
|
||||
REAL_IP=$(hostname -I 2>/dev/null | awk '{print $1}')
|
||||
[ -z "$REAL_IP" ] && REAL_IP=$(ip -4 route get 8.8.8.8 2>/dev/null | grep -oP 'src \K[^ ]+' || true)
|
||||
[ -n "$REAL_IP" ] && sed -i "s|listening-ip=192.168.70.81|listening-ip=$REAL_IP|g" /etc/turnserver.conf && sed -i "s|relay-ip=192.168.70.81|relay-ip=$REAL_IP|g" /etc/turnserver.conf
|
||||
[ -n "$REALM" ] && sed -i "s|^realm=.*|realm=$REALM|" /etc/turnserver.conf
|
||||
[ -n "$STATIC_AUTH_SECRET" ] && sed -i "s|^static-auth-secret=.*|static-auth-secret=$STATIC_AUTH_SECRET|" /etc/turnserver.conf
|
||||
fi
|
||||
[ -f "$R/overlay/usr/sbin/nats-server" ] && cp "$R/overlay/usr/sbin/nats-server" /usr/sbin/ && chmod +x /usr/sbin/nats-server
|
||||
[ -f "$R/overlay/usr/bin/janus" ] && cp "$R/overlay/usr/bin/janus" /usr/bin/ && chmod +x /usr/bin/janus
|
||||
[ -f "$R/overlay/usr/bin/turnserver" ] && cp "$R/overlay/usr/bin/turnserver" /usr/bin/ && chmod +x /usr/bin/turnserver
|
||||
[ -f "$R/overlay/usr/bin/signaling" ] && cp "$R/overlay/usr/bin/signaling" /usr/bin/ && chmod +x /usr/bin/signaling
|
||||
# Права для coturn: пользователь turnserver, каталоги 750
|
||||
if [ -d /etc/coturn ] || [ -f /etc/turnserver.conf ]; then
|
||||
getent passwd turnserver >/dev/null 2>&1 || (useradd -r -s /usr/sbin/nologin turnserver 2>/dev/null || true)
|
||||
[ -f /etc/turnserver.conf ] && chown turnserver:turnserver /etc/turnserver.conf && chmod 640 /etc/turnserver.conf
|
||||
if [ -d /etc/coturn ]; then
|
||||
chown -R turnserver:turnserver /etc/coturn
|
||||
find /etc/coturn -type d -exec chmod 750 {} \;
|
||||
find /etc/coturn -type f -exec chmod 640 {} \;
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Пользователи для служб (если ещё не созданы)
|
||||
getent passwd nats >/dev/null 2>&1 || (useradd -r -s /usr/sbin/nologin nats 2>/dev/null || true)
|
||||
getent passwd _signaling >/dev/null 2>&1 || (useradd -r -s /usr/sbin/nologin _signaling 2>/dev/null || true)
|
||||
|
||||
systemctl daemon-reload 2>/dev/null || true
|
||||
# Включить и запустить службы
|
||||
for svc in coturn nats-server janus signaling; do
|
||||
systemctl enable "$svc" 2>/dev/null || true
|
||||
systemctl start "$svc" 2>/dev/null || true
|
||||
done
|
||||
# Совместимость со старыми именами
|
||||
systemctl enable f7cloud-spreed-signaling 2>/dev/null || systemctl enable signaling 2>/dev/null || true
|
||||
systemctl start f7cloud-spreed-signaling 2>/dev/null || systemctl start signaling 2>/dev/null || true
|
||||
|
||||
echo "Конец: $(date '+%Y-%m-%d %H:%M:%S')" >> "$ERROR_LOG"
|
||||
echo "F7_HPB установлен. Лог ошибок: $ERROR_LOG"
|
||||
exit 0
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
|
||||
|
|
@ -0,0 +1 @@
|
|||
|
||||
0
overlay/etc/f7cloud-talk-signaling/.gitkeep
Normal file
0
overlay/etc/f7cloud-talk-signaling/.gitkeep
Normal file
|
|
@ -2,7 +2,7 @@
|
|||
Description=F7 Talk signaling server
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/signaling --config /etc/f7cloud-spreed-signaling/server.conf
|
||||
ExecStart=/usr/bin/signaling --config /etc/f7cloud-talk-signaling/server.conf
|
||||
User=_signaling
|
||||
Group=_signaling
|
||||
Restart=on-failure
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user