====== 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