c53ad95104
Deploy PROD / deploy (push) Failing after 0s
Zakres port_range 50000-50100 rezerwowal osobny port na kazde polaczenie. Test z 200 botami wszedl dokladnie w 49, a log serwera pokazal kandydata UDP tylko przy 52 polaczeniach i TCP przy wszystkich 204: kolejni uczestnicy dostawali juz tylko TCP. Zmienna UDP_PORT z zakresem nie wlaczala muxa, bo przegrywala z zakresem z pliku. Teraz udp_port: 7882 (sprawdzone lokalnie: rtc.portUDP Start 7882, End 0), nowa zmienna LIVEKIT_UDP_PORT, zeby stara LIVEKIT_UDP_RANGE w .env nie mogla przywrocic zakresu. Automatyczne wdrozenie nie dotyka profilu livekit: kontener trzeba przeladowac recznie. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
179 lines
7.1 KiB
Bash
179 lines
7.1 KiB
Bash
# Konfiguracja instancji produkcyjnej.
|
|
#
|
|
# Skopiuj do .env.production i uzupelnij. Plik z realnymi wartosciami NIE trafia
|
|
# do repozytorium i nie moze byc kopiowany miedzy klientami.
|
|
#
|
|
# cp .env.production.example .env.production
|
|
# chmod 600 .env.production
|
|
#
|
|
# Wartosci sekretow sa celowo puste. Aplikacja nie wystartuje bez JWT_SECRET,
|
|
# a pozostale puste sekrety uniemozliwia dzialanie odpowiednich funkcji.
|
|
|
|
# =============================================================================
|
|
# BAZA DANYCH
|
|
# =============================================================================
|
|
|
|
# Nazwa bazy tworzonej przy pierwszym starcie kontenera postgres.
|
|
DB_NAME=webinar
|
|
|
|
# Uzytkownik bazy.
|
|
DB_USER=webinar
|
|
|
|
# Haslo uzytkownika bazy. WYMAGANE. Wygeneruj losowe, na przyklad:
|
|
# openssl rand -base64 24
|
|
# Baza nie jest wystawiona poza siec Dockera, ale haslo i tak musi byc mocne.
|
|
DB_PASSWORD=
|
|
|
|
# =============================================================================
|
|
# JWT
|
|
# =============================================================================
|
|
|
|
# Sekret podpisujacy tokeny. WYMAGANE, minimum 32 znaki.
|
|
# Aplikacja NIE WYSTARTUJE bez tej wartosci ani z krotsza niz 32 znaki.
|
|
# Nie da sie go zmienic przez panel, wylacznie tutaj. Wygeneruj:
|
|
# openssl rand -base64 48
|
|
# Zmiana sekretu uniewaznia wszystkie wydane tokeny, czyli wylogowuje wszystkich.
|
|
JWT_SECRET=
|
|
|
|
# Czas waznosci tokenu w minutach.
|
|
JWT_EXPIRATION_MINUTES=120
|
|
|
|
# =============================================================================
|
|
# PIERWSZE KONTO ADMINISTRATORA
|
|
# =============================================================================
|
|
# Uzywane tylko przy pierwszym starcie, gdy tabela users jest pusta.
|
|
# Po utworzeniu konta te zmienne nie maja juz znaczenia.
|
|
|
|
# Adres e-mail pierwszego administratora.
|
|
ADMIN_EMAIL=
|
|
|
|
# Haslo pierwszego administratora. Minimum 10 znakow.
|
|
# Gdy zostawisz puste, haslo zostanie wylosowane i wypisane JEDEN RAZ w logu:
|
|
# docker compose -f docker-compose.prod.yml logs backend | grep -A6 "UTWORZONO PIERWSZE KONTO"
|
|
# Zalecane: zostaw puste i odczytaj z logu, wtedy haslo nie lezy w pliku.
|
|
ADMIN_PASSWORD=
|
|
|
|
# =============================================================================
|
|
# MINIO
|
|
# =============================================================================
|
|
# Nagrania, materialy i zalaczniki. Nie jest wystawione poza siec Dockera.
|
|
|
|
# Klucz dostepu, jednoczesnie login do konsoli MinIO. WYMAGANE.
|
|
MINIO_ACCESS_KEY=
|
|
|
|
# Klucz tajny, jednoczesnie haslo do konsoli. WYMAGANE, minimum 8 znakow.
|
|
# Wygeneruj: openssl rand -base64 24
|
|
MINIO_SECRET_KEY=
|
|
|
|
# Bucket na pliki instancji.
|
|
MINIO_BUCKET=webinar
|
|
|
|
# =============================================================================
|
|
# APLIKACJA
|
|
# =============================================================================
|
|
|
|
# Publiczny adres instancji, z protokolem, bez ukosnika na koncu.
|
|
# Uzywany do budowania linkow w mailach i w zajawkach dla komunikatorow.
|
|
# Musi byc adresem HTTPS widocznym dla uczestnika, nie adresem wewnetrznym.
|
|
# Przyklad: https://webinary.klient.pl
|
|
APP_PUBLIC_URL=
|
|
|
|
# Dozwolone originy CORS, rozdzielone przecinkiem. Zwykle to samo co APP_PUBLIC_URL.
|
|
CORS_ALLOWED_ORIGINS=
|
|
|
|
# Port, na ktorym frontend nasluchuje na petli lokalnej serwera.
|
|
# Reverse proxy klienta przekazuje tu ruch. Zmien, gdy port jest zajety.
|
|
FRONTEND_PORT_EXPOSED=8081
|
|
|
|
# Znacznik wersji obrazow, przydatny przy wycofywaniu zmian.
|
|
APP_VERSION=latest
|
|
|
|
# =============================================================================
|
|
# POCZTA I BRAMKA SMS
|
|
# =============================================================================
|
|
#
|
|
# Tych ustawien NIE MA w tym pliku i nie nalezy ich tu dodawac.
|
|
#
|
|
# Konfiguracja SMTP i bramki SMS odbywa sie wylacznie przez panel
|
|
# administracyjny, w sekcji Ustawienia. Wartosci trafiaja do tabeli app_settings
|
|
# i maja pierwszenstwo przed zmiennymi srodowiskowymi. Haslo SMTP i klucz API
|
|
# bramki sa oznaczone jako sekrety: nigdy nie wracaja w odpowiedzi API, a puste
|
|
# pole w formularzu oznacza brak zmiany.
|
|
#
|
|
# Powody, dla ktorych nie trzymamy ich w .env:
|
|
# - zmiana nie wymaga restartu kontenera ani dostepu do serwera,
|
|
# - klient moze poprawic konfiguracje poczty samodzielnie,
|
|
# - sekrety nie leza w pliku na dysku obok reszty konfiguracji,
|
|
# - panel ma wbudowany test wysylki, ktory od razu pokazuje blad serwera SMTP.
|
|
#
|
|
# Po pierwszym uruchomieniu: zaloguj sie do panelu, wejdz w Ustawienia,
|
|
# uzupelnij sekcje "Konto e-mail (SMTP)" i "Bramka SMS", zapisz, a nastepnie
|
|
# uzyj bloku "Test konfiguracji" pod kazda sekcja.
|
|
|
|
# =============================================================================
|
|
# WIDEO
|
|
# =============================================================================
|
|
|
|
# Wybor implementacji VideoProvider. Brak implementacji na tym etapie.
|
|
# Domyslny dostawca instancji: NONE, LIVEKIT, JITSI albo DAILY.
|
|
# Pojedynczy webinar moze wybrac wlasnego w formularzu.
|
|
VIDEO_PROVIDER=NONE
|
|
|
|
# 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 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=
|
|
|
|
# Porty serwera. UDP jest **glowna droga ruchu audio i wideo**: bez otwarcia
|
|
# tego portu uczestnicy dolacza do pokoju, ale nie beda sie slyszec.
|
|
# Jeden port UDP dla wszystkich uczestnikow (tryb mux). Dawny zakres
|
|
# LIVEKIT_UDP_RANGE konczyl sie po okolo 50 osobach i nie jest juz czytany.
|
|
LIVEKIT_PORT=7880
|
|
LIVEKIT_TCP_PORT=7881
|
|
LIVEKIT_UDP_PORT=7882
|
|
|
|
# TURN: przekazuje ruch uczestnikom za restrykcyjnym NAT-em, czyli w praktyce
|
|
# wiekszosci osob w sieciach firmowych. Bez niego czesc uczestnikow nie
|
|
# zobaczy i nie uslyszy nikogo.
|
|
TURN_REALM=webinar.twojadomena.pl
|
|
TURN_USER=webinar
|
|
TURN_PASSWORD=
|
|
TURN_MIN_PORT=49160
|
|
TURN_MAX_PORT=49200
|
|
|
|
# =============================================================================
|
|
# DOKUMENTACJA I LOGI
|
|
# =============================================================================
|
|
|
|
# Swagger UI. Na produkcji zostaw false.
|
|
SWAGGER_ENABLED=false
|
|
|
|
# Poziom logow calej aplikacji.
|
|
LOG_LEVEL_ROOT=INFO
|
|
|
|
# Poziom logow kodu aplikacji. Na produkcji INFO, DEBUG tylko przy diagnozie.
|
|
LOG_LEVEL_APP=INFO
|