fix(deploy): надёжный рендер шаблонов и устойчивый цикл подстановки

- render_template: значения передаются через окружение (envsubst), а не
  подставляются в variadic-аргументы — многострочные значения больше не
  ломают разбор, неполный список не уводит bash в бесконечный цикл
- export "$pair": bash сам разбирает KEY=value (было export "${pair}")
- шаблоны переведены на ${VAR}-синтаксис, добавлен compose.test.yaml.tpl
  для тестового режима установщика (--skip-tls без публикации портов)
- dry-run не требует root и работает вне Linux (проверка ОС пропускается)
- install.sh: учитываются --livekit-*-порты и --turn-*-порты в livekit.yaml,
  исправлено экранирование апострофа в итоговой сводке
- scripts/debug-install.sh: трассировка установщика в контейнере
This commit is contained in:
2026-09-19 19:26:26 +03:00
parent 2bf7101f2d
commit 99e0f72844
13 changed files with 355 additions and 116 deletions
+11 -11
View File
@@ -1,29 +1,29 @@
# Сгенерировано deploy/install.sh — не редактируйте вручную.
# Документация: https://docs.livekit.io/home/self-hosting/deployment/
port: {{LIVEKIT_WS_PORT}}
port: ${LIVEKIT_WS_PORT}
bind_addresses:
- "0.0.0.0"
rtc:
tcp_port: {{LIVEKIT_TCP_PORT}}
udp_port: {{LIVEKIT_UDP_PORT}}
use_external_ip: {{LIVEKIT_USE_EXTERNAL_IP}}
tcp_port: ${LIVEKIT_TCP_PORT}
udp_port: ${LIVEKIT_UDP_PORT}
use_external_ip: ${LIVEKIT_USE_EXTERNAL_IP}
# Синхронизация портов с публичным адресом: контейнер публикует порты напрямую.
port_range_start: 0
port_range_end: 0
turn:
enabled: {{TURN_ENABLED}}
domain: {{TURN_DOMAIN}}
udp_port: {{TURN_UDP_PORT}}
tls_port: {{TURN_TLS_PORT}}
external_tls: {{TURN_EXTERNAL_TLS}}
enabled: ${TURN_ENABLED}
domain: ${TURN_DOMAIN}
udp_port: ${TURN_UDP_PORT}
tls_port: ${TURN_TLS_PORT}
external_tls: ${TURN_EXTERNAL_TLS}
room:
auto_create: true
empty_timeout: 300
departure_timeout: 20
max_participants: {{LIVEKIT_MAX_PARTICIPANTS}}
max_participants: ${LIVEKIT_MAX_PARTICIPANTS}
enable_remote_unmute: false
audio:
@@ -34,7 +34,7 @@ audio:
video:
dynacast: true
disable_simulcast: {{LIVEKIT_DISABLE_SIMULCAST}}
disable_simulcast: ${LIVEKIT_DISABLE_SIMULCAST}
logging:
level: info