% title $self->l('DOCUMENTATION'); %= include 'header' %= include 'public_toolbar'

Introduction

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.

Features

VROOM implements the following features:

  • Video/audio conversations (no limit on the number of peers)
  • Text chat (and you can save history)
  • Screen sharing
  • Email invitations
  • Email notification when someone joins one of your rooms
  • Persistent/reserved rooms
  • Chairman functionnalities (mute/pause/kick other peers)
  • Grant chairman role to other peers
  • Password protected rooms (different passwords for access and chairman)
  • Music on hold (when you're alone in a room)
  • Can be optionaly integrated with Etherpad-Lite

VROOM is translated in French and English. You're welcome to submit patches or pull requests to enhance localization, or add new ones.

Install your own VROOM instance

The following guide will help you installing VROOM on your own server

Requirements

If you want to run your own server, you'll need the following components

  • Mojolicious 5 or better
  • A MySQL compatible server (MySQL or MariaDB)
  • A webserver supporting HTTPS and reverse proxying, including websocket reverse proxying (Apache can do this with mod_proxy_ws)
  • The following perl modules
    • Mojolicious::Plugin::Mail
    • Mojolicious::Plugin::Database
    • Crypt::SaltedHash
    • MIME::Base64
    • Etherpad::API
    • Session::Token
    • Config::Simple
    • Email::Valid
    • URI
    • Protocol::SocketIO::Handshake
    • Protocol::SocketIO::Message
It's also advised to run VROOM on a systemd powered distribution (simply because that's what I use and I include service units for VROOM). For the same reason, I recommend running Apache as webserver (others like Nginx probably work too, but I provide configuration sample only for Apache)

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.

Install on CentOS 7 x86_64

This guide assumes that you have installed a minimal CentOS 7 x86_64 system

Configure the required repositories

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
        

Install dependencies

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)'
        

Clone the repository

Lets install VROOM in /opt/vroom

cd /opt
git clone https://github.com/dani/vroom.git
        

Database

A database will be used to store rooms configuration, you must enable the server.

systemctl enable mariadb.service
systemctl start mariadb.service
        
Now, 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
        

Setup Apache

Two sample apache configurations are provided in the conf directory

  • httpd_alias.conf should work out of the box, VROOM will be available at https://yourservername/vroom
  • httpd_vhost.conf is an alternative which you can use if you prefer working with named virtualhost (but will require additional config adjustments, especially in ssl.conf, which is out of scope for this guide)
Copy the config you want in /etc/httpd/conf.d/

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
        

Setup systemd units

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
        

Configure 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.ini
        
And edit it to your need

%= include 'js_common' %= include 'footer'