Jangouts (for "Janus Hangouts") is a solution for videoconferencing based on WebRTC and the excellent Janus Gateway with a user interface heavily inspired by Google Hangouts. It aims to provide a completely self-hosted open source alternative to Google Hangouts and similar solutions. Currently Jangouts supports conferences with video, audio, screen sharing and textual chat organized into an unlimited amount of conference rooms with a configurable limit of participants per room.
Jangouts is a JavaScript application running exclusively client-side (i.e. in the browser). The server simply needs to provide a bunch of static files through a web server.
The following set up is aimed to be used in development environment. If you want to go to production, take a look at the deployment instructions. Anyway, it's strongly recommended to set up the development environment to get in touch with Jangouts.
All the server-side WebRTC handling is performed by Janus Gateway, so the first
requirement is a running janus server with the videoroom plugin enabled and a
valid list of rooms in the janus.plugin.videoroom.cfg
file. For most Linux
distributions that translates into installing the janus-gateway
package.
For (open)SUSE distributions, the package can be easily found at
software.opensuse.org and
installed using 1 Click Install.
For security reasons, (open)SUSE package does not include SSL certificates shipped by default with Janus Gateway. To generate a self-signed certificate, you can use OpenSSL:
cd /usr/share/janus/certs
sudo openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 \
-keyout mycert.key -out mycert.pem
In (open)SUSE, the gateway can be then started (after adjusting the list of
rooms at /etc/janus/janus.plugin.videoroom.cfg
if desired) with the
command:
sudo systemctl start janus.service
sudo systemctl enable janus.service # to start it also after reboot
The first step to configure Jangouts is to get a local copy of this repository:
git clone https://github.com/jangouts/jangouts
If git command not found, then please install git from you packager. For example, if you are running (open)SUSE you could type:
sudo zypper in git
Then you could adapt the configuration by creating a file called
src/app/config.local.json
overriding the default settings found in
src/app/config.json
.
For a development environment, the next configuration would be fine:
{
"janusServer": "http://localhost:8088/janus"
}
In order to develop Jangouts, you need to install Node.js, npm, Bower and Gulp.js.
Node.js and npm should be available in any Linux distribution. For example, if you’re running (open)SUSE you could type:
sudo zypper in nodejs nodejs-npm
Take into account that, in some cases, npm is bundled in the same package as Node.js.
If you prefer, you could use Node Version Manager to install Node.js and npm.
Now, you must install Bower and Gulp.js globally through npm. Just type:
sudo npm install -g bower gulp
This project uses npm to manage development dependencies and Bower for runtime dependencies.
Those dependencies are defined in package.json
and bower.json
files. To install them,
just type:
npm install && bower install
Bear in mind that every time a new dependency is added, you must run this command again.
If you only want to make some development, you don’t need to install any webserver. Just type:
gulp serve
Now you should be able to access with your browser through the URL
http://localhost:3000/
.
Browsers will refuse to allow screen sharing through WebRTC for connections not using SSL. Thus, to allow users of your Jangouts instance to use the screen sharing functionality you will have to provide HTTPS access to both the files and the Janus gateway, like shown in the deployment instructions.
When jangouts server do not work, there is wide variety of ways how to ways how to debug it. Usually the easiest one is to use browser debug tools.
When error reported is something like cannot establish connection to server at ws://.../janus
then it indicate problem with janus. So check if janus is running with
sudo systemctl status janus.service
. If it is failed, then check for possible reasons in
journalctl --unit janus.service
.
This software is released under the terms of the MIT License. See the license file for more information.