fix(install,e2e): установка на VPS владельца — четыре дефекта шаблонов и хелперов
Установка на VPS (Debian 13, 1 vCPU/2 ГБ) с внешним прокси на том же хосте
вскрыла дефекты, которые не проявлялись на стенде:
- compose: с --no-turn порты TURN всё равно публиковались, и стек не стартовал
(«failed to bind host port 0.0.0.0:3478/udp» — порт держит чужой coturn).
Теперь строки портов TURN подставляет установщик (GLCHAT_TURN_PORTS).
- LiveKit: добавлен отдельный адрес публикации медиапортов
(--livekit-media-bind-addr / GLCHAT_LIVEKIT_MEDIA_BIND): сигналинг остаётся
внутренним для прокси, а 7881/tcp и 7882/udp доступны клиентам из интернета.
- external-proxy.conf: адреса апстримов берутся из фактической привязки
(--app-bind-addr/--livekit-bind-addr), а не жёсткого 127.0.0.1.
- при --no-files-subdomain шаблоны внешнего прокси и встроенного Caddy писали
два блока с одним адресом сайта (Caddy отвергает такой конфиг и в embedded
режиме установка ломалась целиком): блок пользовательского контента теперь
появляется только при отдельном домене (GLCHAT_FILES_BLOCK).
- e2e: postWithRetry/repeat429 читают retry_after_ms из конверта ошибки
({"error":{...}}) — без этого хелперы сдавались раньше, чем сервер разрешал
повтор, и регистрация пробных аккаунтов на свежем инстансе падала.
- e2e: voice.spec.ts ищет комнату «Голос» точным именем: пока сайдбар
дорисовывает сервер, видны комнаты предыдущего («Голос A»/«Голос B»).
This commit is contained in:
+13
-9
@@ -76,15 +76,19 @@ services:
|
||||
LIVEKIT_KEYS: "${LIVEKIT_API_KEY}: ${LIVEKIT_API_SECRET}"
|
||||
ports:
|
||||
- "${GLCHAT_LIVEKIT_BIND}:${LIVEKIT_WS_PORT}:7880"
|
||||
# Медиапорты: тот же адрес привязки (для инстанса за NAT это адрес туннеля).
|
||||
- "${GLCHAT_LIVEKIT_BIND}:${LIVEKIT_TCP_PORT}:7881"
|
||||
- "${GLCHAT_LIVEKIT_BIND}:${LIVEKIT_UDP_PORT}:7882/udp"
|
||||
# TURN: UDP и TURN/TLS. На хосте без белого IP эти порты доступны только
|
||||
# из туннеля (внешний прокси/релей публикует их на своём адресе).
|
||||
- "${GLCHAT_LIVEKIT_BIND}:${TURN_UDP_PORT}:${TURN_UDP_PORT}/udp"
|
||||
- "${GLCHAT_LIVEKIT_BIND}:${TURN_TLS_PORT}:${TURN_TLS_PORT}/tcp"
|
||||
# Диапазон релея TURN (медиа через relay).
|
||||
- "${GLCHAT_LIVEKIT_BIND}:${TURN_RELAY_START}-${TURN_RELAY_END}:${TURN_RELAY_START}-${TURN_RELAY_END}/udp"
|
||||
# Медиапорты: по умолчанию тот же адрес привязки (инстанс за NAT
|
||||
# публикует их на адресе туннеля). Когда прокси стоит на том же хосте,
|
||||
# что и стек, адреса расходятся: сигналинг отдаётся наружу через прокси и
|
||||
# публикуется только для него, а медиапорты обязаны быть доступны
|
||||
# клиентам из интернета — GLCHAT_LIVEKIT_MEDIA_BIND (по умолчанию равен
|
||||
# адресу привязки, то есть поведение прежнее).
|
||||
- "${GLCHAT_LIVEKIT_MEDIA_BIND}:${LIVEKIT_TCP_PORT}:7881"
|
||||
- "${GLCHAT_LIVEKIT_MEDIA_BIND}:${LIVEKIT_UDP_PORT}:7882/udp"
|
||||
# TURN: UDP, TURN/TLS и диапазон релея. Строки подставляет установщик
|
||||
# (GLCHAT_TURN_PORTS): при --no-turn встроенного TURN в стеке нет, и порты
|
||||
# не публикуются вовсе — иначе занятый на хосте порт (например, чужим
|
||||
# coturn) ломает запуск стека, а наружу открывались бы лишние порты.
|
||||
${GLCHAT_TURN_PORTS}
|
||||
volumes:
|
||||
- ./livekit/livekit.yaml:/etc/livekit.yaml:ro
|
||||
- ${GLCHAT_TURN_CERT_DIR}:/etc/certs:ro
|
||||
|
||||
Reference in New Issue
Block a user