Table des matières

Mise en place de la visio Join The Room

Join The Room est une application simple de visio conférence exploitant la technologie WebRTC. Plusieurs composants sont nécessaires pour avoir un système autonome:

Le tout sera déployé sur une machine sous Fedora 20 (je préfère en général utiliser CentOS 6, mais nous auront besoin du module apache mod_proxywstunnel pour faire un ProxyPass de websocket et ce module n'est pas fournit dans la version 2.2 d'aache sur CentOS 6)

Installation minimale

La première chose à faire est d'installer une Fedora (l'installation minimale suffira)

Installer SignalMaster

SignalMaster est une appli écrite en nodejs, on va donc commencer par installer les dépendances:

yum install nodejs npm git

Puis installer l'appli elle même

cd /opt/
git clone https://github.com/andyet/signalmaster.git
cd signalmaster
npm install

Maintenant que l'application est installée, on va mettre en place le nécessaire pour la gérer via systemd

useradd signalmaster
cat <<'EOF' > /etc/systemd/system/signalmaster.service
[Service]
ExecStart=/usr/bin/node /opt/signalmaster/server.js
Restart=always
StandardOutput=syslog
SyslogIdentifier=SignalMaster
User=signalmaster
Group=signalmaster
 
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable signalmaster
systemctl start signalmaster

Installer Join the Room

yum install httpd mod_ssl
cd /opt
git clone https://github.com/yatendra/jointheroom.git
cat<<'EOF' > /etc/httpd/conf.d/jointheroom.conf
<Directory /opt/jointheroom>
    Options None
    DirectoryIndex index.shtml index.htm index.html
    Require all granted
</Directory>
 
<VirtualHost *:80>
    ServerName visio.firewall-services.com
    DocumentRoot /opt/jointheroom
    RewriteEngine on
    RewriteRule ^/(.*|$) https://%{HTTP_HOST}/$1 [L,R]
</VirtualHost>
<VirtualHost *:443>
    ServerName visio.firewall-services.com
    SSLEngine on
    DocumentRoot /opt/jointheroom
    #RewriteEngine on
    ProxyPass /socket.io/1/websocket ws://localhost:8888/socket.io/1/websocket
    ProxyPassReverse /socket.io/1/websocket ws://localhost:8888/socket.io/1/websocket
    ProxyPass /socket.io/ http://localhost:8888/socket.io/
    ProxyPassReverse /socket.io/ http://localhost:8888/socket.io/
    <Location /socket.io/>
        Require all granted
    </Location>
</VirtualHost>
 
EOF
cat <<'EOF' > /etc/httpd/conf.modules.d/00-proxy_ws.conf
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
EOF
systemctl enable httpd.service
systemctl start httpd.service

Installer le serveur STUN/TURN

Allez sur http://turnserver.open-sys.org/downloads/ et récupérer la dernière version pré-compilé pour notre Fedoa, à ce jour, c'est la version 3.2.2.7

yum -y install wget tar
wget wget http://turnserver.open-sys.org/downloads/v3.2.2.7/turnserver-3.2.2.7-Fedora20-x86_64.tar.gz
tar xvzf turnserver-3.2.2.7-Fedora20-x86_64.tar.gz
cd turnserver-3.2.2.7/
yum localinstall ./*.rpm
cp -a /etc/turnserver/turnserver.conf /etc/turnserver/turnserver.conf.orig
cat <<'EOF' > /etc/turnserver/turnserver.conf
userdb /etc/turnserver/turnuserdb.conf
verbose
fingerprint
lt-cred-mech
no-sslv2
no-loopback-peers
# Ajustez cette valeur
realm firewall-services.com
# decommentez et ajustez les chemins pour les connexions TLS
#cert /etc/pki/tls/certs/xxx.firewall-services.com.crt
#pkey /etc/pki/tls/private/xxx.firewall-services.com.key
proc-user turnserver
proc-group turnserver
EOF
cat <<'EOF' >> /etc/turnserver/turnuserdb.conf
jointheroom:secret
EOF

Ajustez Join The Room

IL ne reste plus qu'à ajuster 1 fichier dans l'application pour utiliser vos propres serveurs de signalement et STUN/TURN:

            url: "http://signalmaster.herokuapp.com",

en

            url: "https://visio.firewall-services.com",
            peerConnectionConfig: {
                iceServers: [
                    {"url": "stun:visio.firewall-services.com:3478"},
                    {"url":"turn:visio.firewall-services.com", "username":"jointheroom", "credential":"secret"}
                ]
            },
Vous pouvez bien sûre personnaliser le login jointheroom et son mot de passe associé secret. L'important étant qu'ils correspondent aux valeurs ajoutées dans le fichier /etc/turnserver/turnuserdb.conf