====== Mise en place de la visio Join The Room ======
[[https://github.com/yatendra/jointheroom|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:
* Un serveur web pour fournir les fichiers de Join the Room (c'est uniquement des fichiers statics)
* Un serveur de signalement [[https://github.com/andyet/signalmaster|SignalMaster]]
* Un serveur [[https://code.google.com/p/rfc5766-turn-server/|STUN/STURN]]
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
Options None
DirectoryIndex index.shtml index.htm index.html
Require all granted
ServerName visio.firewall-services.com
DocumentRoot /opt/jointheroom
RewriteEngine on
RewriteRule ^/(.*|$) https://%{HTTP_HOST}/$1 [L,R]
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/
Require all granted
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
* Configurez le démon:
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:
* Dans /opt/jointheroom/js/appObject.js ligne 14, changez
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