Newer
Older
#!/bin/bash
# Copyright (C) 2020 Ruben Rodriguez <ruben@trisquel.info>
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# This script has been tested on Trisquel 8
# Basic setup
apt-get install --no-install-recommends language-pack-en certbot wget equivs apt-transport-https software-properties-common python3-certbot-nginx apache2-utils
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# We don't want to install ttf-mscorefonts, they are not free
cat << EOF > bbb-fakedepends.control
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: bbb-fakedepends
Version: 0.1
Maintainer: placeholder@package
Depends: ttf-mscorefonts-installer
Provides: ttf-mscorefonts-installer
Description: Placeholder package to provide dependencies for bigbluebutton
ttf-mscorefonts-installer is not free
EOF
equivs-build bbb-fakedepends.control
dpkg -i bbb-fakedepends_0.1_all.deb
# Add third party repositories
add-apt-repository ppa:bigbluebutton/support -y
wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | sudo apt-key add -
echo "deb https://ubuntu.bigbluebutton.org/xenial-220/ bigbluebutton-xenial main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list
add-apt-repository ppa:rmescandon/yq -y
wget -qO- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
echo 'deb https://deb.nodesource.com/node_8.x xenial main' > /etc/apt/sources.list.d/nodesource.list
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
# Update lists and install
apt update
apt install nodejs
npm install -g node-gyp
apt-get install bigbluebutton bbb-html5 bbb-demo mongodb-org curl
rm /etc/nginx/sites-enabled/default
sed 's|.*node main.js|PORT=3000 /usr/bin/node main.js|' -i /usr/share/meteor/bundle/systemd_start.sh
[ "$(lsb_release -sc)" == "flidas" ] && sed 's/xenial/flidas/' -i /usr/bin/bbb-conf
###### Configure SSL
certbot --webroot -w /var/www/html/ -m sysadmin@$HOSTNAME certonly --agree-tos -d $HOSTNAME -n
cat << EOF |sed '/server_name.*$/ r /dev/stdin' -i /etc/nginx/sites-available/bigbluebutton
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/$HOSTNAME/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$HOSTNAME/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;
EOF
sed '/proxy_pass/s/http/https/; /proxy_pass/s/5066/7443/' -i /etc/bigbluebutton/nginx/sip.nginx
sed '/bigbluebutton.web.serverURL/s/http/https/' -i /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
sed 's/http/https/' -i /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties
sed 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml
sed 's/http:/https:/;s/ws:/wss:/' -i /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
sed '/playback_protocol/s/http/https/' -i /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml
sed 's/http/https/' -i /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp
# Default to HTML5, disables Flash support
sed 's/JoinViaHTML5Client=false/JoinViaHTML5Client=true/' -i /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
# Fix integration issue with Canvas
sed 's/\d{5,6}/\d{5,6}|\\d{20}/' -i /opt/freeswitch/conf/dialplan/default/bbb_echo_test.xml /opt/freeswitch/conf/dialplan/default/bbb_conference.xml
service nginx restart
apt-get install ufw
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 1935/tcp
ufw allow 7443/tcp
ufw allow 16384:32768/udp
ufw default deny
ufw enable
# Configure passwords
htpasswd -c /etc/nginx/htpasswd username
cat << EOF |sed '/fastcgi_params;$/ r /dev/stdin' -i /etc/bigbluebutton/nginx/demo.nginx
auth_basic "Private server. Contact sysadmin@$HOSTNAME if you need a BigBlueButton instance for your classroom";
auth_basic_user_file /etc/nginx/htpasswd;
EOF
service nginx restart