Herkese merhaba, tüm dünyayı saran pandemi ile beraber çalışma hayatı evlere taşındı. Durum böyle olunca “uzaktan eğitim” “uzaktan çalışma” “online konferans” gibi kavramlar hayatın merkezine yerleşti.
Piyasaya baktığımızda bu işi çok iyi yapan bir çok ücretli yazılım mevcut. Bu makalede ücretli yazılımlara alternatif olarak açık kaynak kodlu, temeli BigBlueButton olan GreenLight konferans sistemini sizler ile taştırmak istiyorum.
Açık kaynak kodlu bu tarz projelere baktığımızda genellikle bir yönetim arabirimi olmadığını görüyoruz ( örneğin jitsi ). BigBlueButton bu işi GreenLight ile çözmüş görünüyor. GreenLight aslında BigBlueButton üzerine yerleştirilmiş ( aslında yanına : ) ) web tabanlı grafik arabirim sunuyor ve böylece toplantı odalarını yönetebiliyor, kullanıcı yetkilendirme gibi bir çok yönetimsel işlemleri yapabiliyorsunuz.
Kuruluma geçeden önce minimum sistem gereksinimilerini yazmak istiyorum.
- Ubuntu 16.04 64-bit
- 4 Core İşlemci – Min
- 8 GB Ram – Min
- 500 GB Disk Alanı
- 250 Mbits veya daha fazla (Simetrik bağlantı-Prod ortam için önerilen )
- TCP port 80 ve 443 UDP ports 16384 – 32768
Kurulum
Kuruluma BigBlueButton ile başlıyoruz. Yazının başında da belirttiğim gibi sistem BigBlueButton ile beraber çalışıyor.
BigBlueButton kurulumuna başlamadan önce bazı parametreleri kontrol etmemiz gerekiyor.
Bunlardan ilki dil ve bölgesel ayarlar. Bölgesel ayarların aşağıdaki gibi olması gerekli.
"en_US.UTF-8"
Bunu kontrol etmek için aşağıdaki komutu kullanıyoruz.
cat /etc/default/locale
Bu komutun çıktısı “en_US.UTF-8” olmalı.
Eğer değilse aşağıdaki iki komutu çalıştırmanız gerekiyor. Bunun neticesinde tekrar yukardaki komutu kullanarak durumu kontrol edebilirsiniz. Bu çok önemli yoksa kurulumda hata alırsınız.
$ sudo apt-get install language-pack-en
$ sudo update-locale LANG=en_US.UTF-8
Kurulum öncesi kontrol edilmesi gereken diğer bir nokta IPv6 desteğinin kapalı olması. Aşağıdaki komut sizi bilgilendiriyor.
ip addr | grep inet6
Eğer çıktı “inet6 ::1/128 scope host” böyle değilse kapatmanız gerekliyor.
Sıra geldi repositoryleri kontrol etmeye.
grep "multiverse" /etc/apt/sources.list
Yukarıdaki komutun çıktısınında aşağıdaki iki repodan birini görmeniz gerekiyor.
deb http://archive.ubuntu.com/ubuntu xenial multiverse
veya
deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
Eğer yoksa aşağıdaki komut ile ekleyebilirsiniz.
echo "deb http://archive.ubuntu.com/ubuntu/ xenial multiverse" | sudo tee -a /etc/apt/sources.list
Aşağıdaki komut ile geliştiricler için bazı komponentler yükleniyor. Opsiyonel bir seçenek yüklemek zorunda değilsiniz.
BigBlueButton, HTML5 arayüzü için mongadb ve nodejs kullanıyor. Yüklemeye başlıyoruz.
1-) wget -qO - https://www.mongodb.org/static/pgp/server-3.4.asc | sudo apt-key add -
2-) 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
apt-get update
mongodb’i kuruyorum
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
Evet artık BBB ( BigBlueButton ) kurulumu için hazır sayılırız. Aşağıdaki iki komutumuzuda girerek repolarımız ekledik.
wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | sudo apt-key add -
echo "deb https://ubuntu.bigbluebutton.org/xenial-22/ bigbluebutton-xenial main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list
apt-get update
Aşağıdaki iki komut ile BBB kurulumlarını yapıyoruz.
sudo apt-get install bigbluebutton
sudo apt-get install bbb-html5
Kurulum bitti ve her şey sağlıklı çalışıyor gözüküyor.
sudo bbb-conf --check
sudo bbb-conf --status
Şimdi sıra SSL ayarlarına. İlk önce aşağıdaki komut ile sisteme alan adınızı tanıtıyorsunuz.
sudo bbb-conf --setip alan adınız
Sıra geldi Sertifika işlemine ben bu makalede Let’s Encrypt ile ücrestsiz sertifika alacağım. Sırasıyla aşağıdaki komutları giriyorum.
- sudo apt-get update
- sudo apt-get install software-properties-common
- sudo add-apt-repository universe
- sudo add-apt-repository ppa:certbot/certbot
- sudo apt-get install certbot
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096
sudo certbot --webroot -w /var/www/bigbluebutton-default/ -d alanadınız certonly
NOT: Alan adınızın tamamını girmeniz gerekiyor “alanadiniz.com” gibi.
Aşağıdaki komutu yazdığınızda, oluşturulmuş olan sertifika ve keyleri görebiliyorsunuz.
ls /etc/letsencrypt/live/alan adınız/
Sırada sertifikayı sisteme eklemeye geldi. Aşağıdaki dosyayı bir editör ile açın mesela “nano”
nano /etc/nginx/sites-available/bigbluebutton
Aşağıdaki satıları kopyalayıp kendinize göre düzenleyin (“alan adı” kısımlarını) ve açtığınız dosyaya yapıştırın.
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/alan adınız/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/alan adınız/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;
Dosyayı düzenlediğizde aşağıdaki gibi gözükecek.
server {
server_name alan adınız;
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/alan adınız/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/alan adınız/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;
Sonrasında cron ile zamanlama ayarlıyoruz böylece sertifika otomatik olarak yenilenecek ve sizin bir şey yapmanıza gerek kalmayacak.
HTTPS kullanmaya başladığımız için bir kaç değişiklik yapmaya ihtyiacımız var.
Aşağıdaki dosyayı açıp “http” değiştirip “https” yapıyoruz.
/etc/bigbluebutton/nginx/sip.nginx
/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
nano /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties
sudo sed -e 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml
“ws” leri “wss” yapıyoruz.
nano /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
nano /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml
Evet tüm değişiklikleri yaptık ve BBB resetledik.
sudo bbb-conf --restart
Buraya kadar BBB kurulumu ve ayarlarını tamamladık. Sıra geldi GreenLight Kurulumuna
GreenLight, docker üzerine çalışıyor. Bu yüzden sisteminzde docker’ın yüklü olması gerekiyor.
İlk olarak docker kurulumu yapıyoruz. Aşağıdaki tüm komut bloğunu kopyala-yapıştır yapınız.
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Aşağıdaki komut ile docker kurulumunu yapıyoruz.
sudo apt-get install docker-ce docker-ce-cli containerd.io
Sistem üzerinde iki klasör oluşturuyoryuz.
mkdir ~/greenlight && cd ~/greenlight
Aşağıdaki komut sisteme GreenLight docker image’ını yüklüyor.
docker run --rm bigbluebutton/greenlight:v2 cat ./sample.env > .env
Aşağıdaki komutu kullanarak bir kod üreteceğiz. Sonrasında bu kod greenlight klasörü içersinideki “.env” dosyasına ekleyeceğiz.
docker run --rm bigbluebutton/greenlight:v2 bundle exec rake secret
Oluşturmuş olduğum kodu “SECRET_KEY_BASE” kısmına ekliyoruz.
Şimdi sıra BBB için bir secret key oluşturmaya geldi ve yine bunuda .env içerisine ekleyeceğim.
sudo bbb-conf --secret
Ve sonra olarak istenmesi durumunda bir güvenlik önemli olarak “SAFE_HOSTS” kısmına erişim adresinizi tam olarak yazabilirsiniz.
Aşağıdaki komut sistemi test ediyor ve konfig de bir sorun var mı yok mu size bilgi veriyor.
docker run --rm --env-file .env bigbluebutton/greenlight:v2 bundle exec rake conf:check
docker run --rm bigbluebutton/greenlight:v2 cat ./greenlight.nginx | sudo tee /etc/bigbluebutton/nginx/greenlight.nginx
sudo systemctl restart nginx
Sonrasında yeniden aşağıdaki dosyayı düzenliyoruz.
nano /etc/nginx/sites-available/bigbluebutton
Aşağıdaki satırı ekliyoruz.
location = / {
return 307 /b;
}
Aşağıdaki gibi görünecek.
Sıra geldi dockercompose kurulumuna.
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/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
docker-compose --version
docker run --rm bigbluebutton/greenlight:v2 cat ./docker-compose.yml > docker-compose.yml
Aşağıdaki komut random bir şifre üretip sisteme ekliyor.
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’ı ayağa kaldırıyoruz.
docker-compose up -d
Evet kurulum tamalandı. Şimdi giriş için admin yetkilere sahip kullanıcı oluşturacağız
Default olarak kullanıcı adı: admin@example.com şifre: administrator
docker exec greenlight-v2 bundle exec rake admin:create
Sisteme giriş yapmadan önce bir kaç ayarımız kaldı. Birinci aşağıdaki ayarı yaparak sistemin “HTTPS” yönlendirmesini yapmış oluyoruz.
Son olarak sistemin HTML5 olarak açılması için aşağıdaki ayarları yapıyorum
nano /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
attendeesJoinViaHTML5Client=true "false dan true çekiyorum"
moderatorsJoinViaHTML5Client=true "false dan true çekiyorum"
Giriş yapıyoruz.
Yeni bir oda oluşturuyoruz.
Görüldüğü gibi başarılı bir şekilde giriş yaptım.
Makalemizin sonuna geldik. Sizde açık kaynak kodlu,ücretsiz aynı zamanda çok kullanışlı ve geliştirmeye açık bir alternatif arayışınız varsa GreenLight size bir fark yaratabilir.
Keyifli okumalar.