% title $self->l('DOCUMENTATION'); %= include 'header' %= include 'public_toolbar'
VROOM (short for Video ROOM) is a simple to use, web-based and opensource (MIT licence) video conferencing application. It's based on several other softwares, most notably the excellent SimpleWebRTC lib.
VROOM uses the latest WebRTC technologies to allow video conferencing through a web browser without any plugin. There are several more or less similar hosted solutions available (like talky.io, appear.in, vLine.com for example). Most of them are more polished than VROOM, but I've found none entirely opensource, so I started this project.
VROOM implements the following features:
VROOM is translated in French and English. You're welcome to submit patches or pull requests to enhance localization, or add new ones.
If you want to run your own server, you'll need the following components
VROOM can probably with other DB engine (like PostgreSQL) with minor modifications. If you're interrested in adding support for other engines, you're welcome to help
While VROOM should run on any distro, it's only tested on CentOS 7 x86_64, so it's the recommended platform. Also, I provide packages for all dependencies in my repository, so it'll be much easier to install it this way. If you have it running on another system, please send me your notes so I can update this documentation.
This guide assumes that you have installed a minimal CentOS 7 x86_64 system
For now, VROOM requires SELinux to be disabled, or permissive. You can set this in /etc/selinux/config
You need to configure both EPEL and FWS repo
cat <<'_EOF' > /etc/yum.repos.d/fws.repo [fws] enabled=1 baseurl=http://repo.firewall-services.com/centos/$releasever/ name=Firewall Services gpgcheck=1 gpgkey=http://repo.firewall-services.com/RPM-GPG-KEY enablegroups=0 [fws-testing] enabled=0 baseurl=http://repo.firewall-services.com/centos-testing/$releasever/ name=Firewall Services Testing gpgcheck=1 gpgkey=http://repo.firewall-services.com/RPM-GPG-KEY enablegroups=0 _EOF yum install epel-release
The follwoing command will install everything required to run VROOM
yum install git tar wget httpd mod_ssl openssl mariadb-server \\ 'perl(Mojolicious)' 'perl(Mojolicious::Plugin::I18N)' 'perl(Mojolicious::Plugin::Mail)' \\ 'perl(Crypt::SaltedHash)' 'perl(Etherpad::API)' 'perl(LWP::Protocol::https)' \\ 'perl(Sesion::Token)' 'perl(Mojolicious::Plugin::Database)' 'perl(Email::Valid)' \\ 'perl(Config::Simple)' 'perl(Session::Token)' 'perl(URI)'
Lets install VROOM in /opt/vroom
cd /opt git clone https://github.com/dani/vroom.git
A database will be used to store rooms configuration, you must enable the server.
systemctl enable mariadb.service systemctl start mariadb.serviceNow, create a new database for VROOM
mysql -uroot
CREATE DATABASE `vroom` CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON `vroom`.* TO 'vroom'@'localhost' IDENTIFIED BY 'MySuperPassw0rd'; FLUSH PRIVILEGES;
It's better to generate a long, random password here. Just write it somewhere, you'll need it later
Now that we have our MySQL database, we can create the tables
mysql -uroot vroom < /opt/vroom/docs/database/schema.mysql
Two sample apache configurations are provided in the conf directory
In either case, you might want to adjust the apache configuration
The admin interface of VROOM will be available on /vroom/admin (alias) or /admin (vhost) must be protected by your web server. VROOM provides no authentication at all. In the sample configuration, the access is restriucted to localhost, but you can change this to anything you want
You also have to make sure the mod_proxy_ws module is enabled, which is not the case by default on CentOS 7
echo "LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so" \\ > /etc/httpd/conf.modules.d/00-proxy_ws.conf
Here, we'll copy the sample vroom.service unit so that systemd picks it up
cp /opt/vroom/docs/systemd/vroom.service /etc/systemd/system/ systemctl daemon-reload systemctl enable vroom
Now, we just need to configure vroom itself. Just copy the sample conf file
cp /opt/vroom/conf/settings.ini.dist /opt/vroom/conf/settings.iniAnd edit it to your need. settings.ini has plenty of comments, but here's an explanation of the different sections and settings
This section is where you define access to the database used by VROOM. The following settings are available
This section is where you define your signaling server settings. This is because VROOM was using a modified SignalMaster as signaling server, which could run on a separate server. Now, the signaling server is directly included in VROOM daemon so this section might be removed in the future
This section defines which STUN and TURN servers will be used by the ICE process. If you plan to use VROOM only on a local network, where each peer can connect to each others, you can just omit this part. But if you want VROOM to work from anywhere, you'll need use STUN and most likely TURN too.
This section is for video quality settings. the available settings are
This section is for emails sent by VROOM (invitations, notifications, feedback form etc...). The available settings are
This section controls the web interface. The available settings are
This section controls the cookie used for VROOM sessions. The available settings are
This section controls rooms behavior. The available settings are
This section controls logging of the VROOM daemon. The following settings are available
Controls Etherpad-Lite integration. The following settings are available
Controls how VROOM daemon behaves. The following settings are available
You can run any TURN server you want, but VROOM integrates well with rfc5766-turn-server. To make use of it, follow those steps
Download the latest version from here and extract the archive
Only the 3.x branch is supported
You can now install the extracted RPMS
yum localinstall turnserver-*/*.rpm
Here's a sample configuration:
mv /etc/turnserver/turnserver.conf /etc/turnserver/turnserver.conf.default cat <<'EOF' > /etc/turnserver/turnserver.conf mysql-userdb "host=localhost dbname=vroom user=vroom password=MySuperPassw0rd connect_timeout=5" verbose syslog fingerprint lt-cred-mech no-sslv2 no-sslv3 no-tcp no-udp tls-listening-port 5349 alt-tls-listening-port 3478 no-loopback-peers no-multicast-peers realm vroom cert /etc/turnserver/cert.pem pkey /etc/turnserver/key.pem proc-user turnserver proc-group turnserver EOF
You can now start and enable turnserver
systemctl enable turnserver systemctl start turnserver
You can check it's working with
journalctl -fl -u turnserver.service
firewall-cmd --add-port 80/tcp \\ --add-port 443/tcp \\ --add-port 3478/tcp \\ --add-port 3479/tcp \\ --add-port 5349/tcp \\ --add-port 5350/tcp \\ --add-port 49152-65535/tcp firewall-cmd --add-port 3478/udp \\ --add-port 3479/udp \\ --add-port 5349/udp \\ --add-port 5350/udp \\ --add-port 49152-65535/udp firewall-cmd --permanent \\ --add-port 80/tcp \\ --add-port 443/tcp \\ --add-port 3478/tcp \\ --add-port 3479/tcp \\ --add-port 5349/tcp \\ --add-port 5350/tcp \\ --add-port 49152-65535/tcp firewall-cmd --permanent \\ --add-port 3478/udp \\ --add-port 3479/udp \\ --add-port 5349/udp \\ --add-port 5350/udp \\ --add-port 49152-65535/udp
VROOM includes 5 different songs available as music on hold. If you want to add more, just drop your files in public/snd/moh. When joining a room, VROOM will randomly choose one file from this directory
If you want to customize the look and feel of VROOM, you can create your own templates. To do so, just copy the existing ones
cp -a /opt/vroom/templates/default /opt/vroom/templates/my_templateThen edit /opt/vroom/conf/settings.ini and set template = 'my_template' Restart VROOM so the configuration change is applied
systemctl restart vroom.serviceAnd you can start modifying your template.
As VROOM is still in early development, you'll have to closely follow how the default templates evolve and merge the changes in your own template
While working on your new template, it's recommanded to switch to the morbo backend as templates will be reloaded automatically after each modification