Caveat: This application is a proof of concept and does not conform to web application security best practices. Caution should be taken before running any of the commands listed in the installation guide. Note that some commands use example.com as a placeholder domain.
This guide has been designed for Ubuntu 14.04.3
- Install Node.js with
sudo apt-get install nodejs - Download EasyRTC v1.0.16 (later versions may work) with
git clone -b beta https://github.com/priologic/easyrtc.git - Install npm with
sudo apt-get install npm cd easyrtcto open the cloned contents andnpm installcd server_exampleto open the server directory folder andnpm install- Install screen via package manager with
sudo apt-get install screen - Start a screen session with
screen -R easyrtc - Run
nodejs server.jsfrom inside the server_example directory
Note: You can exit the screen session using ctrl-a + d
You will now have a working installation of EasyRTC running on port 8080. Test this by browsing to it in a supported web browser.
Supported browsers require HTTPS when using WebRTC.
-
Create an SSL key and cert, replacing example.com with your domain
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt cd /opt/letsencrypt sudo -H ./letsencrypt-auto certonly --standalone -d example.com -
cd ~/easyrtc/server_exampleandnano server.js -
Remove the following code
var http = require("http");
-
Insert the following code in its place
var https = require("https"); var fs = require("fs");
-
Remove the following code
var webServer = http.createServer(httpApp).listen(8080);
-
Insert the following code in its place, replacing example.com with your domain
var webServer = https.createServer( { key: fs.readFileSync("/etc/letsencrypt/live/example.com/privkey.pem"), cert: fs.readFileSync("/etc/letsencrypt/live/example.com/cert.pem"), ca: fs.readFileSync("/etc/letsencrypt/live/example.com/chain.pem") }, app).listen(8080);
-
Run
npm installfrom inside the server_example directory again
You can now run screen -r easyrtc and sudo nodejs server.js to run EasyRTC with HTTPS support.
Note: You can exit the screen session using ctrl-a + d
Test your configuration works inside a supported browser.
- Install the required dependancies for Voice Links
sudo apt-get -y install apache2 mysql-server php5-mysql php5 libapache2-mod-php5 - Enter password
aREALLYsecurepa$$w0rdfor MySQL root password- If you change the password make sure to edit
config.phpwith the updated MySQL credentials
- If you change the password make sure to edit
- Run
sudo mysql_install_db - Run
sudo mysql_secure_installationand follow the instructions - defaults work fine
You will now have a standard LAMP stack installed.
Clone the voice-links web application.
git clone https://github.com/FireGrey/voice-links.gitsudo mv ./voice-links /var/www/voice-links/
- Run
mysql -u root -p < /var/www/voice-links/DB.sql nano /etc/apache2/apache2.confand add the following<Directory /var/www/voice-links> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>sudo a2enmod rewritesudo service apache2 restartnano /etc/apache2/sites-available/000-default.confand add the following, replacing example.com with your domain
<VirtualHost *:80>
DocumentRoot /var/www/voice-links
ServerName example.com
</VirtualHost>
sudo service apache2 restartcd /opt/letsencrypt- Run
./letsencrypt-auto --apache -d example.comreplacing example.com with your domain
This will configure Voice Links to run at the base URL example.com/. If you chose to run Voice Links under a different base URL i.e. example.com/some-directory/ you will need to update the RewriteBase in the .htaccess file to match.
Recordings are saved for each user in the room. The filename format is the user ID followed by the offset between the user clicking the Start recording button and the remote peers microphone being recorded. This allows you to accurately merge the individual recorded files even when peers join the room later than when the recording begun.
ID-DTcqZTWJCTPy6EqO_Offset-0ms filename represents the user ID DTcqZTWJCTPy6EqO who was already in the room at the time recording begun because their offset is 0ms zero milliseconds.
ID-OLoodr8X5G1mCvKe_Offset-18927ms filename represents user ID OLoodr8X5G1mCvKe who joined the room 18927ms 18.9 seconds after recording begun.
Chrome 50.0 -- Well Supported
Firefox 46.0.1 -- Moderataly Supported (see bugs)
No Viable Iceerrors for heavily NAT'ed peers- Workaround: Switch to a quieter connection (3/4G tether from a mobile phone often works, VPN sometimes works)
- In Firefox, peers who join after recording has started are not included in recording
- Waiting for newer version of MediaStreamRecorder (possibly v1.3.3)
- Rare crash in Firefox when recording multiple peers
- Hard to replicate
- Chrome recordings are only saved as webm (inconvient format for audio editing)
- Waiting for newer version of MediaStreamRecorder (possibly v1.3.3)
- HTML5 audio box timer freezes in Chrome with more than 2 peers
- Likely fixed in later versions of Chrome
- Output selection boxes blank for some Chrome users
- Workaround: Open
chrome://flagsandenableExperimental Web Platform
- Workaround: Open
- Output selection only supported by Chrome
- Likely supported in later versions of Firefox