Merge branch 'master' into develop

* master:
  Update README.md
  Update README.md
  Update README.md
master
Torjus 2018-08-08 09:00:57 +02:00
commit c8d716d43b
1 changed files with 48 additions and 30 deletions

View File

@ -2,7 +2,7 @@
A WebRTC meeting service using [mediasoup](https://mediasoup.org) as its backend.
Try it online at https://mediasoup.akademia.no.
Try it online at https://akademia.no. You can add /roomname to the URL for specifying a room.
## Installation
@ -14,22 +14,17 @@ $ git clone https://github.com/havfo/multiparty-meeting.git
$ cd multiparty-meeting
```
* Set up the server:
* Copy `server/config.example.js` to `server/config.js` :
```bash
$ cd server
$ npm install
$ cp server/config.example.js server/config.js
```
* Copy `app/config.example.js` to `app/config.js` :
In addition, the server requires a screen to be installed for the server
to be able to seed shared torrent files. This is because the headless
Electron instance used by WebTorrent expects one. This means that in order
to run the project on a server, you need to install a virtual screen
such as `xvfb` by running
```bash
sudo apt install xvfb
```
Electron instance used by WebTorrent expects one.
See [webtorrent-hybrid](https://github.com/webtorrent/webtorrent-hybrid) for
more information about this.
@ -37,15 +32,20 @@ more information about this.
* Copy `config.example.js` as `config.js` and customize it for your scenario:
```bash
$ cp config.example.js config.js
$ cp app/config.example.js app/config.js
```
* Edit your two `config.js` with appropriate settings (listening IP/port, logging options, **valid** TLS certificate, etc).
* Set up the browser app:
```bash
$ cd app
$ npm install
$ export NODE_ENV=production
$ gulp dist
```
This will build the client application and copy everythink to `server/public` from where the server can host client code to browser requests. (no apache/NGINX needed)
* Globally install `gulp-cli` NPM module (may need `sudo`):
@ -53,45 +53,63 @@ $ npm install
$ npm install -g gulp-cli
```
* Set up the server:
```bash
$ cd ..
$ cd server
$ npm install
```
## Run it locally
* Run the Node.js server application in a terminal:
```bash
$ cd server
$ node server.js
```
* In another terminal build and run the browser application:
```bash
$ cd app
$ gulp live
```
* Enjoy.
* test your service in a webRTC enabled browser: `https://yourDomainOrIPAdress:3443/roomname`
## Deploy it in a server
* Build the production ready browser application:
* Stop your locally running server. Copy systemd-service file `multiparty-meeting.service` to `/etc/systemd/system/` and dobbel check location path settings:
```bash
$ cd app
$ gulp dist
$ cp multiparty-meeting.service /etc/systemd/system/
$ edit /etc/systemd/system/multiparty-meeting.service
```
* Upload the entire `server` folder to your server and make your web server (Apache, Nginx...) expose the `server/public` folder.
* reload systemd configuration and start service:
* Edit your `server/config.js` with appropriate settings (listening IP/port, logging options, **valid** TLS certificate, etc).
```bash
$ systemctl daemon-reload
$ systemctl start multiparty-meeting
```
* Within your server, run the server side Node.js application. We recommend using the [pm2](https://www.npmjs.com/package/pm2) NPM daemon launcher, but any other can be used.
* if you want to start multiparty-meeting at boot time:
```bash
$ systemctl enable multiparty-meeting
```
## Ports and firewall
* 3443/tcp (default https webserver and signaling - adjustable in `server/config.js`)
* 3000/tcp (default `gulp live` port for developing with live browser reload, not needed in production enviroments - adjustable in app/gulpfile.js)
* 40000-49999/udp/tcp (media ports - adjustable in `server/config.js`)
* If you want your service running at standard ports 80/443 you should:
* Make a redirect from HTTP port 80 to HTTPS (with Apache/NGINX)
* Configure a forwarding rule with iptables from port 443 to your configured service port (default 3443)
## TURN configuration
* You need an addtional [TURN](https://github.com/coturn/coturn)-server for clients located behind restrictive firewalls! Add your server and credentials to `app/config.js`
## Author
* Håvar Aambø Fosstveit
* Stefan Otto
* Mészáros Mihály
This is heavily based on the [work](https://github.com/versatica/mediasoup-demo) done by: