Ubuntu Tabanlı Sistemlerde Bash Jitsi - Jibri - Jigasi Kurulumu

Jitsi, ücretli olan platformlara Skype alternatifi, Microsoft Teams alternatifi, Zoom alternatifi olarak ortaya çıkarılan ve yıllardır başarılı bir şekilde açık kaynak kodlu olarak geliştirilen, güvenli, ücretsiz video konferans, sunum çözümleri kurmanızı sağlayan bir projeler dizisidir.

Jitsi’nin kalbinde, internet üzerinden konferans oluşturmaya izin veren Jitsi Videobridge, Jibri, Jigasi ve Jitsi Meet gibi topluluğun diğer yazılımları yer alıyor. Ses ve video kullanarak internette insanlarla konuşmanın bir yolu olarak başlayan proje on yıllık serüvenin ardından bugün canlı bir geliştirici topluluğuna sahip.

Platformu kendi sunucunuza kurup video konferanslarınızı herhangi bir servisin gizlilik politikalarına kafanızı takamadan kullanabilirsiniz. Yazılımın yeteneklerini hemen denemek için buradan kayıt vb. gerekmeksizin bir kanal oluşturup arkadaşlarınızı çağırabilirsiniz.

Web üzerinden çalışabildiği gibi iOS, Android mobil uygulamaları ve macOS, Windows masaüstü uygulamaları da olan yazılımın herhangi bir kullanıcı sınırı bulunmuyor. Tek sınır sunucunuzun bant genişliği ve işlemci, bellek gibi diğer kaynakları.

Platformun genel özelliklerini şu şekilde sıralayabiliriz:

  • Açık kaynak kodlu. İndirip kendi sunucunuzda çalıştırabilirsiniz.
  • Kurulum gerektirmiyor. Web’den tarayıcı üzerinden doğrudan çalışabiliyor.
  • Kullanımı kolay. Kanal bağlantısını paylaşarak insanları video konferansınıza davet edebiliyorsunuz.
  • Ekran paylaşımı ile uzaktan eğitim, sunum yapabilirsiniz.
  • Düşük bant genişliği ihtiyacı.
  • Sınırsız kullanıcı desteği.
  • Güvenli görüşme imkanı. Konferanslarınızı parola denetimli hale getirebilirsiniz.
  • Paylaşımlı notlar. Etherpad (topluluk halinde çevrimiçi kullanılabilen bir editör) entegrasyonu mevcuttur.

Bu makalemizde sizlerle Ubuntu sunucunuza hızlı bir şekilde bu projeler dizisini yükleyebileceğiniz Bash yükleyicisini paylaşacağız. Bu Bash yükleyicisi tüm yazılımları ve konfigürasyonları sizin yerinize tamamlayacak ve sizden sadece kurulum yapılırken gerekli bir kaç şeyi talep edecektir.

Sistem güncellemelerini kontrol etmek ve yüklemek için sırasıyla şu komutları girelim;

sudo apt update
sudo apt upgrade -y

Daha sonra sunucumuzu yeniden başlatalım;

reboot

Sunucumuz yeniden başlatıldığında SSH ile tekrar bağlanıp muhyaljjjyukleyici.sh dosyasını oluşturalım ve nano editörü ile açalım;

sudo nano muhyaljjjyukleyici.sh

Bu komut sonrası açılan ekrana alttaki kodları kopyalayıp, yapıştırın.

#!/bin/bash
# Hızlı Jitsi - Jibri - Jigasi Yükleyici - *buntu 16.04+ (LTS) tabanlı sistemler içindir.
# MUHYAL © - 2020, https://www.muhyal.com
# GPLv3 or later.

# SİSTEM YÜKLEMESİ
JITSI_UNS_REPO=$(apt-cache policy | grep http | grep jitsi | grep unstable | awk '{print $3}' | head -n 1 | cut -d "/" -f 1)
CERTBOT_REPO=$(apt-cache policy | grep http | grep certbot | head -n 1 | awk '{print $2}' | cut -d "/" -f 4)
APACHE_2=$(dpkg-query -W -f='${Status}' apache2 2>/dev/null | grep -c "ok installed")
NGINX=$(dpkg-query -W -f='${Status}' nginx 2>/dev/null | grep -c "ok installed")
DIST=$(lsb_release -sc)
GOOGL_REPO="/etc/apt/sources.list.d/dl_google_com_linux_chrome_deb.list"

if [ $DIST = flidas ]; then
DIST="xenial"
fi
install_ifnot() {
if [ "$(dpkg-query -W -f='${Status}' $1 2>/dev/null | grep -c "ok installed")" == "1" ]; then
	echo " $1 yüklenmiş, atlanıyor..."
    else
    	echo -e "\n---- $1 Yükleniyor ----"
		apt -yqq install $1
fi
}
check_serv() {
if [ "$APACHE_2" -eq 1 ] || [ "$NGINX" -eq 1 ]; then
	echo "
Web sunucusu zaten yüklenmiş!
"
elif [ "$APACHE_2" -eq 1 ] && [ "$NGINX" -eq 0 ]; then

echo "
Apache web sunucusu zaten yüklenmiş!
"

else
	echo "
nginx web sunucusu olarak yükleniyor!
"
	install_ifnot nginx
fi
}
check_snd_driver() {
modprobe snd-aloop
echo "snd-aloop" >> /etc/modules
if [ "$(lsmod | grep snd_aloop | head -n 1 | cut -d " " -f1)" = "snd_aloop" ]; then
	echo "Sistem ses sürücüleri iyi görünüyor."
else
	echo "Ses sürücünüzle ilgili bir sorun var gibi görünüyor, lütfen devam etmeden önce bunu düzeltin."
	#exit
fi
}
update_certbot() {
	if [ "$CERTBOT_REPO" = "certbot" ]; then
	echo "
Certbot repo zaten sisteminizde bulunuyor!
Güncellemeler kontrol ediliyor...
"
	apt -qq update
	apt -yqq dist-upgrade
else
	echo "
Son güncellemeleri almak için certbot (letsencrypt) PPA repo ekleniyor
"
	echo "deb http://ppa.launchpad.net/certbot/certbot/ubuntu $DIST main" > /etc/apt/sources.list.d/certbot.list
	apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 75BCA694
	apt -qq update
	apt -yqq dist-upgrade
fi
}

clear
echo '
########################################################################
                    Jitsi/Jibri/Jigasi Yükleyicisine Hoş Geldiniz
########################################################################
                    MUHYAL tarafından sunulmuştur - https://www.muhyal.com
'

#root yetkilerini kontrol et
if ! [ $(id -u) = 0 ]; then
   echo "root kullanıcısı olmanız veya sudo ayrıcalıklarına sahip olmanız gerekir!"
   exit 0
fi

# Jitsi-Meet Repo
echo "Jitsi anahtarları ekleniyor"
if [ "$JITSI_UNS_REPO" = "unstable" ]; then
	echo "Jitsi stabil olmayan repo zaten yüklenmiş."
else
	echo 'deb https://download.jitsi.org unstable/' > /etc/apt/sources.list.d/jitsi-unstable.list
	wget -qO -  https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
fi

# Gereksinimler
echo "Bu biraz zaman alabilir sistem gereksinimlerini yükleyerek başlayacağız, lütfen sabırlı olun..."
apt update -yq2
apt dist-upgrade -yq2
apt -yqq install \
				bmon \
				curl \
				ffmpeg \
				git \
				htop \
				letsencrypt \
				linux-image-extra-virtual \
				unzip \
				wget
check_serv

echo "
#--------------------------------------------------
# Jitsi Framework Yükle
#--------------------------------------------------
"
apt -yqq install \
				jitsi-meet \
				jibri

echo "
#--------------------------------------------------
# NodeJS Yükle
#--------------------------------------------------
"
if [ "$(dpkg-query -W -f='${Status}' nodejs 2>/dev/null | grep -c "ok")" == "1" ]; then
		echo "Nodejs zaten yüklü, atlanıyor..."
    else
		curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
		apt install -yqq nodejs
		echo "nodejs esprima paketi yükleniyor..."
		npm install -g esprima
fi

if [ "$(npm list -g esprima 2>/dev/null | grep -c "empty")" == "1" ]; then
	echo "nodejs esprima paketi yükleniyor..."
	npm install -g esprima
elif [ "$(npm list -g esprima 2>/dev/null | grep -c "esprima")" == "1" ]; then
	echo "Gayet iyi. Esprima paketi zaten yüklenmiş."
fi

# Google repo ayarlanıyor
echo "snd-aloop" | tee -a /etc/modules
check_snd_driver
CHD_VER=$(curl -sL https://chromedriver.storage.googleapis.com/LATEST_RELEASE)
echo "# Google Chrome / ChromeDriver yükleniyor."
if [ -f $GOOGL_REPO ]; then
echo "Google repo zaten ayarlanmış."
else
echo "Google Chrome yükleniyor."
	wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
	echo "deb http://dl.google.com/linux/chrome/deb/ stable main" | tee $GOOGL_REPO
fi
apt -qq update
apt install -yqq google-chrome-stable
rm -rf /etc/apt/sources.list.d/dl_google_com_linux_chrome_deb.list

if [ -f /usr/local/bin/chromedriver ]; then
	echo "Chromedriver zaten yüklenmiş."
else
	echo "Chromedriver yükleniyor."
	wget https://chromedriver.storage.googleapis.com/$CHD_VER/chromedriver_linux64.zip -O /tmp/chromedriver_linux64.zip
	unzip /tmp/chromedriver_linux64.zip -d /usr/local/bin/
	chown root:root /usr/local/bin/chromedriver
	chmod 0755 /usr/local/bin/chromedriver
	rm -rf /tpm/chromedriver_linux64.zip
fi

echo "
Google yazılımlarının çalışabilirliğini kontrol et...
"
/usr/bin/google-chrome --version
/usr/local/bin/chromedriver --version | awk '{print$1,$2}'

echo '
########################################################################
                    Jibri ayarlanıyor...
########################################################################
'
# MEET / JIBRI YÜKLEME
DOMAIN=$(ls /etc/prosody/conf.d/ | grep -v localhost | awk -F'.cfg' '{print $1}' | awk '!NF || !seen[$0]++')
JB_AUTH_PASS_FILE=/var/JB_AUTH_PASS.txt
JB_REC_PASS_FILE=/var/JB_REC_PASS.txt
PROSODY_FILE=/etc/prosody/conf.d/$DOMAIN.cfg.lua
JICOFO_SIP=/etc/jitsi/jicofo/sip-communicator.properties
MEET_CONF=/etc/jitsi/meet/$DOMAIN-config.js
CONF_JSON=/etc/jitsi/jibri/config.json
DIR_RECORD=/tmp/recordings
REC_DIR=/home/jibri/finalize_recording.sh
JB_NAME="Jibri Sessions"
LE_RENEW_LOG="/var/log/letsencrypt/renew.log"
echo "## Jitsi Meet dilini ayarla ##
Bir dil seçimi yapınız (ISO 639-1);
	English -> en
	Spanish -> es
	German -> de
	...
Jitsi Meet web arayüzü bu dili kullanacak şekilde ayarlanacaktır (varsa).
"
read -p "Dil kodunu yazın:"$'\n' -r LANG
read -p "Jibri internal.auth.$DOMAIN şifresi belirleyin: "$'\n' -sr JB_AUTH_PASS
read -p "Jibri recorder.$DOMAIN şifresi belirleyin: "$'\n' -sr JB_REC_PASS
read -p "Sistem yöneticisi e-posta adresi: "$'\n' -r SYSADMIN_EMAIL
while [[ $ENABLE_DB != yes && $ENABLE_DB != no ]]
do
read -p "Dropbox özelliği aktif edilsin mi: (yes ya da no)"$'\n' -r ENABLE_DB
if [ $ENABLE_DB = no ]; then
	echo "Dropbox etkinleştirilmedi."
elif [ $ENABLE_DB = yes ]; then
	read -p "Dropbox uygulama anahtarını yazın: "$'\n' -r DB_CID
fi
done
while [[ $ENABLE_SSL != yes && $ENABLE_SSL != no ]]
do
read -p "Alan adınıza LetsEncrypt SSL'i kurmak istiyor musunuz: (yes ya da no)"$'\n' -r ENABLE_SSL
if [ $ENABLE_SSL = no ]; then
	echo "Lütfen kurulumdan sonra el ile letsencrypt.sh komutunu çalıştırın."
elif [ $ENABLE_SSL = yes ]; then
	echo "SSL aktifleştirildi."
fi
done
#Jigasi
while [[ $ENABLE_TRANSCRIPT != yes && $ENABLE_TRANSCRIPT != no ]]
do
read -p "Jigasi Transcription kurulumunu yapmak istiyor musunuz?: (yes ya da no)"$'\n' -r ENABLE_TRANSCRIPT
if [ $ENABLE_TRANSCRIPT = no ]; then
	echo "Jigasi Transcription etkinleştirilmedi."
elif [ $ENABLE_TRANSCRIPT = yes ]; then
	echo "Jigasi Transcription aktifleştirildi."
fi
done

echo "$JB_AUTH_PASS" > $JB_AUTH_PASS_FILE
chmod 600 $JB_AUTH_PASS_FILE
echo "$JB_REC_PASS" > $JB_REC_PASS_FILE
chmod 600 $JB_REC_PASS_FILE
JibriBrewery=JibriBrewery
INT_CONF=/usr/share/jitsi-meet/interface_config.js
WAN_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)

ssl_wa() {
service $1 stop
	letsencrypt certonly --standalone --renew-by-default --agree-tos --email $5 -d $6
	sed -i "s|/etc/jitsi/meet/$3.crt|/etc/letsencrypt/live/$3/fullchain.pem|" $4
	sed -i "s|/etc/jitsi/meet/$3.key|/etc/letsencrypt/live/$3/privkey.pem|" $4
service $1 restart
	#Add cron
	crontab -l | { cat; echo "@weekly certbot renew --${2} > $LE_RENEW_LOG 2>&1 || mail -s 'LE SSL Errors' $SYSADMIN_EMAIL < $LE_RENEW_LOG"; } | crontab -
	crontab -l
}

enable_letsencrypt() {
if [ "$ENABLE_SSL" = "yes" ]; then
echo '
########################################################################
                    LetsEncrypt ayarlanıyor...
########################################################################
'
# upstream sorunu çözülene kadar pasif durumdadır
#bash /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

update_certbot

else
echo "SSL yüklemesi atlandı."
fi
}

check_jibri() {
if [ "$(dpkg-query -W -f='${Status}' "jibri" 2>/dev/null | grep -c "ok installed")" == "1" ]
then
	service jibri restart
	service jibri-icewm restart
	service jibri-xorg restart
else
	echo "Jibri hizmeti yüklenmedi."
fi
}

# Hizmetler yeniden başlatılıyor
restart_services() {
	service jitsi-videobridge restart
	service jicofo restart
	service prosody restart
	check_jibri
}

# Jibri ayarlanıyor
## PROSODY
cat  << MUC-JIBRI >> $PROSODY_FILE
-- internal muc component, meant to enable pools of jibri and jigasi clients
Component "internal.auth.$DOMAIN" "muc"
    modules_enabled = {
      "ping";
    }
    storage = "null"
    muc_room_cache_size = 1000
MUC-JIBRI

cat  << REC-JIBRI >> $PROSODY_FILE
VirtualHost "recorder.$DOMAIN"
  modules_enabled = {
    "ping";
  }
  authentication = "internal_plain"
REC-JIBRI

### Prosody kullanıcıları
prosodyctl register jibri auth.$DOMAIN $JB_AUTH_PASS
prosodyctl register recorder recorder.$DOMAIN $JB_REC_PASS

## JICOFO
# /etc/jitsi/jicofo/sip-communicator.properties
cat  << BREWERY >> $JICOFO_SIP
#org.jitsi.jicofo.auth.URL=XMPP:$DOMAIN
org.jitsi.jicofo.jibri.BREWERY=$JibriBrewery@internal.auth.$DOMAIN
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
#org.jitsi.jicofo.auth.DISABLE_AUTOLOGIN=true
BREWERY

# Jibri optimizasyonları /etc/jitsi/meet/$DOMAIN-config.js
sed -i "s|// anonymousdomain: 'guest.example.com'|anonymousdomain: \'guest.$DOMAIN\'|" $MEET_CONF
sed -i "s|conference.$DOMAIN|internal.auth.$DOMAIN|" $MEET_CONF
sed -i "s|// fileRecordingsEnabled: false,|fileRecordingsEnabled: true,| " $MEET_CONF
sed -i "s|// liveStreamingEnabled: false,|liveStreamingEnabled: true,\\
\\
    hiddenDomain: \'recorder.$DOMAIN\',|" $MEET_CONF

#Dropbox özelliği
if [ $ENABLE_DB = "yes" ]; then
DB_STR=$(grep -n "dropbox:" $MEET_CONF | cut -d ":" -f1)
DB_END=$((DB_STR + 10))
sed -i "$DB_STR,$DB_END{s|// dropbox: {|dropbox: {|}" $MEET_CONF
sed -i "$DB_STR,$DB_END{s|//     appKey: '<APP_KEY>'|appKey: \'$DB_CID\'|}" $MEET_CONF
sed -i "$DB_STR,$DB_END{s|// },|},|}" $MEET_CONF
fi

#Yerel ses kaydı
echo "# Yerel ses kaydı etkinleştiriliyor (sadece ses)."
DI_STR=$(grep -n "deploymentInfo:" $MEET_CONF | cut -d ":" -f1)
DI_END=$((DI_STR + 6))
sed -i "$DI_STR,$DI_END{s|}|},|}" $MEET_CONF
LR_STR=$(grep -n "// Local Recording" $MEET_CONF | cut -d ":" -f1)
LR_END=$((LR_STR + 18))
sed -i "$LR_STR,$LR_END{s|// localRecording: {|localRecording: {|}" $MEET_CONF
sed -i "$LR_STR,$LR_END{s|//     enabled: true,|enabled: true,|}" $MEET_CONF
sed -i "$LR_STR,$LR_END{s|//     format: 'flac'|format: 'flac'|}" $MEET_CONF
sed -i "$LR_STR,$LR_END{s|// }|}|}" $MEET_CONF

sed -i "s|'tileview'|'tileview', 'localrecording'|" $INT_CONF
#EOLR

#Ana dil ayarlanıyor
if [ -z $LANG ] || [ "$LANG" = "en" ]; then
	echo "English (en) varsayılan olarak ayarlanıyor..."
	sed -i "s|// defaultLanguage: 'en',|defaultLanguage: 'en',|" $MEET_CONF
else
	echo "Varsayılan dil değiştiriliyor: $LANG"
	sed -i "s|// defaultLanguage: 'en',|defaultLanguage: \'$LANG\',|" $MEET_CONF
fi

#Config dosyası kontrol ediliyor
echo "
# $MEET_CONF dosyası hatalar için kontrol ediliyor
"
CHECKJS=$(esvalidate $MEET_CONF| cut -d ":" -f2)
if [[ -z "$CHECKJS" ]]; then
echo "
# $MEET_CONF dosyası sorunsuz olarak görünüyor =)
"
else
echo "
Dikkat et! $MEET_CONF satırında bir sorun var gibi görünüyor:
$CHECKJS
Bu hatanın değişikliklerden kaynaklandığını düşünüyorsanız lütfen bildirin.
https://www.muhyal.com
"
fi

# Kayıt dizini
cat << REC_DIR > $REC_DIR
#!/bin/bash
RECORDINGS_DIR=$1
echo "Kurulum sonlandırılıyor..." > /tmp/finalize.out
echo "Komut dosyası kayıtlar dizini ile çağrıldı: $RECORDINGS_DIR." >> /tmp/finalize.out
echo "Herhangi bir sonlandırma fonksiyonu ekleniyor (yeniden adlandırma, bir hizmete yükleme" >> /tmp/finalize.out
echo "ya da depolama sağlayıcısı vb.) bu komut dosyasında bulunur" >> /tmp/finalize.out
exit 0
REC_DIR

## JSON ayarlanıyor
cp $CONF_JSON $CONF_JSON.orig
cat << CONF_JSON > $CONF_JSON
{
    "recording_directory":"$DIR_RECORD",
    "finalize_recording_script_path": "$REC_DIR",
    "xmpp_environments": [
        {
            "name": "$JB_NAME",
            "xmpp_server_hosts": [
                "$WAN_IP"
            ],
            "xmpp_domain": "$DOMAIN",
            "control_login": {
                "domain": "auth.$DOMAIN",
                "username": "jibri",
                "password": "$JB_AUTH_PASS"
            },
            "control_muc": {
                "domain": "internal.auth.$DOMAIN",
                "room_name": "$JibriBrewery",
                "nickname": "Live"
            },
            "call_login": {
                "domain": "recorder.$DOMAIN",
                "username": "recorder",
                "password": "$JB_REC_PASS"
            },
            "room_jid_domain_string_to_strip_from_start": "internal.auth",
            "usage_timeout": "0"
        }
    ]
}
CONF_JSON
#Jitsi uygulama kontrolü için Tune web sunucusu
if [ -f /etc/apache2/sites-available/$DOMAIN.conf ]; then
WS_CONF=/etc/apache2/sites-available/$DOMAIN.conf
sed -i '$ d' $WS_CONF
cat << NG_APP >> $WS_CONF
  Alias "/external_api.js" "/usr/share/jitsi-meet/libs/external_api.min.js"
  Alias "/external_api.min.js" "/usr/share/jitsi-meet/libs/external_api.min.js"
</VirtualHost>
NG_APP
service apache2 reload
elif [ -f /etc/nginx/sites-available/$DOMAIN.conf ]; then
WS_CONF=/etc/nginx/sites-enabled/$DOMAIN.conf
WS_STR=$(grep -n "external_api.js" $WS_CONF | cut -d ":" -f1)
WS_END=$((WS_STR + 2))
sed -i "${WS_STR},${WS_END} s|^|#|" $WS_CONF
sed -i '$ d' $WS_CONF
cat << NG_APP >> $WS_CONF
    location /external_api.min.js {
        alias /usr/share/jitsi-meet/libs/external_api.min.js;
    }
    location /external_api.js {
        alias /usr/share/jitsi-meet/libs/external_api.min.js;
    }
}
NG_APP
service nginx reload
else
	echo "Sunucu dosyasına uygulama yapılandırması yapılamadı, lütfen bu sorunu bildirin:
    -> https://www.muhyal.com"
fi

#Statik avatar ayarlanıyor
while [[ "$ENABLE_SA" != "yes" && "$ENABLE_SA" != "no" ]]
do
read -p "Statik avatar yapılandırmak istiyor musunuz?: (yes ya da no)"$'\n' -r ENABLE_SA
if [ "$ENABLE_SA" = "no" ]; then
	echo "Statik avatar etkinleştirilmedi."
elif [ "$ENABLE_SA" = "yes" ] && [ -f /etc/apache2/sites-available/$DOMAIN.conf ]; then
	echo "Statik avatar etkinleştirildi."
	wget https://www.munuya.com/S/Gorseller/Jitsi/avatar.png -O /usr/share/jitsi-meet/images/avatar2.png
	WS_CONF=/etc/apache2/sites-available/$DOMAIN.conf
	sed -i "/Alias \"\/external_api.js\"/i \ \ AliasMatch \^\/avatar\/\(.\*\)\\\.png /usr/share/jitsi-meet/images/avatar2.png" $WS_CONF
	sed -i "/RANDOM_AVATAR_URL_PREFIX/ s|false|\'https://$DOMAIN/avatar/\'|" $INT_CONF
	sed -i "/RANDOM_AVATAR_URL_SUFFIX/ s|false|\'.png\'|" $INT_CONF
elif [ "$ENABLE_SA" = "yes" ] && [ -f /etc/nginx/sites-available/$DOMAIN.conf ]; then
	wget https://www.munuya.com/S/Gorseller/Jitsi/avatar.png -O /usr/share/jitsi-meet/images/avatar2.png
	WS_CONF=/etc/nginx/sites-enabled/$DOMAIN.conf
	sed -i "/location \/external_api.min.js/i \ \ \ \ location \~ \^\/avatar\/\(.\*\)\\\.png {\\
\
\ \ \ \ \ \ \ \ alias /usr/share/jitsi-meet/images/avatar2.png;\\
\
\ \ \ \ }\\
\ " $WS_CONF
	sed -i "/RANDOM_AVATAR_URL_PREFIX/ s|false|\'https://$DOMAIN/avatar/\'|" $INT_CONF
	sed -i "/RANDOM_AVATAR_URL_SUFFIX/ s|false|\'.png\'|" $INT_CONF
else
		echo "Sunucu dosyasına uygulama yapılandırması yapılamadı, lütfen bu sorunu bildirin:
		-> https://www.muhyal.com"
fi
done

#"Blur my background" özelliğini stabil olana kadar pasifleştir
sed -i "s|'videobackgroundblur', ||" $INT_CONF

#Güvenli kanallar etkinleştirilsin mi?
cat << P_SR >> $PROSODY_FILE
VirtualHost "$DOMAIN"
    authentication = "internal_plain"
VirtualHost "guest.$DOMAIN"
    authentication = "anonymous"
    c2s_require_encryption = false
P_SR
while [[ "$ENABLE_SC" != "yes" && "$ENABLE_SC" != "no" ]]
do
read -p "Önerilmez!!! Güvenli kanallar etkinleştirilsin mi?: (yes ya da no)"$'\n' -r ENABLE_SC
if [ "$ENABLE_SC" = "no" ]; then
	echo "Güvenli kanallar etkinleştirilmedi."
elif [ "$ENABLE_SC" = "yes" ]; then
	echo "SGüvenli kanallar etkinleştirildi."
#Güvenli kanallar kullanıcısı
read -p "Güvenli kanallar moderatör kullanıcı adı: "$'\n' -r SEC_ROOM_USER
read -p "Güvenli kanallar moderatör şifresi: "$'\n' -sr SEC_ROOM_PASS
echo "Güvenli kanallara şu kullanıcı ile giriş yapabileceksiniz: '${SEC_ROOM_USER}' \
ya da '${SEC_ROOM_USER}@${DOMAIN}' ve az önce girdiğiniz şifreyi kullanmalısınız.
Şifre ile ilgili sorun yaşıyorsanız sistem yöneticinize başvurun."
sed -i "s|#org.jitsi.jicofo.auth.URL=XMPP:|org.jitsi.jicofo.auth.URL=XMPP:|" $JICOFO_SIP
prosodyctl register $SEC_ROOM_USER $DOMAIN $SEC_ROOM_PASS
fi
done

#Start with video muted ayarı
sed -i "s|// startWithVideoMuted: false,|startWithVideoMuted: true,|" $MEET_CONF

#Start with audio muted ayarını aç ve sadece kanalı açanı istinasna ekle
sed -i "s|// startAudioMuted: 10,|startAudioMuted: 1,|" $MEET_CONF

#Hoş geldiniz sayfasını aç/kapat
while [[ $ENABLE_WELCP != yes && $ENABLE_WELCP != no ]]
do
read -p "Hoş geldiniz sayfası açılsın mı: (yes ya da no)"$'\n' -r ENABLE_WELCP
if [ $ENABLE_WELCP = no ]; then
	echo "Hoş geldiniz sayfası açılmadı."
	sed -i "s|// enableWelcomePage: true,|enableWelcomePage: false,|" $MEET_CONF
elif [ $ENABLE_WELCP = yes ]; then
	echo "Hoş geldiniz sayfası açıldı."
	sed -i "s|// enableWelcomePage: true,|enableWelcomePage: true,|" $MEET_CONF
fi
done

#Jibri ile çakıştığı için görünen adı gerekli değil olarak ayarla
sed -i "s|// requireDisplayName: true,|requireDisplayName: false,|" $MEET_CONF

#Jibri hizmetlerini başlat
systemctl enable jibri
systemctl enable jibri-xorg
systemctl enable jibri-icewm
restart_services

enable_letsencrypt

#SSL verme işlemi
if [ "$(dpkg-query -W -f='${Status}' apache2 2>/dev/null | grep -c "ok installed")" -eq 1 ]; then
	ssl_wa apache2 apache $DOMAIN $WS_CONF $SYSADMIN_EMAIL $DOMAIN
	install_ifnot python3-certbot-apache
elif [ "$(dpkg-query -W -f='${Status}' nginx 2>/dev/null | grep -c "ok installed")" -eq 1 ]; then
	ssl_wa nginx nginx $DOMAIN $WS_CONF $SYSADMIN_EMAIL $DOMAIN
	install_ifnot python3-certbot-nginx
else
	echo "Web sunucusu bulunamadı lütfen bunu bize bildirin."
fi

if [ $ENABLE_TRANSCRIPT = yes ]; then
	echo "Jigasi Transcription etkin."
	bash $PWD/jigasi.sh
fi

echo "
########################################################################
                    Kurulum tamamlandı!
           Destek almak için: https://www.muhyal.com
########################################################################
"
apt -y autoremove
apt autoclean

echo "Sunucu yeniden başlatılıyor..."
secs=$((15))
while [ $secs -gt 0 ]; do
   echo -ne "$secs\033[0K\r"
   sleep 1
   : $((secs--))
done
reboot

Daha sonra oluşturduğumuz dosyayı yetkilendirelim;

chmod +x muhyaljjjyukleyici.sh

Sonrasında ise yükleyicimizi başlatalım;

bash muhyaljjjyukleyici.sh

Şimdi yükleme adımlarını takip ederek kurulumu tamamlayabilirsiniz.

Herhangi bir sorunla karşı karşıyaysanız, bu makaleyi yanıtlamaktan çekinmeyin :point_down:

Elle gelişmiş kurulum ve özelleştirme işlemleri için bakınız;


Direkt kurulum dosyasına erişim için;
muhyaljjjyukleyici.sh (19.7 KB)