Klucze LiveKit przekazywane do backendu
Deploy PROD / deploy (push) Failing after 0s

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:
2026-09-04 11:02:57 +02:00
parent 0421f19630
commit d567ac861b
2 changed files with 43 additions and 5 deletions
+26
View File
@@ -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}