Ubuntu 16.04 Üzerinde Kapsamlı BigBlueButton Kurulumu

Kapsamlı BigBlueButton İncelemesi - Açık Kaynak Sohbetleri 1. Bölüm

BigBlueButton, eğitim kurumlarına odaklı olarak geliştirilmiş, özgür ve açık kaynak kodlu bir web konferans yazılımıdır. HTML5 tabanlı bir web uygulaması olan BigBlueButton, tüm işletim sistemi ve platformları desteklemektedir.

Özellikleri
LTI 1.0 standartlarını destekleyen BigBlueButton’ı pek çok farklı LMS altyapısıyla entegrasyonu mevcuttur. LMS ve eklenti altyapısıyla gelebilecek ek özelliklerin dışında, BigBlueButton kullanıcılarına şu temel özellikleri sağlamaktadır:

  • Sınıflar, odalar, gruplar oluşturma
  • Beyaz tahta (Whiteboard) üzerinden öğretmen/öğrenci etkileşimi
  • Kullanıcı (Öğretmen/Sunumcu/Öğrenci) hak yönetimi
  • Ekran paylaşımı yönetimi
  • Dijital beyaz tahta üzerinden PDF yayınlama
  • Dijital beyaz tahta üzerinden eğitici videolar izleyebilme
  • Anket sorusu yayınlama

Minimum sunucu gereksinimleri:

  • Ubuntu 16.04 64-bit (4.x çekirdeğinde çalışmalı)
  • 8 GB RAM (16 GB RAM önerilir)
  • 4 CPU (8 CPU önerilir)
  • TCP 80 ve 443 portları açık olmalı
  • UDP 16384 - 32768 arası portlar açık olmalı
  • Port 80 başka bir uygulama tarafından kullanılmamalı
  • Sunucuda bulunan root ya da sudo yetkilerine sahip bir kullanıcı
  • SSH erişimi

Diğer gereksinimler:

  • 500GB ve fazla disk alanı (Kayıtlar için gerekecektir, SSD önerilir)
  • 250 Mbits simetrik internet ya da daha fazla
  • Dedicated (Bare metal) donanım önerilir
  • Bulut sunucu için DigitalOcean ve Vultr tavsiyemdir
  • SSL sertifikası için A DNS kaydı (bigbluebutton.sizinalanadiniz.com gibi…)
  • IPV4 ve IPV6 adresi

:information_source: Biz bu anlatımda etki alan adı olarak bigbluebutton.sizinalanadiniz.com, IP adresi olarak ise 49.12.77.51 kullandık bu değerleri anlatımda ilgili yerlerde kendi etki alan adınız ve IP adresinizle değiştirmelisiniz. Bunu yapmazsanız kurulum işlemi kesinlikle başarısız olacaktır.

Kuruluma başlayın

Sistem dil kontrolü yaparak başlayalım:

cat /etc/default/locale

Komut şu çıktıyı vermeli:

LANG="en_US.UTF-8"

Şöyle görünmeli:

Eğer eşleşmiyorsa şu iki komutu girin ve sonrasında yeniden kontrol edin:

sudo apt-get install language-pack-en -y
sudo update-locale LANG=en_US.UTF-8

Tekrar kontrol edin:

cat /etc/default/locale

Şu çıktıyı vermeli:

LANG="en_US.UTF-8"

İşletim sistemi kontrolü:

cat /etc/lsb-release

Şu çıktıyı vermeli:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.x LTS"

Şöyle görünmeli:

DISTRIB_DESCRIPTION="Ubuntu 16.04.x LTS" değilse kuruluma devam etmeyin.

Sistem kontrolü #2:

uname -m

Şu çıktıyı vermeli:

x86_64

Şöyle görünmeli:

İşlemci gereksinimi kontrolü:

lscpu

En az şu çıktıyı vermelidir:

4

Bizim test kurulumu sunucumuzda 16 çekirdek mevcut ancak dikkat etmeniz gereken nokta minimum 4 olmalıdır:

Şöyle görünecektir:

Bu değeri vermiyorsa kuruluma devam etmeyin.

Sistem güncellemelerini kontrol edin ve BigBlueButton yükleyin

sudo apt-get update
sudo apt-get upgrade -y

:white_check_mark: Önerilen kurulum türleri :white_check_mark:

Otomatik Greenlight olmadan sadece BigBlueButton kurulumu:

wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-220 -a

Otomatik BigBlueButton + Greenlight kurulumu (SSL sertifkası kurulmayacaktır):

wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-220 -s bigbluebutton.sizinalanadiniz.com -e [email protected] -g

Otomatik BigBlueButton + Greenlight + Let’s Encrypt anahtar teslim kurulum:

Elle kurulum:

:warning: Önerilmeyen kurulumdur, ancak yinede lazım olabilir diye sunuyorum :warning:

Manuel kurulum

Paket depolarını kontrol edin:

grep "multiverse" /etc/apt/sources.list

Çıktıda şu kısımları arayın yoksa alttaki komutla devam edin:

deb http://archive.ubuntu.com/ubuntu xenial multiverse

ya da

deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse

Depoyu eklemek için:

echo "deb http://archive.ubuntu.com/ubuntu/ xenial multiverse" | sudo tee -a /etc/apt/sources.list

Test ve geliştirme için bir VM’ye BigBlueButton’u yükleyen bir geliştiriciyseniz, Tomcat gibi bazı BigBlueButton bileşenlerinin başlangıç sırasında bir entropi kaynağına ihtiyacı vardır. VM’de Tomcat için mevcut entropi düşükolabilir, başlatma işlemini tamamlamadan önce uzun süre (bazen dakikalar) bloke edebilir. VM’ye çok sayıda entropi vermek için, haveged (basit bir entropi arka plan programı) adı verilen bir paket kurmalısınız:

sudo apt-get install haveged -y

BigBlueButton için gereken ve kurmamız gereken iki uygulama daha var. ffmpeg (kayıt oluşturmak için) ve yq (YAML dosyalarını güncellemek için). Ubuntu 16.04’teki ffmpeg'in varsayılan sürümü eski ve yq varsayılan depolarda mevcut değil. Bu nedenle, BigBlueButton’u yüklemeden önce, doğru sürümleri yüklediğinizden emin olmak için sunucunuza aşağıdaki kişisel paket arşivlerini (PPA) eklemeniz gerekir.

sudo add-apt-repository ppa:bigbluebutton/support -y
sudo add-apt-repository ppa:rmescandon/yq -y

Sistem güncellemelerini kontrol edin ve yükleyin:

sudo apt-get update
sudo apt-get dist-upgrade -y

BigBlueButton HTML5 istemcisi, istemcilerin durumunu senkronize etmek için kullanılan çok verimli bir veritabanı olan MongoDB’yi kullanır. MongoDB’yi kurmak için aşağıdaki komutları çalıştırın:

wget -qO - https://www.mongodb.org/static/pgp/server-3.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org curl

BigBlueButton HTML5 istemcisi bir nodejs sunucusu gerektirir. Node kurmak için aşağıdakileri yapın:

wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | sudo apt-key add -

Sonrasında sırası ile:

echo "deb http://archive.ubuntu.com/ubuntu/ xenial multiverse" | sudo tee -a /etc/apt/sources.list
sudo apt-get install haveged -y
sudo add-apt-repository ppa:bigbluebutton/support
sudo add-apt-repository ppa:rmescandon/yq
sudo apt-get update
sudo apt-get dist-upgrade
wget -qO - https://www.mongodb.org/static/pgp/server-3.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | sudo apt-key add -
sudo apt-get install bigbluebutton
sudo apt-get install bbb-html5
sudo bbb-conf --restart
sudo bbb-conf --status

Etki alan adınızı yapılandırın

sudo bbb-conf --setip bigbluebutton.sizinalanadiniz.com

Greenlight için Docker kurulumu

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88

Alttaki komutu bir bütün halinde SSH ekranınıza yapıştırın:

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Paketleri güncelleyin:

sudo apt-get update

Docker kurulumunu yapın

sudo apt-get install docker-ce docker-ce-cli containerd.io nano -y

Greenlight kurulumu

Gerekli dizini oluşturun ve ilgili dizine gidin:

mkdir ~/greenlight && cd ~/greenlight

Greenlight, ortam yapılandırmasını .env dosyasından okuyacaktır. Bu dosyayı oluşturmak ve Greenlight Docker imajını yüklemek için şunu çalıştırın:

docker run --rm bigbluebutton/greenlight:v2 cat ./sample.env > .env

Daha sonra şu komut sonrası oluşturulan Greenlight gizli anahtarını not edin:

docker run --rm bigbluebutton/greenlight:v2 bundle exec rake secret

Örnek çıktı:

bbbb88f3dce411e706327abc8df673912fd3ff1decfa4b24c9a349acaff807a6d35a5473aacc0f9a06852275295a105e3d7e8f6496e2378a7709529e1b6ca78e

Alttaki komut ile .env dosyasını düzenlemek için açın:

nano .env

Açılan ekrandan SECRET_KEY_BASE kısmına az önce oluşturduğunuz gizli anahtarı yapıştırın ve kaydedip çıkın.
Şöyle görünmeli:

Şu komutu çalıştırın ve komut sonrası oluşturulan BigBlueButton gizli anahtarını not edin:

sudo bbb-conf --secret

Örnek çıktı:

URL: https://bigbluebutton.sizinalanadiniz.com/bigbluebutton/
Secret: f1ea9564HdRtUcdjJEiZgCKhGpJnaPqspyTGE3WGN8

Alttaki komut ile .env dosyasını düzenlemek için açın:

nano .env

Açılan ekrandan BIGBLUEBUTTON_ENDPOINT ve BIGBLUEBUTTON_SECRET kısmına az önce oluşturduğunuz gizli anahtarı yapıştırın ve kaydedip çıkın.

Şöyle görünmeli:

API kontrolü yapmak için alttaki adresi kendinize göre düzenleyip ziyaret edebilirsiniz:

https://mconf.github.io/api-mate/#server=https://bigbluebutton.sizinalanadiniz.com/bigbluebutton/&sharedSecret=f1ea9564HdRtUcdjJEiZgCKhGpJnaPqspyTGE3WGN8

Şöyle bir ekran görmelisiniz:

Alttaki komut ile .env dosyasını düzenlemek için açın:

nano .env

ENABLE_SSL=true kısmını bulun ve başındaki # işaretini silerek etkinleştirin.

Şöyle görünmeli:

Yapılandırmanızı kontrol edin:

docker run --rm --env-file .env bigbluebutton/greenlight:v2 bundle exec rake conf:check

Çıktı şu şekilde olmalı:

Checking environment: Passed
Checking Connection: Passed
Checking Secret: Passed

Şöyle görünmeli yani:

Greenlight ile Nginx’i yapılandırın

docker run --rm bigbluebutton/greenlight:v2 cat ./greenlight.nginx | sudo tee /etc/bigbluebutton/nginx/greenlight.nginx

Nginx’i yeniden başlatın:

sudo systemctl restart nginx

BigBlueButton ana ekranını Greenlight ile yapılandırın

sudo nano /etc/nginx/sites-available/bigbluebutton

En sonda bulunan } karakterinden öncesine ekle:

location = / {
return 307 /b;
}

Şöyle görünmeli:

Nginx’i yeniden başlatın:

sudo systemctl restart nginx

Greenlight için Docker Compose kurulumu

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Greenlight’ı başlatın

cd ~/greenlight
docker-compose --version

Şöyle görünmeli:

docker run --rm bigbluebutton/greenlight:v2 cat ./docker-compose.yml > docker-compose.yml
export pass=$(openssl rand -hex 8); sed -i 's/POSTGRES_PASSWORD=password/POSTGRES_PASSWORD='$pass'/g' docker-compose.yml;sed -i 's/DB_PASSWORD=password/DB_PASSWORD='$pass'/g' .env
docker-compose up -d

:information_source: Greenlight’ı ileride yeniden başlatmak isterseniz sırasıyla şu komutları çalıştırabilirsiniz:

cd ~/greenlight
docker-compose down
docker-compose up -d

Gerekli yapılandırmalara devam edelim:

sudo apt-get update
sudo apt-get install ufw -y
sudo apt-get install software-properties-common -y
sudo add-apt-repository universe

Let’s Encrypt yapılandırma işlemleri

Enter tuşu ile onayınız istenecektir:

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get install certbot -y
sudo mkdir -p /etc/nginx/ssl

Bu komutun tamamlanması sunucu hızınıza göre 15/30 dakika arası sürebilir:

sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096

Bu komut sonrası anahtar oluşturma süreci bizde tam olarak şu kadar (12 dakika) sürdü :smiley:

Güvenlik duvarı ve bağlantı noktası yapılandırması

ufw allow OpenSSH
ufw allow "Nginx Full"
ufw allow 16384:32768/udp
ufw --force enable

Let’s Encrypt ile SSL sertifikasını oluşturun

sudo certbot --webroot -w /var/www/bigbluebutton-default/ -d bigbluebutton.sizinalanadiniz.com certonly

Komut sonrası şu şekilde devam edin:

  1. E-posta adresinizi girin,
  2. Sözleşmeyi A ile kabul edin,
  3. Y ile E-posta listesine kayıt olun.

İşlem şu şekilde görünmeli:

Nginx blok düzenleme

nano /etc/nginx/sites-available/bigbluebutton

Şu alanı bulun:

server {
server_name bigbluebutton.sizinalanadiniz.com;
listen 80;
listen [::]:80;

Hemen altına şunları ekleyin:

  listen 443 ssl;
  listen [::]:443 ssl;
  ssl_certificate /etc/letsencrypt/live/bigbluebutton.sizinalanadiniz.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/bigbluebutton.sizinalanadiniz.com/privkey.pem;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 10m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
  ssl_prefer_server_ciphers on;
  ssl_dhparam /etc/nginx/ssl/dhp-4096.pem;

Şöyle görünmeli:

Otomatik Let’s Encrypt sertifikasını yenileme ayarı:

sudo crontab -e

Şu şekilde olmalıdır:

Birinci seçeneği kabul edin ve sonra açılan dosyanın en altına ekleyin:

30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
35 2 * * 1 /bin/systemctl reload nginx

Şöyle görünmeli:

SSL için yapılandırmalar:

nano /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties

Bul ve şuna değiştir (HTTP > HTTPS):

#----------------------------------------------------

# This URL is where the BBB client is accessible. When a user successfully

# enters a name and password, she is redirected here to load the client.

bigbluebutton.web.serverURL=https://bigbluebutton.sizinalanadiniz.com

Şöyle görünmeli:

Daha sonra:

sudo nano /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties

Bul ve şuna değiştir (HTTP > HTTPS):

streamBaseUrl=rtmp://bigbluebutton.sizinalanadiniz.com/screenshare
jnlpUrl=https://bigbluebutton.sizinalanadiniz.com/screenshare
jnlpFile=https://bigbluebutton.sizinalanadiniz.com/screenshare/screenshare.jnlp

Şöyle görünmeli:

Daha sonra:

nano /opt/freeswitch/conf/sip_profiles/external.xml

Bul:

<param name="tls-version" value="${sip_tls_version}"/>
    <param name="ws-binding" value=":5066"/>

Şuna değiştir:

<param name="tls-version" value="${sip_tls_version}"/>
    <param name="wss-binding" value=":7443"/>

Sunucunuzda bir güvenlik duvarınız varsa ve daha önce 5066 numaralı bağlantı noktasını açtıysanız, kuralı şimdi 7443 numaralı bağlantı noktasını aç olarak değiştirin:

Sonrasında:

nano /etc/bigbluebutton/nginx/sip.nginx

Bul:

location /ws {
  proxy_pass https://sunucuipadresiniz:5066;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
  proxy_read_timeout 6h;
  proxy_send_timeout 6h;
  client_body_timeout 6h;
  send_timeout 6h;
}

Şuna değiştir:

location /ws {
  proxy_pass https://sunucuipadresiniz:7443;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
  proxy_read_timeout 6h;
  proxy_send_timeout 6h;
  client_body_timeout 6h;
  send_timeout 6h;
}

Ek yapılandırma:

sudo sed -e 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml

Daha sonra:

nano /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml

Bul:

kurento:
wsUrl: ws://bigbluebutton.sizinalanadiniz.com/bbb-webrtc-sfu

Şuna değiştir (WS: > WSS:)

kurento:
wsUrl: wss://bigbluebutton.sizinalanadiniz.com/bbb-webrtc-sfu

Şöyle görünmeli:

Bul:

note:
enabled: true
url: http://bigbluebutton.sizinalanadiniz.com/pad

Şuna değiştir (HTTP > HTTPS):

note:
enabled: true
url: https://bigbluebutton.sizinalanadiniz.com/pad

Şöyle görünmeli:

nano /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml

Bul ve şuna değiştir (HTTP > HTTPS):

playback_protocol: https

Şöyle görünmeli:

Demo sistem verilerini kaldırın:

sudo apt-get remove bbb-demo -y
sudo apt-get purge bbb-demo -y

Sadece demolar yüklü ise bu işlemi yapabilirsiniz (Bizim kurulumuzda bu işleme gerek yok):

nano /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp

Bul ve şuna değiştir:

// This is the URL for the BigBlueButton server
String BigBlueButtonURL = "https://bigbluebutton.sizinalanadiniz.com/bigbluebutton/";

Yeniden başlat:

sudo bbb-conf --restart

WebRTC için bir kaç yapılandırma:

nano /etc/sysctl.conf

Şunu bul ve böyle görünmesini sağla (Başındaki # işaretini kaldırmalısınız):

net.ipv4.tcp_syncookies = 1

Şöyle görünmeli:

BBB’nin kendine bağlanabilmesi için:

nano /etc/hosts

Yerel IP adresinin üzerine ekleyin:

49.12.77.51 bigbluebutton.sizinalanadiniz.com bigbluebutton

Şöyle görünmeli:

İleride yaşanabilecek hataları önlemek için:

nano /etc/bigbluebutton/nginx/sip.nginx

proxy_pass kısmı şöyle ayarlanmalı (HTTP > HTTPS ve 566 > 7443):

proxy_pass https://49.12.77.51:7443;

Şöyle görünmeli:

Sistemsel hataları kontrol edin:

sudo bbb-conf --check

Hesap oluşturma işlemi:

Normal kullanıcı:

cd ~/greenlight
docker exec greenlight-v2 bundle exec rake user:create["Muhammed Yalcinkaya","[email protected]","muhyal123456bbb","user"]

Yönetici yetkileri olan kullanıcı:

docker exec greenlight-v2 bundle exec rake user:create["Muhammed Yalcinkaya","[email protected]","muhyal123456bbb","admin"]

Harika :slight_smile: Şimdi etki alan adınıza gidin ve BigBlueButton’da oturum açın:

Kurulumdan ve oturum açma işleminden sonra mutlaka ziyaret edin:

Bizim yaptığımıza kuruluma ait ekran görüntülerini inceleyin :point_down::sunglasses::point_down:

BigBlueButton Ekran Görüntüleri

1 Beğeni

Emeğinize sağlık hocam.

1 Beğeni

8 gönderi yeni bir konuya bölündü: BigBlueButton Kendi SSL Sertifikamızı Nasıl Yükleyebiliriz?

2 gönderi yeni bir konuya bölündü: BigBlueButton 1002 hatası veriyor, ses çalışıyor, kamera ve ekran paylaşımı çalışmıyor

4 gönderi yeni bir konuya bölündü: BigBlueButton “Error: Unable to connect to the FreeSWITCH Event Socket Layer on port 8021” Hatası