Last active
December 14, 2018 16:38
-
-
Save francoisTemasys/a17f5874bf104f0a2684 to your computer and use it in GitHub Desktop.
This script will deploy a jitsi.meet webserver (running on nginx) and a jitsi.videobridge XMPP component (running on Prosody). No TURN server is installed and no NAT server configuration is created.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/bin/bash | |
#(c) Copyright 2014 Temasys Communication, Pte Ltd. | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
usage() | |
{ | |
cat << EOF | |
usage: $0 options | |
This script install jitsi meet configured with the jitsi videobridge | |
OPTIONS: | |
-h Show this message | |
-d Domain (Required) | |
-p Password 1 (Default:mypassword1) | |
EOF | |
} | |
PASSWORD1="mypassword1" | |
while getopts “hd:p:” OPTION | |
do | |
case $OPTION in | |
h) | |
usage | |
exit 1 | |
;; | |
d) | |
DOMAIN=$OPTARG | |
;; | |
p) | |
PASSWORD1=$OPTARG | |
;; | |
?) | |
usage | |
exit | |
;; | |
esac | |
done | |
if [[ -z $DOMAIN ]] | |
then | |
usage | |
exit 1 | |
else | |
echo "!!!Installation of Jitsi.meet on $DOMAIN!!!" | |
cd ~ | |
echo "#################" | |
echo "Configure prosody" | |
echo "#################" | |
sleep 2 | |
##Download prosody and otalk | |
echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list | |
wget --no-check-certificate https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add - | |
sudo apt-get update | |
sudo apt-get install prosody-trunk | |
sudo apt-get install git lua-zlib lua-dbi-sqlite3 liblua5.1-bitop-dev liblua5.1-bitop0 | |
sudo apt-get install lua-sec-prosody | |
git clone https://github.com/andyet/otalk-server.git | |
cd otalk-server | |
sudo cp -r mod* /usr/lib/prosody/modules | |
##Change default encryption | |
sudo sed -i "s/c2s_require_encryption =/-- c2s_require_encryption =/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/s2s_secure_auth =/-- s2s_secure_auth =/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/authentication = \"internal_plain\"/authentication = \"internal_hashed\"/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/admins = { }/admins = { }\ndaemonize = true\ncross_domain_bosh = true;\ncomponent_ports = { 5347 }\n/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/--\"compression\";/\"compression\";/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/--\"bosh\"/\"bosh\"/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/--\"legacyauth\"; -- Legacy authentication. Only used by some old clients and bots./--\"legacyauth\"; -- Legacy authentication. Only used by some old clients and bots.\n\t-- jitmeet\n\t\t\"smacks\";\n\t\t\"carbons\";\n\t\t\"mam\";\n\t\t\"lastactivity\";\n\t\t\"offline\";\n\t\t\"pubsub\";\n\t\t\"adhoc\";\n\t\t\"websocket\";\n\t\t\"http_altconnect\";\n/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/--sql = { driver = \"PostgreSQL\", database = \"prosody\", username = \"prosody\", password = \"secret\", host = \"localhost\" }/storage = {archive2 = \"sql2\"}\nsql = { driver = \"SQLite3\", database = \"prosody.sqlite\" }\ndefault_archive_policy = \"roster\"/gi" "/etc/prosody/prosody.cfg.lua" | |
#Add VirtualHost | |
sudo sed -i "s/VirtualHost \"example.com\"/VirtualHost \"$DOMAIN\"\n\tauthentication = \"anonymous\"/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/enabled = false -- Remove this line to enable this host/-- enabled = false -- Remove this line to enable this host/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/key = \"\/etc\/prosody\/certs\/example.com.key\";/key = \"\/var\/lib\/prosody\/$DOMAIN.key\";/gi" "/etc/prosody/prosody.cfg.lua" | |
sudo sed -i "s/certificate = \"\/etc\/prosody\/certs\/example.com.crt\";/certificate = \"\/var\/lib\/prosody\/$DOMAIN.crt\";/gi" "/etc/prosody/prosody.cfg.lua" | |
#Add Component | |
echo "Component \"conference.$DOMAIN\" \"muc\" | |
Component \"jitsi-videobridge.$DOMAIN\" | |
component_secret = \"$PASSWORD1\"" | sudo tee -a "/etc/prosody/prosody.cfg.lua" | |
#Generate keys and restart | |
#prosodyctl cert generate $DOMAIN | |
sudo openssl genrsa -out /var/lib/prosody/$DOMAIN.key 2048 | |
sudo openssl req -new -x509 -key /var/lib/prosody/$DOMAIN.key -out /var/lib/prosody/$DOMAIN.crt -days 1095 | |
sudo service prosody restart | |
echo "###############" | |
echo "Configure nginx" | |
echo "###############" | |
sleep 2 | |
cd ~ | |
sudo apt-get install nginx | |
sudo sed -i "s/# tcp_nopush on;/tcp_nopush on;/gi" "/etc/nginx/nginx.conf" | |
sudo sed -i "s/# types_hash_max_size 2048;/types_hash_max_size 2048;/gi" "/etc/nginx/nginx.conf" | |
sudo sed -i "s/# server_names_hash_bucket_size 64;/server_names_hash_bucket_size 128;/gi" "/etc/nginx/nginx.conf" | |
sudo touch /etc/nginx/sites-available/$DOMAIN | |
echo "server { | |
listen 80; | |
server_name $DOMAIN; | |
return 301 https://\$host\$request_uri; | |
} | |
server { | |
listen 443 ssl; | |
server_name $DOMAIN; | |
ssl_certificate /var/lib/prosody/$DOMAIN.crt; | |
ssl_certificate_key /var/lib/prosody/$DOMAIN.key; | |
root /srv/$DOMAIN; | |
index index.html index.htm; | |
location ~ ^/([a-zA-Z0-9]+)$ { | |
rewrite ^/(.*)$ / break; | |
} | |
# BOSH | |
location /http-bind { | |
proxy_pass http://localhost:5280/http-bind; | |
proxy_set_header X-Forwarded-For \$remote_addr; | |
proxy_set_header Host \$http_host; | |
} | |
# xmpp websockets | |
location /xmpp-websocket { | |
proxy_pass http://localhost:5280; | |
proxy_http_version 1.1; | |
proxy_set_header Upgrade \$http_upgrade; | |
proxy_set_header Connection \"upgrade\"; | |
proxy_set_header Host \$host; | |
tcp_nodelay on; | |
} | |
} | |
" | sudo tee -a "/etc/nginx/sites-available/$DOMAIN" | |
cd /etc/nginx/sites-enabled | |
sudo ln -s /etc/nginx/sites-available/$DOMAIN $DOMAIN | |
echo "############" | |
echo "Fix firewall" | |
echo "############" | |
sleep 2 | |
cd ~ | |
sudo ufw allow 80 | |
sudo ufw allow 5222 | |
echo "###################" | |
echo "Install VideoBridge" | |
echo "###################" | |
sleep 2 | |
cd ~ | |
#Download Image | |
JVBversion="jitsi-videobridge-linux-x64-128" | |
wget http://download.jitsi.org/jitsi-videobridge/linux/$JVBversion.zip | |
sudo apt-get install unzip | |
unzip $JVBversion.zip | |
#Install JRE | |
sudo apt-get install default-jre | |
mkdir ~/.sip-communicator | |
touch ~/.sip-communicator/sip-communicator.properties | |
echo "org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false" > ~/.sip-communicator/sip-communicator.properties | |
~/$JVBversion/jvb.sh --host=localhost --domain=$DOMAIN --port=5347 --secret=$PASSWORD1 & | |
echo "/bin/bash ~/$JVBversion/jvb.sh --host=localhost --domain=$DOMAIN --port=5347 --secret=$PASSWORD1 </dev/null >> /var/log/jvb.log 2>&1" | sudo tee -a "/etc/rc.local" | |
echo "###############" | |
echo "Install Jitmeet" | |
echo "###############" | |
sleep 2 | |
cd /srv | |
sudo git clone https://github.com/jitsi/jitsi-meet.git | |
sudo mv jitsi-meet $DOMAIN | |
sudo sed -i "s/domain: 'guest.jit.si',/domain: '$DOMAIN',/gi" "/srv/$DOMAIN/config.js" | |
sudo sed -i "s/muc: 'meet.jit.si',/muc: 'conference.$DOMAIN',/gi" "/srv/$DOMAIN/config.js" | |
sudo sed -i "s/bridge: 'jitsi-videobridge.lambada.jitsi.net'/bridge: 'jitsi-videobridge.$DOMAIN'/gi" "/srv/$DOMAIN/config.js" | |
sudo sed -i "s/bosh: '\/\/lambada.jitsi.net\/http-bind',/bosh: '\/\/$DOMAIN\/http-bind',/gi" "/srv/$DOMAIN/config.js" | |
#sudo invoke-rc.d nginx restart | |
sudo service nginx restart | |
echo "###############" | |
echo "------END------" | |
echo "###############" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Nice work!
Unfortunately the newest version will require jicofo https://github.com/jitsi/jicofo
Unfortunately the given script will not configure nor install the focus server (jicofo). I just wanted to add this for everybody who uses it.