Jak skonfigurować serwer nagrywania i przesyłania strumieniowego Jibri dla Jitsi Meet
Aktualny podręcznik Jitsi Docker dokumentuje ważną zmianę wdrożeniową: od wydania stable-11146kontenery działają z nieuprzywilejowanym UID/GID 1000, a katalogi danych trwałych muszą być dostępne do zapisu dla danego użytkownika kontenera. Usługa Jibri również nie potrzebuje już tej SYS_ADMINmożliwości. Starszych podręczników, które zalecają kontenery uprzywilejowane lub szerokie 777uprawnienia, nie należy kopiować do bieżącego wdrożenia bez sprawdzenia instrukcji dotyczących konkretnego wydania.
W tym przewodniku wykorzystano Docker Compose dla istniejącej, samodzielnie hostowanej instalacji Jitsi Meet. Opiera się on na czysto hipotetycznym przykładzie: zespół Riverview już uruchamia Jitsi w meet.example.net, przechowuje konfigurację w /opt/jitsi-meet-cfgi chce, aby moderatorzy nagrywali spotkania lokalnie i okazjonalnie przesyłali je strumieniowo do miejsca docelowego RTMP. To przykładowa konfiguracja, a nie raport z rzeczywistej instalacji ani testu.
Uwaga dotycząca ilustracji: Poniższe widoki ekranów to schematyczne przykłady, a nie zrzuty ekranu z rzeczywistego serwera. Wyświetlane wyniki poleceń i stany spotkań mają charakter poglądowy.
Co robi Jibri i czego potrzebuje
Jibri to infrastruktura transmisyjna Jitsi do nagrywania lub transmisji na żywo konferencji. Dołącza do spotkania za pośrednictwem sesji przeglądarki, przechwytuje dźwięk i obraz, a następnie koduje dane wyjściowe. Działająca konfiguracja Jibri zależy zatem od zgody usługi internetowej Jitsi, serwera Prosody XMPP i Jicofo na wewnętrzne konto rejestratora oraz salę „browaru” Jibri, w której dostępne instancje zgłaszają się same.
Użyj pełnej instalacji Jitsi Meet, którą administrujesz; Jibri nie może być podłączony do publicznej usługi meet.jit.si tak, jakby był Twoim własnym serwerem. Projekt Jibri opisuje uruchamianie go na oddzielnej maszynie lub maszynie wirtualnej, bez niezwiązanego z nią obciążenia, wykorzystującego jego urządzenia wyświetlające lub audio. Oficjalne wdrożenie Docker Compose pakuje Jibri jako dodatkową usługę. W przypadku małej instalacji może to być oddzielny kontener na hoście Compose; w celu długotrwałego użytkowania, przydziel mu dedykowany procesor, pamięć i pojemność dysku lub umieść go na hoście z odpowiednimi zasobami.
Jedna instancja Jibri może obsłużyć jedną sesję nagrywania lub strumieniowania na raz. Jeśli Riverview oczekuje sesji współbieżnych, powinien zaplanować pulę Jibri z wieloma instancjami i uwzględnić dodatkową konfigurację pętli zwrotnej audio opisaną w podręczniku Jitsi. Dodawanie kolejnych kontenerów bez unikatowych urządzeń audio nie stanowi kompletnego planu skalowania.
Przykładowe ustawienia środowiska umożliwiające włączenie Jibri; wartości hasła są zamaskowanymi symbolami zastępczymi.
Krok 1: Przygotuj środowisko Docker Jitsi Meet
Zacznij od oficjalnej wersji Docker Jitsi Meet i odpowiadających jej plików Compose. Zachowaj .envplik i pliki Compose z tej samej wersji. W pliku środowiskowym włącz nagrywanie:
ENABLE_RECORDING=1
Konfiguracja Compose w Jitsi używa wewnętrznych kont XMPP dla samego Jibri oraz dla sesji przeglądarki rejestratora. Ustaw silne, odrębne wartości dla haseł Jibri i rejestratora i zachowaj je w tajemnicy. W przypadku zupełnie nowego stosu, gen-passwords.shskrypt projektu może generować wewnętrzne hasła usług. Zmienia on plik środowiska, dlatego najpierw należy wykonać jego kopię zapasową. Jeśli stos Jitsi jest już uruchomiony, nie należy przypadkowo ponownie generować wszystkich haseł: wszystkie uruchomione komponenty muszą otrzymać pasujące, zaktualizowane dane uwierzytelniające podczas planowanego restartu.
W przykładzie Riverview, ENABLE_RECORDING=1wymagany jest przełącznik, podczas gdy szablon środowiska wydania zawiera nazwy i ustawienia domyślne dla użytkownika XMPP, użytkownika rejestratora, MUC browaru, ścieżki pamięci masowej i innych opcji. Nie wklejaj haseł do publicznego zgłoszenia, zrzutu ekranu terminala ani czatu współdzielonego spotkania.
Przed uruchomieniem usługi przygotuj trwały katalog Jibri dla nieuprzywilejowanego użytkownika kontenera.
Krok 2: Utwórz zapisywalną, trwałą pamięć masową
Nagrania muszą przetrwać wymianę kontenera, dlatego konfiguracja Compose w Jitsi montuje trwałą pamięć masową hosta dla Jibri. W tym przykładzie CONFIG=/opt/jitsi-meet-cfgkatalog hosta to /opt/jitsi-meet-cfg/storage/jibri. Utwórz go przed uruchomieniem usługi i ustaw jako możliwy do zapisu przez UID/GID kontenera 1000:
Lista liczbowa powinna zawierać właściciela i grupę 1000. Użyj rzeczywistej CONFIGścieżki z pliku środowiska, jeśli jest inna. Unikaj rekurencyjnej zmiany właściciela całego katalogu konfiguracji Jitsi; zastosuj wymaganą własność do ścieżki pamięci masowej Jibri i zachowaj istniejące nagrania podczas dostosowywania ustalonego hosta. W systemach SELinux zachowaj ustawienia etykiety woluminu z odpowiedniego oficjalnego pliku Compose, zamiast je usuwać.
Katalog nagrywania kontenera jest konfigurowalny; udokumentowany przykład w podręczniku JIBRI_RECORDING_DIRto /storage/recordings, zamontowany pod katalogiem pamięci masowej Jibri hosta. Przed zmianą sprawdź szablon środowiska swojej wersji. Upewnij się, że host ma wystarczającą ilość wolnego miejsca na dysku i plan retencji: działający rejestrator może z czasem zapełnić niewielki wolumin.
Krok 3: Uruchom Jibri z pasującym plikiem Compose
Z katalogu zawierającego oficjalne pliki Jitsi Compose i skonfigurowany plik środowiska uruchom stos podstawowy z nadpisaniem Jibri:
docker compose -f docker-compose.yml -f jibri.yml up -d
Oficjalny podręcznik wykorzystuje ten wzorzec Compose do dodania Jibri do wdrożenia Dockera. Nadpisanie Jibri definiuje obraz kontenera usługi, konfigurację i montowanie pamięci masowej oraz alokację pamięci współdzielonej. Użyj pliku dołączonego do wybranej wersji; unikaj mieszania bieżącego pakietu jibri.ymlze starszym .envlub pakietem Compose.
Sprawdź, czy usługa Jibri działa nadal i przejrzyj jej logi, a także logi Jicofo i Prosody:
Uruchomiony kontener to wstępne sprawdzenie, a nie dowód na możliwość nagrania konferencji. Jibri musi uwierzytelnić się na właściwym hoście XMPP i dołączyć do oczekiwanego wewnętrznego MUC browaru. Jeśli logi wskazują na błędy uwierzytelniania, należy porównać domenę XMPP, wewnętrzny MUC, konto Jibri, konto rejestratora i hasła w pliku środowiska oraz wygenerowanej konfiguracji usługi. Wartości muszą być zgodne; zmiana hasła tylko jednego komponentu spowoduje przerwanie uzgadniania.
Uruchom usługę Jibri Compose i sprawdź jej stan. Ten ekran ma charakter poglądowy i nie odzwierciedla przetestowanego wdrożenia.
Krok 4: Przetestuj nagranie i strumień RTMP
Dołącz do spotkania testowego na meet.example.netkoncie moderatora. W menu „Więcej akcji” spotkania sprawdź, czy dostępne są akcje nagrywania i transmisji na żywo. Rozpocznij od krótkiego nagrania, poczekaj na zakończenie sesji i sprawdź skonfigurowaną ścieżkę hosta pod kątem danych wyjściowych. Nagranie powinno pozostać dostępne po ponownym utworzeniu kontenera Jibri, ponieważ jest przechowywane na zamontowanym woluminie hosta, a nie tylko w warstwie zapisywalnej kontenera.
W przypadku transmisji strumieniowej na żywo należy użyć adresu URL pobierania RTMP i klucza strumienia dostarczonych przez usługę docelową. Wprowadź aktualne wartości dostawcy w przepływie pracy transmisji strumieniowej na żywo w Jitsi i sprawdź podgląd lub status odbioru w miejscu docelowym. Panele i etykiety dostawców mogą się zmieniać, dlatego należy korzystać z aktualnych instrukcji RTMP w miejscu docelowym. Klucz strumienia należy traktować jak hasło: nie należy go publikować w czacie spotkania ani w zrzutach ekranu artykułów. Nagrywanie do pamięci lokalnej i wysyłanie transmisji strumieniowej na żywo do usługi RTMP to powiązane funkcje Jibri, ale mają one różne miejsca docelowe i funkcje sprawdzające.
Po skonfigurowaniu Jibri w menu spotkania można wyświetlić działania związane z nagrywaniem i transmisją na żywo. Dostępność menu zależy od wdrożenia.
Rozwiązywanie problemów w miejscu awarii
Brak nagrywania lub akcji strumieniowej: Sprawdź, ENABLE_RECORDING=1czy plik jest obecny w aktywnym pliku środowiska i czy odpowiadający mu stos Compose został odtworzony po zmianie. Sprawdź wygenerowaną konfigurację web, Prosody i Jicofo zamiast edytować pliki w działającym kontenerze; Docker regeneruje konfigurację usługi na podstawie danych wejściowych hosta.
Akcja pojawia się, ale Jibri nie może dołączyć: Sprawdź logi Jibri i Jicofo pod kątem błędów uwierzytelniania XMPP lub MUC. Sprawdź wewnętrznego hosta, domenę rejestratora, nazwę browaru i oba hasła wewnętrzne dla tej samej wersji Compose.
Kontener zamyka się lub uruchamia ponownie: Sprawdź jego logi pod kątem brakującej lub niezapisywalnej ścieżki do magazynu. W przypadku bieżących obrazów bez uprawnień roota sprawdź, czy zamontowany katalog jest zapisywalny przez UID/GID 1000. Sprawdź również pamięć hosta i konfigurację pamięci współdzielonej dostarczoną w oficjalnym pliku Jibri Compose.
Sesja się uruchamia, ale plik nagrania nie pojawia się: Sprawdź, czy skonfigurowany katalog nagrania jest mapowany na wolumin hosta i czy sesja została zatrzymana/sfinalizowana prawidłowo. Sprawdź ilość wolnego miejsca na dysku i uprawnienia do plików.
Nagrywanie działa, ale strumieniowanie nie działa: Sprawdź ponownie adres URL i klucz strumienia RTMP, aktualne wymagania miejsca docelowego oraz ścieżkę sieciową wychodzącą hosta. Sprawdź logi Jibri pod kątem awarii strumieniowania, zamiast otwierać dodatkowe porty przychodzące bez dowodu.
Gdy spotkanie działa, ale potrzebujesz więcej jednoczesnych nagrań, rozważnie zwiększaj pojemność. Limit Jibri wynoszący jedną sesję na instancję oznacza, że zadania współbieżne wymagają większej liczby instancji; podręcznik Dockera zaleca również wybór odrębnych interfejsów pętli zwrotnej audio dla wielu instancji. Przetestuj jedną dodatkową instancję przed rozszerzeniem puli i sprawdź, czy każda instancja może utworzyć osobne nagranie.
Użyj tych oficjalnych odniesień
Postępuj zgodnie z instrukcjami dotyczącymi wdrożenia, zamiast kopiować ustawienia z niepowiązanej wersji Jibri. Podręcznik Jitsi Docker dokumentuje przepływ pracy Compose, rejestrowanie zmiennych, ścieżkę do magazynu, uprawnienia do kontenerów bez roota oraz bieżące notatki Jibri. Plik README projektu Jibri wyjaśnia rolę Jibri, ograniczenie do pojedynczej sesji i model konfiguracji. Oficjalna definicja usługi Jibri Compose i szablon środowiska stanowią źródło wiarygodnych nazw zmiennych i montowań specyficznych dla wersji.