Coder Social home page Coder Social logo

jitsi / jicofo Goto Github PK

View Code? Open in Web Editor NEW
315.0 43.0 350.0 38.94 MB

JItsi COnference FOcus is a server side focus component used in Jitsi Meet conferences.

License: Apache License 2.0

Shell 0.42% Python 0.47% Java 21.17% Batchfile 0.04% Kotlin 77.89% DTrace 0.01%

jicofo's Introduction

Jicofo

JItsi COnference FOcus is a signaling server, one of the backend components in the Jitsi Meet stack.

Overview

Jitsi Meet conferences are associated with an XMPP Multi-User Chat (MUC) room. The MUC functionality is provided by the XMPP server (prosody).

Jicofo joins the conference MUC and is then responsible for initiating a Jingle session with each participant (in this sense it is the "focus" of the conference, which is where its name comes from). While Jicofo manages and terminates Jingle sessions, it does not process any of the media (audio/video). Instead, it uses one or more Jitsi Videobridge instances.

Jicofo is responsible for selecting a Jitsi Videobridge for each participant, and manages the set of videobridges for the conference with the COLIBRI protocol (colibri version 2 is now used, the format in XEP-0340 is now deprecated).

In general the conference participants and videobridge instances are accessed through different XMPP connections -- the configured Client and Service connections, respectively, though they may coincide.

Connection between Jicofo and the other components in the Jitsi Meet stack.

Configuration

Jicofo takes its configuration from a hocon config file, usually installed in /etc/jitsi/jicofo/jicofo.conf. See the reference.conf file for the available options.

Installation

Debian

The recommended way to install Jicofo and Jitsi Meet is to follow the Quick Install Guide for debian-based systems.

Binaries

You can download Debian/Ubuntu binaries here:

Docker

Jicofo is available as a docker image as part of docker-jitsi-meet.

Manual

This section is only required for a manual setup, not necessary when using Quick Install or other methods.

Prosody configuration

Jicofo needs privileges to create Multi-User Chat rooms. To grant these privileges we create an account for it and add it to the global admins list. We create a new virtual host, because the one used by clients only supports anonymous authentication. We add this to Prosody's config file (/etc/prosody/prosody.cfg.lua by default):

admins = { [email protected] }
VirtualHost "auth.jitsi.example.com"
    authentication = "internal_hashed"

Then restart Prosody and create the user account:

sudo prosodyctl restart
sudo prosodyctl register focus auth.jitsi.example.com focuspassword

Building Jicofo

Build using maven with:

mvn install

This will create a package in jicofo/target/jicofo-1.1-SNAPSHOT-archive.zip

Running Jicofo

Extract the distribution package and run with jicofo.sh.

Certificates

Jicofo uses an XMPP user connection (on port 5222 by default), and since the upgrade to smack4 it verifies the server's certificate. In a default installation the debian installation scripts take care of generating a self-signed certificate and adding it to the keystore.

For situations in which the certificate is not trusted you can add it to the store by:

On Linux

sudo cp cert.pem /usr/local/share/ca-certificates/ 
sudo update-ca-certificates

On MacOS X

On Mac java uses its own keystore, so adding the certificate to the system one does not work. Add it to the java keystore with:

sudo keytool -importcert -file cert.pem -keystore /Library/Java//JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/security/cacerts

Note that if the XMPP server you are connecting to is a prosody instance configured with the jitsi-meet scripts, then you can find the certificate in:

/var/lib/prosody/$JICOFO_AUTH_DOMAIN.crt 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.