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
+17 -5
View File
@@ -119,19 +119,31 @@ APP_VERSION=latest
# Pojedynczy webinar moze wybrac wlasnego w formularzu.
VIDEO_PROVIDER=NONE
# Adres serwera LiveKit widziany przez przegladarke uczestnika.
# Klucze API ustawia sie w panelu, tak samo jak dane SMTP: nie ma ich tutaj,
# zeby zmiana nie wymagala restartu ani dostepu do serwera.
# Adres serwera LiveKit widziany przez PRZEGLADARKE uczestnika: publiczna
# domena z waznym certyfikatem, bo klient laczy sie z nia po wss://.
LIVEKIT_URL=
# Adres widziany przez BACKEND, do wywolan API i nagrywania przez Egress.
# Puste oznacza "ten sam co publiczny". W sieci Dockera podaj `ws://livekit:7880`:
# backend nie musi wtedy wychodzic na zewnatrz i wracac przez nginx po to, zeby
# porozmawiac z kontenerem stojacym obok.
LIVEKIT_INTERNAL_URL=
# -----------------------------------------------------------------------------
# PROFIL LIVEKIT: wlasny serwer wideo
# -----------------------------------------------------------------------------
# Wypelnij wylacznie, gdy stawiasz serwer u siebie:
# docker compose --profile livekit up -d
#
# Klucz i sekret musza byc te same tutaj i w panelu (Ustawienia > Wideo):
# tutaj konfiguruja serwer, w panelu sluza do podpisywania tokenow.
# Klucz i sekret sluza DWOM rzeczom naraz: konfiguruja serwer LiveKit
# i trafiaja do backendu, ktory podpisuje nimi tokeny dostepu oraz zleca
# nagrywanie. Dlatego wystarczy wpisac je TUTAJ, a nie takze w panelu:
# `SettingsService` czyta baze, potem srodowisko, potem wartosc domyslna.
#
# Puste `app_settings` jest przy tym 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.
LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=