From a9e38711fa652b62936b43e780b6a7c3a5eb4790 Mon Sep 17 00:00:00 2001 From: grendervill Date: Sat, 19 Sep 2026 19:30:43 +0300 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20=D0=B2=D1=81=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B8=D0=B7=D0=B2=D0=BE=D0=B4=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=87?= =?UTF-8?q?=D0=B8=D1=82=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20=D0=B4=D0=BE=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B8=20.env=20=D0=B8=20=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=B4=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolve_derived_values() вычисляет CADDY_PROFILE, LIVEKIT_PUBLISH, TURN_EXTERNAL_TLS, PROFILE_LIVEKIT_DISABLE_SIMULCAST и PROFILE_LIVEKIT_USE_EXTERNAL_IP после выбора профиля и до write_env_file: устраняет падение set -u на PROFILE_LIVEKIT_SIMULCAST_DISABLED. --- deploy/install.sh | 54 ++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/deploy/install.sh b/deploy/install.sh index b29d610..cbd3d93 100755 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -224,7 +224,32 @@ resolve_derived_values() { else FILES_DOMAIN_RESOLVED="${DOMAIN}" fi - export FILES_DOMAIN_RESOLVED + + # В режиме внешнего прокси собственный Caddy не нужен вовсе: сервис выносится + # в несуществующий профиль, чтобы `docker compose up` его не поднимал. + CADDY_PROFILE="embedded-proxy" + if [ "$PROXY_MODE" = "external" ] || [ "$SKIP_TLS" = "1" ]; then + CADDY_PROFILE="disabled" + fi + # В тестовом режиме (--skip-tls) порты LiveKit не публикуются. + LIVEKIT_PUBLISH="true" + [ "$SKIP_TLS" = "1" ] && LIVEKIT_PUBLISH="false" + + turn_external_tls="false" + [ "$PROXY_MODE" = "external" ] && turn_external_tls="true" + TURN_EXTERNAL_TLS="$turn_external_tls" + + disable_simulcast="true" + if [ "${PROFILE_LIVEKIT_SIMULCAST:-0}" -gt 0 ] 2>/dev/null; then + disable_simulcast="false" + fi + PROFILE_LIVEKIT_DISABLE_SIMULCAST="$disable_simulcast" + + use_external_ip="true" + PROFILE_LIVEKIT_USE_EXTERNAL_IP="$use_external_ip" + + export FILES_DOMAIN_RESOLVED CADDY_PROFILE LIVEKIT_PUBLISH TURN_EXTERNAL_TLS \ + PROFILE_LIVEKIT_DISABLE_SIMULCAST PROFILE_LIVEKIT_USE_EXTERNAL_IP } validate_inputs() { @@ -576,15 +601,6 @@ render_all_templates() { cp "${DEPLOY_DIR}/fail2ban/filter-glchat-auth.conf" "${TARGET_DIR}/fail2ban/" fi - # В режиме внешнего прокси собственный Caddy не нужен вовсе: сервис - # выносится в несуществующий профиль, чтобы `docker compose up` его не поднимал. - CADDY_PROFILE="embedded-proxy" - if [ "$PROXY_MODE" = "external" ] || [ "$SKIP_TLS" = "1" ]; then - CADDY_PROFILE="disabled" - fi - LIVEKIT_PUBLISH="true" - [ "$SKIP_TLS" = "1" ] && LIVEKIT_PUBLISH="false" - # Вариант compose выбирается по режиму: в тестовом прогоне (--skip-tls) # порты LiveKit не публикуются, чтобы не занимать порты хост-машины. compose_template="${DEPLOY_DIR}/compose.yaml.tpl" @@ -621,19 +637,6 @@ render_all_templates() { "PROXY_MODE=${PROXY_MODE}" fi - turn_external_tls="false" - [ "$PROXY_MODE" = "external" ] && turn_external_tls="true" - disable_simulcast="true" - [ "${PROFILE_LIVEKIT_SIMULCAST:-0}" -gt 0 ] 2>/dev/null && disable_simulcast="false" - PROFILE_LIVEKIT_DISABLE_SIMULCAST="$disable_simulcast" - - use_external_ip="true" - if [ "$PROXY_MODE" = "embedded" ]; then - use_external_ip="true" - fi - PROFILE_LIVEKIT_USE_EXTERNAL_IP="$use_external_ip" - TURN_EXTERNAL_TLS="$turn_external_tls" - render_template "${DEPLOY_DIR}/livekit/livekit.yaml.tpl" "${TARGET_DIR}/livekit/livekit.yaml" \ "LIVEKIT_WS_PORT=${LIVEKIT_WS_PORT}" \ "LIVEKIT_TCP_PORT=${LIVEKIT_TCP_PORT}" \ @@ -981,7 +984,6 @@ main() { check_os interactive_defaults validate_inputs - resolve_derived_values check_resources check_dns "$DOMAIN" || true check_ports_free @@ -1004,6 +1006,10 @@ main() { PROFILE_LIVEKIT_CPUS="1.0" PROFILE_SWAPPINESS=10 + # Производные значения зависят от профиля (simulcast) и режима прокси, + # поэтому считаются после profile_values и до записи .env и шаблонов. + resolve_derived_values + print_plan "$detected_profile" if ! confirm "Применить план? (yes/no)" no; then warn "установка отменена пользователем"