Open pratik9722 opened 3 years ago
I tried to install breakout rooms without docker and finally it works as intended. Maybe my installation steps help someone else.
If not already done, migrate away from multiplexing where steps 1 and 2 are necessary (bridge websockets are not used here, I had to roll back the other steps because of errors while moving users between rooms, may be caused by missing changes on our second videobridge).
root@jitsi:~# ls -l /etc/nginx/modules-enabled/60-jitsi-meet.conf
lrwxrwxrwx 1 root root 48 Apr 14 2020 /etc/nginx/modules-enabled/60-jitsi-meet.conf -> /usr/share/jitsi-meet-turnserver/jitsi-meet.conf
root@jitsi:~# rm /etc/nginx/modules-enabled/60-jitsi-meet.conf
root@jitsi:~# nano /etc/nginx/sites-available/meeting.example.org.conf
... change port from 4444 to 443
In contrast to the FAQ entry, I did not change TURN TLS "turns" port to 5349 (might have other effects in our environment).
In /etc/prosody/conf.avail/meeting.example.org.cfg.lua
change
{ type = "turns", host = "meeting.example.org", port = "443", transport = "tcp" }
to
{ type = "turns", host = "meeting.example.org", port = "4445", transport = "tcp" }
Activate changes:
# systemctl restart jitsi-videobridge2
# systemctl restart nginx
Steps in this chapter are done for all files in public/
.
The next point is optional. The URLs used later must be changed, if you do skip this change.
/ws
by /br
(_b_reakout _r_ooms).Since "WURK.APP" seams to be the brand for the planned commercial service, I re-branded it to "Jitsi breakout rooms".
app.listen(7777, 'localhost', () => {
Changes in additional-config/interface_config.js
and additional-config/config.js
are not relevant, so I ignored them.
Changes in additional-config/nginx/meet.conf
contain no changes that are necessary in our Jitsi installation.
Content of additional-config/nginx/websocket.conf
and additional-config/site-confs/default
was merged and added to our version of /etc/nginx/sites-available/meeting.example.org.conf
(added before block with location = /external_api.js
):
# local addition for breakout rooms
location = /br/ {
proxy_pass http://127.0.0.1:7777/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
Now test the changed nginx configuration and, if OK, use it.
# nginx -t
# systemctl restart nginx
For jQuery (in public/js
) a security update is available - used it. Get the new version (wget https://code.jquery.com/jquery-3.6.0.slim.min.js
), remove the old one (rm jquery-3.4.1.slim.min.js
) and update src
references in the files public/*.html
.
I installed the server under the new directory /usr/local/share/breakout-rooms/
. You may use another path.
server.js
and public/
to /usr/local/share/breakout-rooms/
.Installation is based on https://github.com/nodesource/distributions, chapter "Manual Installation" for a Debian system.
End-of-Life for version 10, used in Debian buster, is on 2021-04-30. So we use a more recent and supported version. For Node.js every even numbered version gets LTS and maintenance support (ends 2023-04-30 for version 14).
Get the repository key:
# wget -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key > /etc/apt/trusted.gpg.d/local.nodesource.asc
Add a new file /etc/apt/sources.list.d/nodesource.list
with the following content:
# nodejs for Jitsi breakout rooms
deb https://deb.nodesource.com/node_14.x buster main
deb-src https://deb.nodesource.com/node_14.x buster main
Install Node.js package:
# apt-get update
# apt-get install nodejs
I do not use a global installation for Node.js modules. We want to install all necessary files under /usr/local/share/breakout-rooms
and run the installation (and the server later on) as user www-data
(you may use another user).
root@jitsi:/usr/local/share/breakout-rooms# chown -R www-data:www-data .
root@jitsi:/usr/local/share/breakout-rooms# sudo -u www-data nano package.json
root@jitsi:/usr/local/share/breakout-rooms# sudo -u www-data cat package.json
{
"dependencies": {
"request": "",
"ws": "",
"express": "",
"express-ws": ""
}
}
root@jitsi:/usr/local/share/breakout-rooms# sudo -u www-data HOME=/usr/local/share/breakout-rooms /usr/bin/npm install
Try to start the server a first time (in the foreground):
root@jitsi:/usr/local/share/breakout-rooms# sudo -u www-data /usr/bin/node server.js
If this works, add it to your systemd configuration. Create the new file /etc/systemd/system/breakout-rooms.service
with the following content:
[Unit]
Description=Breakout rooms server for Jitsi
Documentation=https://github.com/puthli/breakout-rooms
After=network.target
[Service]
Type=simple
User=www-data
ExecStart=/usr/bin/nodejs /usr/local/share/breakout-rooms/server.js
Restart=on-failure
[Install]
WantedBy=multi-user.target
Stop the server if it is still running in the foreground and activate the server in systemd:
# systemctl daemon-reload
# systemctl start hello_env
# systemctl enable hello_env
The moderator page should now be reachable under https://meeting.example.org/br/moderator.html
.
index.html
seams to be a wrapper around Jitsi without breakout room functionality.
how did u implement the breakout room on jitsi-meet code
Hi @BammyT1011 in case your question is put on me, could you give a more precise description what your question is?
@idandr probably he is thinking that you have made the changes in Jitsi-meet lib-jitsi-meet jicofo & Created prosody module etc & he needs a source code & it's changes through commit so he can add this in the his Jitsi.
OK, if that's the question - it is not that complex. With the solution for breakout rooms provided by this repository jitsi-meet is embedded in an iframe and nothing had to be changed in the code of jitsi-meet etc. It's a wrapper around an existing Jitsi installation.
There are two existing configuration files (prosody, nginx) of your Jitsi installation that have to be edited for integration. Plus installation of Node.js (and some of its modules) plus download and editing of (some) files from this repository.
@idandr Then how do i go about it on my jitsi code????? kindly outline the step by step instruction
If you can provide a guide for how we can add breakout rooms in Jitsi without docker then it is awesome!