Merge branch 'master' into develop
* master: Update README.md Update README.md Update README.mdmaster
commit
c8d716d43b
78
README.md
78
README.md
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
A WebRTC meeting service using [mediasoup](https://mediasoup.org) as its backend.
|
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
|
## Installation
|
||||||
|
|
@ -14,22 +14,17 @@ $ git clone https://github.com/havfo/multiparty-meeting.git
|
||||||
$ cd multiparty-meeting
|
$ cd multiparty-meeting
|
||||||
```
|
```
|
||||||
|
|
||||||
* Set up the server:
|
* Copy `server/config.example.js` to `server/config.js` :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ cd server
|
$ cp server/config.example.js server/config.js
|
||||||
$ npm install
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* Copy `app/config.example.js` to `app/config.js` :
|
||||||
|
|
||||||
In addition, the server requires a screen to be installed for the server
|
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
|
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
|
Electron instance used by WebTorrent expects one.
|
||||||
to run the project on a server, you need to install a virtual screen
|
|
||||||
such as `xvfb` by running
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt install xvfb
|
|
||||||
```
|
|
||||||
|
|
||||||
See [webtorrent-hybrid](https://github.com/webtorrent/webtorrent-hybrid) for
|
See [webtorrent-hybrid](https://github.com/webtorrent/webtorrent-hybrid) for
|
||||||
more information about this.
|
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:
|
* Copy `config.example.js` as `config.js` and customize it for your scenario:
|
||||||
|
|
||||||
```bash
|
```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:
|
* Set up the browser app:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ cd app
|
$ cd app
|
||||||
$ npm install
|
$ 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`):
|
* Globally install `gulp-cli` NPM module (may need `sudo`):
|
||||||
|
|
||||||
|
|
@ -53,45 +53,63 @@ $ npm install
|
||||||
$ npm install -g gulp-cli
|
$ npm install -g gulp-cli
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* Set up the server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cd ..
|
||||||
|
$ cd server
|
||||||
|
$ npm install
|
||||||
|
```
|
||||||
|
|
||||||
## Run it locally
|
## Run it locally
|
||||||
|
|
||||||
* Run the Node.js server application in a terminal:
|
* Run the Node.js server application in a terminal:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ cd server
|
|
||||||
$ node server.js
|
$ node server.js
|
||||||
```
|
```
|
||||||
|
* test your service in a webRTC enabled browser: `https://yourDomainOrIPAdress:3443/roomname`
|
||||||
* In another terminal build and run the browser application:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ cd app
|
|
||||||
$ gulp live
|
|
||||||
```
|
|
||||||
|
|
||||||
* Enjoy.
|
|
||||||
|
|
||||||
|
|
||||||
## Deploy it in a server
|
## 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
|
```bash
|
||||||
$ cd app
|
$ cp multiparty-meeting.service /etc/systemd/system/
|
||||||
$ gulp dist
|
$ 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
|
## Author
|
||||||
|
|
||||||
* Håvar Aambø Fosstveit
|
* 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:
|
This is heavily based on the [work](https://github.com/versatica/mediasoup-demo) done by:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue