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
+7 -7
View File
@@ -3,7 +3,7 @@
# блок ниже нужно вставить в конфиг вашего прокси (например, Caddyfile) и перезагрузить его.
# Приложение и LiveKit слушают только 127.0.0.1.
{
email {{ACME_EMAIL}}
email ${ACME_EMAIL}
}
(glchat_security_headers) {
@@ -17,7 +17,7 @@
}
# --- glchat: начало блока -------------------------------------------------
{{DOMAIN}} {
${DOMAIN} {
encode zstd gzip
import glchat_security_headers
log {
@@ -31,7 +31,7 @@
# WebSocket Gateway (фаза 1): длинные соединения без таймаутов.
@gateway path /gateway
handle @gateway {
reverse_proxy 127.0.0.1:{{APP_PORT}} {
reverse_proxy 127.0.0.1:${APP_PORT} {
transport http {
read_timeout 1h
write_timeout 1h
@@ -42,7 +42,7 @@
# LiveKit сигналинг (WebSocket).
@rtc path /rtc*
handle @rtc {
reverse_proxy 127.0.0.1:{{LIVEKIT_WS_PORT}} {
reverse_proxy 127.0.0.1:${LIVEKIT_WS_PORT} {
transport http {
read_timeout 1h
write_timeout 1h
@@ -52,16 +52,16 @@
# API и статика клиента.
handle {
reverse_proxy 127.0.0.1:{{APP_PORT}}
reverse_proxy 127.0.0.1:${APP_PORT}
}
}
# Пользовательский контент — отдельный origin (изоляция cookies/CSP).
{{FILES_DOMAIN}} {
${FILES_DOMAIN} {
encode zstd gzip
import glchat_security_headers
handle {
reverse_proxy 127.0.0.1:{{APP_PORT}}
reverse_proxy 127.0.0.1:${APP_PORT}
}
}
# --- glchat: конец блока --------------------------------------------------