Backend nie dostawal ani adresu serwera LiveKit, ani kluczy API: brakowalo czterech linii w sekcji `environment`. Bez nich WIDEO NIE DZIALA WCALE, wiec na dzialajacej instancji zmiana byla dopisana recznie i istniala WYLACZNIE w pliku roboczym na serwerze. `git checkout` albo konflikt przy `pull` skasowalby ja bez sladu, a kto odtwarzalby instancje z repozytorium, nie dowiedzialby sie o niej wcale. Komentarze w obu plikach mowily przy tym cos innego niz stan faktyczny: compose sugerowal, ze konfiguracja wideo idzie przez panel jak SMTP, a `.env.production.example` twierdzil wprost, ze "klucze API ustawia sie w panelu". Stad brala sie mylaca obserwacja, ze `app_settings` nie ma zadnego klucza LIVEKIT mimo dzialajacego wideo: to jest stan NORMALNY, bo `SettingsService` czyta baze, potem srodowisko, potem wartosc domyslna. Wideo idzie przez srodowisko swiadomie: dostawca i klucze naleza do infrastruktury instancji, tak samo jak adres MinIO czy baza, a adres LiveKit musi zgadzac sie z domena obslugiwana przez nginx hosta. Ustawia je wiec ten, kto wdraza, a nie administrator tresci. Dopisane takze `LIVEKIT_INTERNAL_URL`, ktorego w pliku wzorcowym nie bylo, choc `SettingKey` zna je od poczatku: adres widziany przez backend bywa inny niz ten dla przegladarki, a bez niego nagrywanie przez Egress probuje laczyc sie z serwerem droga publiczna. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -94,7 +94,33 @@ services:
|
||||
# Ustawia sie ja w panelu administracyjnym, w sekcji Ustawienia, a wartosci
|
||||
# trafiaja do tabeli app_settings. Zmienne srodowiskowe mialyby nizszy
|
||||
# priorytet, ale ich obecnosc tutaj myliloby co jest zrodlem prawdy.
|
||||
#
|
||||
# WIDEO IDZIE INACZEJ, I TO JEST SWIADOME
|
||||
# -------------------------------------------------------------------
|
||||
# Dostawca wideo i jego klucze sa TUTAJ, a nie w panelu, bo naleza do
|
||||
# infrastruktury instancji, tak samo jak adres MinIO czy baza: stawia
|
||||
# sie je razem z serwerem, a nie zmienia z tygodnia na tydzien. Adres
|
||||
# LiveKit musi przy tym zgadzac sie z domena, ktora obsluguje nginx
|
||||
# hosta, wiec i tak ustawia go ten, kto wdraza, a nie administrator
|
||||
# tresci.
|
||||
#
|
||||
# BEZ TYCH CZTERECH LINII WIDEO NIE DZIALA WCALE. `SettingsService`
|
||||
# czyta baze, potem srodowisko, potem wartosc domyslna, wiec puste
|
||||
# `app_settings` jest tu stanem NORMALNYM, a nie brakiem konfiguracji:
|
||||
# zapytanie do bazy o klucze LIVEKIT nie zwroci niczego takze na
|
||||
# dzialajacej instancji. Stan faktyczny czyta sie z wypisu
|
||||
# `SettingsStartupReport` w logu backendu.
|
||||
VIDEO_PROVIDER: ${VIDEO_PROVIDER:-none}
|
||||
# Adres widziany przez PRZEGLADARKE: publiczna domena z waznym
|
||||
# certyfikatem, bo laczy sie z nia klient po wss://.
|
||||
LIVEKIT_URL: ${LIVEKIT_URL:-}
|
||||
# Adres widziany przez BACKEND, do wywolan API i Egress. Puste oznacza
|
||||
# ten sam co publiczny. W sieci Dockera to `ws://livekit:7880`: backend
|
||||
# nie musi wychodzic na zewnatrz i wracac przez nginx po to, zeby
|
||||
# porozmawiac z kontenerem obok.
|
||||
LIVEKIT_INTERNAL_URL: ${LIVEKIT_INTERNAL_URL:-}
|
||||
LIVEKIT_API_KEY: ${LIVEKIT_API_KEY:-}
|
||||
LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET:-}
|
||||
CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS}
|
||||
LOG_LEVEL_ROOT: ${LOG_LEVEL_ROOT:-INFO}
|
||||
LOG_LEVEL_APP: ${LOG_LEVEL_APP:-INFO}
|
||||
|
||||
Reference in New Issue
Block a user