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)
La première chose à faire est d'installer une Fedora (l'installation minimale suffira)
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
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
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
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"} ] },