
Witamy w Przewodniku programisty BigBlueButton dla BigBlueButton 4.0.
Ten dokument zawiera przegląd konfiguracji środowiska programistycznego dla BigBlueButton 4.0.
Zanim zaczniesz
Najpierw musisz skonfigurować serwer BigBlueButton 4.0. Zobacz instrukcje w Zainstaluj BigBlueButton 4.0.
Przegląd
Serwer BigBlueButton jest zbudowany z szeregu komponentów odpowiadających pakietom Ubuntu. Niektóre z tych komponentów to
- bbb-web -- Implementuje API BigBlueButton i konwersję dokumentów do prezentacji
- bbb-akka-apps -- Aplikacja po stronie serwera obsługująca stan spotkań na serwerze
- bbb-akka-fsesl -- komponent serwerowy obsługujący komunikację z FreeSWITCH
- bbb-learning-dashboard - dashboard dostępny na żywo moderatorzy, który wyświetla informacje o aktywności użytkownika, które mogą być przydatne dla instruktorów
- bbb-fsesl-akka -- Komponent do wysyłania poleceń do FreeSWITCH
- bbb-playback-presentation -- Skrypt nagrywania i odtwarzania do tworzenia układu prezentacji
- bbb-playback-video -- Skrypt nagrywania i odtwarzania do tworzenia układu wideo
- bbb-export-annotations - Obsługuje przechwytywanie treści grupowych i pobieranie prezentacji z adnotacjami
- bbb-webrtc-sfu - Serwer sygnalizacyjny łączący klientów z FreeSWITCH i mediasoup
- mediasoup - Serwer multimediów WebRTC do wysyłania wideo/receiving/recording (kamera internetowa i udostępnianie ekranu)
- bbb-freeswitch-core - Serwer multimediów WebRTC do wysyłania dźwięku /receiving/recording
- bbb-graphql-server - Obsługuje zapytania GraphQL i subskrypcje od klientów, sprawdza uprawnienia użytkowników
- bbb-graphql-middleware - przekazuje wiadomości pomiędzy klientów i bbb-graphql-server, json-patch minimalizuje informacje potrzebne do wysłania
- bbb-graphql-actions - obsługuje żądania od klientów w drodze do rdzenia
- bbb-webrtc-sfu - zarządza połączeniami z mediami
- bbb-webrtc-recorder - obsługuje nagrywanie multimediów
- bbb-transscription-controller - opcjonalny komponent zarządzający napisami dla usług zewnętrznych takich jak VOSK czy Gladia
- bbb-shared-notes-server -- Serwer Hocuspocus, który działa jako backend współpracy dla BlockNote (komponent Shared Notes)
- bbb-webhooks -- opcjonalny komponent, nasłuchuje wszystkich zdarzeń na BigBlueButton i wysyła żądania POST ze szczegółami dotyczącymi tych zdarzeń do hooków zarejestrowanych poprzez API
W tym dokumencie opisano, jak skonfigurować środowisko programistyczne przy użyciu istniejącego serwera BigBlueButton 4.0. Po skonfigurowaniu środowiska będziesz mógł wprowadzić niestandardowe zmiany w kodzie źródłowym BigBlueButton, skompilować go i zastąpić odpowiednie komponenty na serwerze (np. zaktualizować klienta BigBlueButton).
Instrukcje zawarte w tym podręczniku są opisane krok po kroku, dzięki czemu można zrozumieć każdy krok niezbędny do modyfikacji komponentu. Jeśli w dowolnej sekcji napotkasz problemy lub błędy, nie ignoruj ich. Zatrzymaj się i dokładnie sprawdź, czy wykonałeś krok poprawnie. Jeśli nie możesz określić przyczyny błędu, wykonaj następujące czynności:
- Najpierw użyj Google, aby wyszukać błąd. W bigbluebutton-dev znajduje się mnóstwo informacji, które zostały zindeksowane przez Google.
- Spróbuj wykonać te same kroki na innym serwerze BigBlueButton. — Zadaj pytanie bigbluebutton-dev, podając opis problemu i kroki umożliwiające jego odtworzenie. Publikuj logi i komunikaty o błędach w Pastebin, podając link do nich w swoim poście.
Masz działający serwer BigBlueButton
Zanim zaczniesz programować na BigBlueButton, musisz zainstalować BigBlueButton (patrz etapy instalacji) i upewnić się, że działa poprawnie. Upewnij się, że podczas instalacji nie wystąpiły błędy i że możesz pomyślnie dołączyć do sesji.
Podkreślamy, że Twój serwer BigBlueButton musi działać zanim zaczniesz konfigurować środowisko programistyczne. Upewnij się, że możesz się zalogować, rozpocząć sesje, dołączyć do mostu audio, udostępnić swoją kamerę internetową oraz nagrywać i odtwarzać sesje - możesz to sprawdzić, instalując Greenlight lub przechodząc do API MATE używając sekretu i adresu URL swojego serwera (wystarczy uruchomić polecenie bbb-conf --salt, aby uzyskać link do API MATE).
Rozpoczynając pracę z działającym serwerem BigBlueButton, masz możliwość przełączania się pomiędzy komponentami w pakiecie domyślnym i wszelkimi wprowadzanymi modyfikacjami.
Na przykład, załóżmy, że modyfikujesz klienta BigBlueButton i coś nie działa (na przykład klient nie ładuje się w pełni), możesz łatwo przełączyć się z powrotem do klienta z pakietem domyślnym i sprawdzić, czy działa poprawnie (w ten sposób wykluczając wszelkie problemy ze środowiskiem, które mogą również uniemożliwiać ładowanie zmodyfikowanego klienta).
Kolejna uwaga: W tych instrukcjach założono, że masz zainstalowany Greenlight, dzięki czemu możesz tworzyć spotkania i dołączać do nich w celu przetestowania swojej konfiguracji. Alternatywnie możesz użyć API MATE (wystarczy uruchomić komendę bbb-conf --salt, aby uzyskać łącze do API MATE).
Programowanie w systemie Windows
Aby programować BigBlueButton z poziomu systemu Windows, masz dwie możliwości:
- użyj podsystemu Windows dla systemu Linux
- użyj VMWare Player lub VirtualBox, aby utworzyć maszynę wirtualną (VM).
Wybierz system operacyjny Ubuntu 24.04 64-bit. Powiązana dokumentacja VMWare Playera i VirtualBox lub WSL poprowadzi Cię przez konfigurację nowej 64-bitowej maszyny wirtualnej 24.04.
Uwaga: Podczas konfigurowania maszyny wirtualnej dla BigBlueButton nie ma znaczenia, czy skonfigurujesz serwer lub pulpit Ubuntu 24.04. Jeśli zainstalujesz wersję desktopową, będziesz mieć możliwość używania interfejsu graficznego do edycji plików. Do uruchomienia maszyny wirtualnej potrzebny będzie system operacyjny hosta, na którym można uruchomić 64-bitową maszynę wirtualną.
Programowanie na hoście Linux za pośrednictwem kontenera
Rozważ użycie konfiguracji Dockera dla środowiska programistycznego - https://github.com/bigbluebutton/docker-dev. Tą drogą podąża większość głównych programistów.
Uprawnienia roota
Ważne: Konfiguracja jest znacznie łatwiejsza, jeśli programujesz jako użytkownik „bigbluebutton” i po prostu dodajesz katalog domowy za pomocą
usermod -a -G sudo bigbluebutton
mkhomedir_helper bigbluebutton # to add homedir to existing user
chown -R bigbluebutton:bigbluebutton /home/bigbluebutton/
sudo passwd bigbluebutton # to set password for the user bigbluebutton if not done yet
sudo su - bigbluebutton
# if you cannot switch to user bigbluebutton, you may need to switch /bin/false to /bin/bash for user bigbluebutton in /etc/passwd
# and then retry "sudo su - bigbluebutton"
# Note that you may want to disable terminal sessions for user bigbluebutton if you will later use the server in production
wget
Aby wykonać te instrukcje, będziesz musiał pobrać niektóre pliki za pomocą wget. Jeśli nie jest on zainstalowany na Twoim serwerze, możesz zainstalować pakiet za pomocą następującego polecenia
sudo apt-get install wget
Posiadaj konto GitHub
BigBlueButton źródło znajduje się na GitHubie. Potrzebujesz konta GitHub. Ponadto musisz bardzo dobrze znać działanie gita. W szczególności musisz wiedzieć jak
- sklonować repozytorium
- utworzyć gałąź
- wypchnąć zmiany z powrotem do repozytorium
Jeśli nie korzystałeś wcześniej z gita lub jeśli warunki clone, branch i commit nie są Ci znane, przestań teraz. Są to podstawowe pojęcia dotyczące gita, w których musisz zdobyć kompetencje, zanim spróbujesz rozwijać się na BigBlueButton. Aby zdobyć kompetencje, warto zacząć od tej darmowej książki i stron pomocy GitHub.
Korzystanie z GitHub ułatwia pracę nad własną kopią źródła BigBlueButton, przechowywanie aktualizacji w źródle na koncie GitHub i ułatwia wnoszenie wkładu w BigBlueButton.
Subskrybuj bigbluebutton-dev
Zalecamy zapisanie się na listę mailingową bigbluebutton-dev, aby śledzić aktualizacje dotyczące rozwoju BigBlueButton i współpracować z innymi programistami. Prosząc o dostęp, pamiętaj o dołączeniu krótkiej notatki, abyśmy mogli odróżnić Cię od botów spamujących.
Skonfiguruj środowisko programistyczne
(Zalecane) Na hoście Linux zdecydowanie zalecamy używanie „docker-dev”
Rozważ użycie konfiguracji Dockera dla środowiska programistycznego - https://github.com/bigbluebutton/docker-dev Zawiera wszystko, czego potrzebujesz, aby móc uruchomić lokalne środowisko programistyczne BigBlueButton
Alternatywa - dodaj środowisko programistyczne do [działającego lokalnie] działającego serwera BigBlueButton
Najpierw musisz zainstalować podstawowe narzędzia programistyczne.
sudo apt-get install git-core openjdk-21-jdk-headless
Po zainstalowaniu JDK musisz ustawić zmienną JAVA_HOME. Edytuj ~/.profile (tutaj używamy vima do edycji pliku)
vi ~/.profile
Dodaj następujący wiersz na końcu pliku
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
Załaduj ponownie swój profil (stanie się to automatycznie przy następnym logowaniu, ale zrobimy to jawnie tutaj, aby załadować nową zmienną środowiskową).
source ~/.profile
Wykonaj szybki test, aby upewnić się, że ustawiono Java_HOME.
$ echo $JAVA_HOME
/usr/lib/jvm/java-21-openjdk-amd64
W następnym kroku musisz zainstalować szereg narzędzi za pomocą sdkman.
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install gradle 9.8.0
sdk install sbt 1.10.7
sdk install maven 3.5.0
Nie jest już potrzebna ogólnosystemowa instalacja Grails: bbb-web jest zbudowany z opakowania
Gradle (./gradlew), które udostępnia sam łańcuch narzędzi Grails.
Sprawdzanie źródła
Po zainstalowaniu narzędzi programistycznych sklonujemy następnie źródło w następującym katalogu:
/home/bigbluebutton/dev
Korzystając ze swojego konta GitHub, wykonaj następujące czynności
- Fork repozytorium BigBlueButton do swojego konta GitHub
- Sklonuj repozytorium do swojego Folder
~/dev
Po sklonowaniu będziesz mieć następujący katalog (upewnij się, że katalog bigbluebutton znajduje się w twoim katalogu dev).
/home/bigbluebutton/dev/bigbluebutton
Potwierdź, że pracujesz na gałęzi v4.0.x-release.
cd /home/bigbluebutton/dev/bigbluebutton
git status
Kod źródłowy
BigBlueButton 4.0 znajduje się w gałęzi v4.0.x-release. W tym miejscu zostaną scalone wszelkie poprawki do wersji 4.0. Jeśli chcesz dostosować klon BigBlueButton 4.0 do swoich potrzeb, jest to gałąź, której możesz użyć.
Na potrzeby tych instrukcji założymy, że modyfikujesz jedynie swój klon BigBlueButton. Dlatego zalecamy zakup oddziału v4.0.x-release.
On branch v4.0.x-release
Your branch is up-to-date with 'origin/v4.0.x-release'.
nothing to commit, working directory clean
Pierwszą rzeczą, którą musimy zrobić, to dodać zdalne repozytorium do naszego lokalnego klona.
git remote add upstream https://github.com/bigbluebutton/bigbluebutton.git
Możesz teraz sprawdzić lokalną listę śledzonych repozytoriów, aby sprawdzić, czy dodanie zadziałało. Powinieneś zobaczyć co najmniej dwa wyniki (pochodzenie i źródło). Ten o nazwie „Origin” powinien prowadzić do Twojego osobistego forka i jest repozytorium, które sklonowałeś. Drugi wynik „upstream” powinien prowadzić do głównego repozytorium BigBlueButton.
git remote -v
Następnie musimy pobrać najbardziej aktualną wersję zdalnego repozytorium.
git fetch upstream
Jesteś teraz gotowy do utworzenia nowej gałęzi, aby rozpocząć pracę i oprzeć gałąź wydania v4.0.x-release
git checkout -b my-changes-branch upstream/v4.0.x-release
"checkout" przełącza gałęzie
"-b" to opcja tworzenia nowej gałęzi przed przełączeniem
"moja-zmiana-branch" będzie nazwą nowej gałęzi
"upstream/v4.0.x-release" to miejsce, w którym chcesz rozpocząć nową gałąź.
. Powinieneś teraz potwierdzić, że jesteś we właściwej gałęzi.
git status
# On branch my-changes-branch
nothing to commit (working directory clean)
(Opcjonalnie) Zainstaluj Greenlight
Należy pamiętać, że w tym momencie zalecamy zainstalowanie i używanie Greenlight lub użycie API-MATE (link można znaleźć po uruchomieniu $ bbb-conf --salt).
Możesz uzyskać dostęp do https://BBB_DOMAIN i będziesz mógł dołączać do spotkań.
Tworzenie klienta HTML5
Przed rozpoczęciem programowania na kliencie HTML5 upewnij się, że sklonowałeś repozytorium BigBlueButton
i przełączyłeś się na Katalog bigbluebutton-html5:
$ git clone git@github.com:bigbluebutton/bigbluebutton.git
$ cd bigbluebutton/bigbluebutton-html5/
Tło
Klient HTML5 przeszedł kilka głównych refaktorów. Od wersji BigBlueButton 3.0 kod klienta jest obsługiwany bezpośrednio przez NginX, usuwając kilka dotychczasowych zależności komponentów. Upewnij się, że sprawdziłeś część HTML5 strony architektury.
Wymagana jest jedna zmiana w pliku settings.yml, aby kamera internetowa i udostępnianie ekranu działały w kliencie (zakładając, że używasz już protokołu HTTPS). Pierwszym krokiem jest znalezienie wartości spakowanego pliku Settings.yml kurento.wsUrl.
grep "wsUrl" /usr/share/bigbluebutton/html5-client/private/config/settings.yml
Następnie zastąp wsURL tak, aby pozostało takie samo nawet w przypadku zmiany gałęzi:
HOST=$(grep -v '#' /etc/bigbluebutton/bbb-web.properties | sed -n '/^bigbluebutton.web.serverURL/{s/.*\///;p}')
sudo test -s /etc/bigbluebutton/bbb-html5.yml || sudo sh -c "echo '{}' > /etc/bigbluebutton/bbb-html5.yml"
sudo yq-go e -i ".public.kurento.wsUrl = \"wss://$HOST/bbb-webrtc-sfu\"" /etc/bigbluebutton/bbb-html5.yml
sudo bbb-conf --restart
Edytuj /usr/share/bigbluebutton/nginx/bbb-html5.nginx i skomentuj linię zawierającą bbb-html5.nginx.static, a następnie usuń komentarz linii zawierającej bbb-html5.nginx.dev.
Następnie uruchom ponownie Nginx za pomocą: sudo systemctl restart nginx
Pamiętaj, aby cofnąć zmianę, gdy przestaniesz używać klienta deweloperskiego.
Zainstaluj zależności npm.
$ npm install
Na koniec uruchom kod HTML5 i wyślij go.
$ npm start
Ostatnie kilka kroków można alternatywnie wykonać za pomocą skryptu run-dev.sh (działającego w trybie programisty)
lub deploy.sh, aby uruchomić go w trybie produkcyjnym i udostępnić pliki klienta przez NginX.
/private/config
Wszystkie konfiguracje znajdują się w /private/config/settings.yml. Począwszy od BigBlueButton 3.0 ten plik jest faktycznie wybierany przez bbb-apps-akka i ustawienia są przekazywane klientom.
Należy pamiętać, że poszczególne ustawienia konfiguracyjne są nadpisywane ich wartościami (jeśli są zdefiniowane) z pliku /etc/bigbluebutton/bbb-html5.yml (jeśli plik istnieje).
Budowa bbb-common-message
bbb-common-message jest wymagany przez kilka komponentów BigBlueButton. Dlatego wymagane jest najpierw zbudowanie tego . W przeciwnym razie napotkasz błędy kompilacji.
cd ~/dev/bigbluebutton/bbb-common-message
./deploy.sh
Tworzenie BBB-Web
cd ~/dev/bigbluebutton/bigbluebutton-web
Aby przebudować i wdrożyć zmiany, zastępując istniejące bbb-web w /usr/share/bbb-web:
./deploy_to_usr_share.sh --build
Opcja --build buduje bbb-common-web, który jest wymagany przy pierwszym tworzeniu bbb-web. Następnie, jeśli nie zmieniłeś kodu źródłowego bbb-common-web, możesz pominąć opcję --build.
Alternatywnie, aby uruchomić bbb-web w trybie programistycznym na porcie 8090 bez wymiany wdrożonych plików:
./run-dev.sh --build
Tworzenie aplikacji Akka
Możesz ręcznie uruchomić aplikację.
cd ~/dev/bigbluebutton/akka-bbb-apps
./run.sh
Nie zapomnij zmodyfikować service-bbbWebAPI, service-sharedSecret w ~/dev/bigbluebutton/akka-bbb-apps/src/universal/conf/application.conf, aby działało poprawnie. Są one na przykład niezbędne do uruchomienia pokojów podgrup.
Możesz wdrożyć lokalnie aplikacje akka, budując prosty pakiet .deb przy użyciu sbt i wdrażając go od razu:
sbt debian:packageBin
dpkg -i ./target/bbb-apps-akka_<tab>.deb
Tworzenie Akka-FSESL
Musisz zbudować bibliotekę FS ESL
cd ~/dev/bigbluebutton/bbb-fsesl-client
./deploy.sh
Następnie możesz uruchomić aplikację.
cd ~/dev/bigbluebutton/akka-bbb-fsesl
./run.sh
Możesz wdrożyć lokalnie akka-fsesl, budując prosty pakiet .deb przy użyciu sbt i wdrażając go od razu:
sbt debian:packageBin
dpkg -i ./target/bbb-fsesl-akka_<tab>.deb
Tworzenie adnotacji bbb-export-adnotations
Możesz ręcznie uruchomić usługę. Po uruchomieniu przetworzy zadania eksportu przechowywane w Redis zawierające stan tablicy w momencie żądania.
Najpierw zatrzymaj komponent, aby nie uruchamiać dwóch kopii równolegle:
sudo systemctl stop bbb-export-annotations
Aby zainstalować zależności npm, uruchom:
cd ~/dev/bigbluebutton/bbb-export-annotations
npm install
, po którym następuje
npm start
, aby rozpocząć eksportowanie prezentacji z adnotacjami. Jeśli napotkasz problemy z uprawnieniami, zmień presAnnDropboxDir w config/settings.json na folder w swoim katalogu domowym
i upewnij się, że Twoje konto użytkownika ma dostęp do katalogu prezentacji (patrz „Tworzenie BBB-Web”).
Użyj journalctl -u bbb-export-annotations -e, aby zobaczyć najnowsze logi.
Tworzenie panelu szkoleniowego
Panel analityczny nauczania to aplikacja React dołączona do webpack, tego samego pakietu, którego używa klient HTML5. Jest obsługiwany jako pliki statyczne przez nginx pod /learning-analytics-dashboard/.
Aby popracować nad tym przy przeładowaniu na gorąco, uruchom (jako użytkownik bigbluebutton na swoim serwerze programistycznym):
cd ~/dev/bigbluebutton/bbb-learning-dashboard
./run-dev.sh
To uruchamia webpack-dev-server na porcie 3100 i instaluje lokalizację nginx, która stanowi dla niego serwer proxy /learning-analytics-dashboard/, w tym websocket hot-module-reload, który łączy się z powrotem przez nginx na porcie 443.
Aby zbudować pakiet produkcyjny i mieć nginx zamiast tego obsługuje pliki statyczne, uruchom:
./deploy.sh
Zmienne środowiskowe dashboardu (na przykład REACT_APP_EXTERNAL_HELP_PAGE_URL, który dodaje link do pomocy zewnętrznej) są odczytywane z bbb-learning-dashboard/.env; skopiuj .env.example do .env, aby rozpocząć. Ustawienie REACT_APP_STANDALONE_MODE=true w czasie kompilacji tworzy kompilację, która ładuje learning_dashboard_data.json, ustawienia regionalne i prezentację ze ścieżek względem wyeksportowanego pulpitu nawigacyjnego w celu udostępnienia poza serwerem BigBlueButton.
Rozwiązywanie problemów
Witamy na stronie NGINX
Jeśli wyświetli się strona „Witamy w NGINX”. Sprawdź, czy bigbluebutton jest włączony w Nginx. Powinieneś zobaczyć bigbluebutton w /etc/nginx/sites-enabled.
Jeśli nie, włącz go.
sudo ln -s /etc/nginx/sites-available/bigbluebutton /etc/nginx/sites-enabled/bigbluebutton
sudo /etc/init.d/nginx restart
Wstrzymywanie/ponowne uruchamianie VM podaje błędną datę w zatwierdzeniu
Jeśli programujesz przy użyciu VM i wstrzymałeś VM, a następnie ponownie ją uruchomiłeś, czas na VM będzie nieprawidłowy. Nieprawidłowy czas będzie miał wpływ na wszelkie zatwierdzenia wykonane w GitHub.
Aby mieć pewność, że Twoja maszyna wirtualna ma prawidłowy czas, możesz zainstalować ntp za pomocą
sudo apt-get install ntp
sudo /etc/init.d/ntp restart
, a następnie wykonaj następujące czynności po uruchomieniu maszyny wirtualnej ze stanu wstrzymania
sudo /etc/init.d/ntp restart
Powyższe spowoduje ponowną synchronizację zegara.
Rozwiązywanie konfliktów pomiędzy wersjami Java
W sytuacjach, gdy zainstalowanych jest wiele wersji Java, komponenty BBB mogą napotkać błędy kompilacji. Jeden z takich komunikatów o błędach może na przykład zawierać informację, że plik '21' is not a valid choice for '-release'. Ten specyficzny błąd pojawia się, gdy komponent bbb-common-message wymaga do działania Java 21, ale narzędzie do kompilacji sbt używa zamiast tego starszej wersji.
Aby rozwiązać ten problem, musisz ustawić odpowiednią wersję Java. Następujące polecenie ustawi Java 21 jako wersję aktywną:
update-java-alternatives -s java-1.21.0-openjdk-amd64
Wykonując to polecenie, system otrzymuje polecenie użycia Java 21, tj. wersji, z którą BBB jest aktualnie kompatybilny.
Skonfiguruj HTTPS
Zobacz instrukcje instalacji, jak skonfigurować ssl na serwerze BigBlueButton.