To use free service and/or open source software for audio and video conferencing (meeting focused) with option of messaging, screen and media sharing, that can be used both with web browser and mobile app, while remaining flexible with bandwidth option, with ability to be encrypted and optionally visually customizable.
Jitsi is a collection of free and open-source multiplatform voice (VoIP), video conferencing and instant messaging applications for the web platform, Windows, Linux, macOS, iOS and Android. From expert software like Jitsi Videobridge server designed to run thousands of video streams from a single server, to the small tools and libraries and the most famous Jitsi Meet as JavaScript application that uses Jitsi Videobridge server to provide high quality, scalable video conferences from prominent URL http://meet.jit.si/
Jitsi has proven to be a very efficient and affordable option for video conferencing meetings of up to 20 participants with good bandwidth and as audio conferencing option (with screen or media sharing) for much higher numbers. It is possible to use dial-in options in some countries that could reduce risk of dropping out with weaker/unreliable net connection.
Benefits of self-hosting a jitsi server within an organization/institution are with privacy and cost.
Limitation of small delay is present in all WebRTC software and not unique to jitsi.
Mee.coop is using another FLOSS solution BigBlueButton (BBB) Video conferencing that is quite stable with more participants and integrates well with Canvas, Moodle, and other Learning Management Solutions (LMS) systems. Unfortunately only used via browser.
This describes configuring a server jitsi.example.com on a Debian-based distribution.
For other distributions you can adapt the steps (especially changing the dependencies package installations (e.g. for nginx) and paths accordingly) so that it matches your host's distribution.
You will also need to generate some passwords for YOURSECRET1, YOURSECRET2 and YOURSECRET3.
There are also some complete example config files available, mentioned in each section.
There are additional configurations to be done for a scalable installation.
This is how the network looks:
+ +
| |
| |
v |
443 |
+-------+ |
| | |
| Nginx | |
| | |
+--+-+--+ |
| | |
+------------+ | | +--------------+ |
| | | | | | |
| jitsi-meet +<---+ +--->+ prosody/xmpp | |
| |files 5280 | | |
+------------+ +--------------+ v
5222,5347^ ^5347 4443,10000
+--------+ | | +-------------+
| | | | | |
| jicofo +----^ ^----+ videobridge |
| | | |
+--------+ +-------------+
apt-get install prosody
Add config file in /etc/prosody/conf.avail/jitsi.example.com.cfg.lua :
VirtualHost "jitsi.example.com"
authentication = "anonymous"
ssl = {
key = "/var/lib/prosody/jitsi.example.com.key";
certificate = "/var/lib/prosody/jitsi.example.com.crt";
}
modules_enabled = {
"bosh";
"pubsub";
}
c2s_require_encryption = false
VirtualHost "auth.jitsi.example.com"
ssl = {
key = "/var/lib/prosody/auth.jitsi.example.com.key";
certificate = "/var/lib/prosody/auth.jitsi.example.com.crt";
}
authentication = "internal_hashed"
admins = { "focus@auth.jitsi.example.com" }
Component "conference.jitsi.example.com" "muc"
Component "jitsi-videobridge.jitsi.example.com"
component_secret = "YOURSECRET1"
Component "focus.jitsi.example.com"
component_secret = "YOURSECRET2"
Add link for the added configuration
ln -s /etc/prosody/conf.avail/jitsi.example.com.cfg.lua /etc/prosody/conf.d/jitsi.example.com.cfg.lua
Generate certs for the domain:
prosodyctl cert generate jitsi.example.com
prosodyctl cert generate auth.jitsi.example.com
Add auth.jitsi.example.com to the trusted certificates on the local machine:
ln -sf /var/lib/prosody/auth.jitsi.example.com.crt /usr/local/share/ca-certificates/auth.jitsi.example.com.crt
update-ca-certificates -f
Note that the -f flag is necessary if there are symlinks left from a previous installation.
If you are using a JDK package not provided by Debian, as the ones from adopjdk, you should also make your JDK aware of the new debian certificate keystore replacing or linking the JDK cacerts. Example, if you use JDK from adoptjdk:
cd /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre
ln -sf /etc/ssl/certs/java/cacerts lib/security/cacerts
Create conference focus user:
prosodyctl register focus auth.jitsi.example.com YOURSECRET3
Restart prosody XMPP server with the new config
prosodyctl restart
apt-get install nginx
Add a new file jitsi.example.com in /etc/nginx/sites-available (see also the example config file):
server_names_hash_bucket_size 64;
server {
listen 0.0.0.0:443 ssl http2;
listen [::]:443 ssl http2;
# tls configuration that is not covered in this guide
# we recommend the use of https://certbot.eff.org/
server_name jitsi.example.com;
# set the root
root /srv/jitsi-meet;
index index.html;
location ~ ^/([a-zA-Z0-9=\?]+)$ {
rewrite ^/(.*)$ / break;
}
location / {
ssi on;
}
# BOSH, Bidirectional-streams Over Synchronous HTTP
# https://en.wikipedia.org/wiki/BOSH_(protocol)
location /http-bind {
proxy_pass http://localhost:5280/http-bind;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}
# external_api.js must be accessible from the root of the
# installation for the electron version of Jitsi Meet to work
# https://github.com/jitsi/jitsi-meet-electron
location /external_api.js {
alias /srv/jitsi-meet/libs/external_api.min.js;
}
}
Add link for the added configuration
cd /etc/nginx/sites-enabled
ln -s ../sites-available/jitsi.example.com jitsi.example.com
Visit https://download.jitsi.org/jitsi-videobridge/linux to determine the current build number, download and unzip it:
wget https://download.jitsi.org/jitsi-videobridge/linux/jitsi-videobridge-linux-{arch-buildnum}.zip
unzip jitsi-videobridge-linux-{arch-buildnum}.zip
Install JRE if missing:
apt-get install openjdk-8-jre
NOTE: When installing on older Debian releases keep in mind that you need JRE >= 1.7.
Create ~/.sip-communicator/sip-communicator.properties in the home folder of the user that will be starting Jitsi Videobridge:
mkdir -p ~/.sip-communicator
cat > ~/.sip-communicator/sip-communicator.properties << EOF
org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false
# The videobridge uses 443 by default with 4443 as a fallback, but since we're already
# running nginx on 443 in this example doc, we specify 4443 manually to avoid a race condition
org.jitsi.videobridge.TCP_HARVESTER_PORT=4443
EOF
Start the videobridge with:
./jvb.sh --host=localhost --domain=jitsi.example.com --port=5347 --secret=YOURSECRET1 &
Or autostart it by adding the line in /etc/rc.local:
/bin/bash /root/jitsi-videobridge-linux-{arch-buildnum}/jvb.sh --host=localhost --domain=jitsi.example.com --port=5347 --secret=YOURSECRET1 </dev/null >> /var/log/jvb.log 2>&1
Install JDK and Maven if missing:
apt-get install openjdk-8-jdk maven
NOTE: When installing on older Debian releases keep in mind that you need JDK >= 1.7.
Clone source from Github repo:
git clone https://github.com/jitsi/jicofo.git
Build the package.
cd jicofo
mvn package -DskipTests -Dassembly.skipAssembly=false
Run jicofo:
=======
unzip target/jicofo-1.1-SNAPSHOT-archive.zip
cd jicofo-1.1-SNAPSHOT-archive'
./jicofo.sh --host=localhost --domain=jitsi.example.com --secret=YOURSECRET2 --user_domain=auth.jitsi.example.com --user_name=focus --user_password=YOURSECRET3
Checkout and configure Jitsi Meet:
cd /srv
git clone https://github.com/jitsi/jitsi-meet.git
cd jitsi-meet
npm install
make
NOTE: When installing on older distributions keep in mind that you need Node.js >= 12 and npm >= 6.
Edit host names in /srv/jitsi-meet/config.js (see also the example config file):
var config = {
hosts: {
domain: 'jitsi.example.com',
muc: 'conference.jitsi.example.com',
bridge: 'jitsi-videobridge.jitsi.example.com',
focus: 'focus.jitsi.example.com'
},
useNicks: false,
bosh: '//jitsi.example.com/http-bind', // FIXME: use xep-0156 for that
//chromeExtensionId: 'diibjkoicjeejcmhdnailmkgecihlobk', // Id of desktop streamer Chrome extension
//minChromeExtVersion: '0.1' // Required version of Chrome extension
};
Verify that nginx config is valid and reload nginx:
nginx -t && nginx -s reload
Jitsi Videobridge can run behind a NAT, provided that both required ports are routed (forwarded) to the machine that it runs on. By default these ports are TCP/4443 and UDP/10000.
If you do not route these two ports, Jitsi Meet will only work with video for two people, breaking upon 3 or more people trying to show video.
TCP/443 is required for the webserver which can be running on another machine than the Jitsi Videobrige is running on.
The following extra lines need to be added to the file ~/.sip-communicator/sip-communicator.properties (in the home directory of the user running the videobridge):
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
You are now all set and ready to have your first meet by going to http://jitsi.example.com
Jibri is a set of tools for recording and/or streaming a Jitsi Meet conference.
For more information:
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-manual
2003 Emil Ivov, a student at the University of Strasbourg, France, creates SIP Communicator.
2005 SIP communicator is completely refactored, to accommodate plugin development
2008 SIP Communicator gets its first end-to-end encryption
2009 Emil Ivov and Yana Stamcheva register Blue Jimp company, which employs Jitsi’s main contributors. They offer professional support and development services.
2011 SIP Communicator is renamed Jitsi (Bulgarian “жици” wires), since it now also supports audio and video over XMPP’s Jingle extensions
2012 Jitsi adds video conferencing capabilities based on the concept of routing video streams. The client of the conference organizer acts as a video router.
2013 Jitsi’s video routing capabilities are extracted in a separate server application and Jitsi Videobridge is born. Jitsi Videobridge adds support for ICE and DTLS/SRTP, thus becoming compatible with WebRTC clients.
With the growth of WebRTC (Real Time Communication) technologies, the project team focus shifted to the Jitsi Videobridge for allowing web-based multi-party video calling.
2014 Using a prototype from Philipp Hancke as a basis, the Jitsi community starts the Jitsi Meet project: a Web Conferencing application that rivals Hangouts and Skype
This full video conferencing application that includes web, Android, and iOS clients. Jitsi also operates meet.jit.si, a version of Jitsi Meet hosted by Jitsi for free community use. Jitsi has received support from various institutions such as the NLnet Foundation, the University of Strasbourg and the Region of Alsace and it has also had multiple participations in the Google Summer of Code program.
2015 Atlassian corporation acquires Blue Jimp, making a long-term investment in keeping Jitsi open source, community-based, and pushing the envelope of great video conferences.
2018 8x8 acquires the Jitsi Technology and team from Atlassian. Jitsi now powers all 8×8 Video Meetings and continues to grow in the heart of many successful initiatives
2020 Jitsi surpasses 20 million monthly active users!
Jitsi codebase is used by numerous new web based video conferencing services/platforms.
URL: https://jitsi.github.io/handbook/docs/intro
JITSI should be adopted at least as an individual use by all that care about price, flexibility, data privacy and use of open standards. Ideally it should be introduced first as mobile phone app and web use existing http://meet.jit.si free community service and then installed locally for organizations and institutions that have tech person and option to host services on their own network (then a limitation of about 20-30 connections can be surpassed).
Original author: Emil Ivov, now shared with many contributors
https://github.com/jitsi/jitsi-meet/graphs/contributors
Brand holder 8x8, VoIP products' company (main contributor to jitsi)