Skip to content

cracker0dks/Accelerator

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Accelerator

Free Online Conference and Collaboration Tool with build in WebRTC MCU/SFU running in NodeJS

previmg

Available functions

  • Online Conferences with up to 6 participants per room (all Audio / Video)
  • Online Conferences with up to 250 participants per room (all Audio / only Moderator video)
  • Screenshare
  • PDF and HTML5 Presentations
  • Collaborative Whiteboard (can also be hosted standalone)
  • Youtube viewer
  • 3D Object viewer
  • User interactions with draggable items (like Textboxes, Drawings...)
  • Fileshare
  • Text Chat
  • Etherpad in IFrame (Must be hosted on its own)
  • much more...

Installation without Docker

  1. install nodeJs
  2. run: npm install
  3. run: node server.js
  4. surf to: http://127.0.0.1:8080

Note:

  • To serve it online you need a reverse proxy and deliver with https (look at "Behind a reverse Proxy" below)
  • On some linux systems you need to install some extra deps to run puppeteer: here.

Docker Installation

  1. build . -t acc
  2. run: docker run -d --net=host acc
  3. surf to http://yourIp:8080

Note:

  • To serve it online you need a reverse proxy and deliver with https (look at "Behind a reverse Proxy" below)
  • To have all persistent datas (config, rooms, presentations...) outside of docker, you can run it like this:
docker run -d --name acc --net=host -v /home/acc/config:/app/config -v /home/acc/db:/app/db  -v /home/acc/3dObjs:/app/public/3dObjs -v /home/acc/praesis:/app/public/praesis -v /home/acc/profilePics:/app/public/profilePics -v /home/acc/singlefiles:/app/public/singlefiles acc

Configuration

On the first start a new folder "/config" will be generated. Take a look at "/config/config.json" for all parameters. Change them if you like, and restart the server. If you don't see a config.json inside the /config folder set permitions of to mount:chmod -R 777 /home/acc and restart the container: docker restart acc.

More to come...

ToDos

  • Better error feedback
  • More, better docs
  • SIP Integration
  • Recording of Audio/Video (Prototype working)
  • Convert WebRTC Streams to RTMP so we can stream to youtube/twitch live (Prototype working)

GoodToKnow

  • Audio/Video is not Peer2Peer so it will use some server CPU
  • Max users per loadbalancer is about 256.
  • Video is disabled in rooms with more than 6 People due to hight load (Only enabled for moderator).
  • Firefox sometimes has some issues with the WebRTC audio/video, use chrome to be save
  • If you are running without docker, conversion to PDF presentaions (From Powerpoint and other Docs) will not work without installing "unoconv" on your own
  • Setup a TURN Server if your clients are behind Firewalls and NATs (See configuration/setup below)
  • Self made Audio MCU with AudioApi on Chromium-Stack
  • Videostreams are shared SFU Style

Loadbalancer Setup/Configuration

To setup a loadbalancer just start a second Accelerator server on a different server and change this parameters in your /config/config.json

  • "loadBalancerAuthKey": "key", //Change to the same loadBalancerAuthKey as the key on the master server
  • "isMaster": false,
  • "masterURL": "https://myAcceleratorDomain.tl", //Change this to the URL of your main server
  • "enableLocalMCU": true

Loadbalancing scheduling atm:

  • All users in the same room using the same loadbalancer (Rooms are not balanced over different servers)
  • First stream of room decides which loadbalancer is used for this room (loadbalancer with the least amount of streams at this moment)

TURN Setup/Configuration

  1. Setup your TURN Container on an extra Server: HowTo
  2. Make a new "iceServers" entry in "/config/config.json"
{
	"urls": "turn:IP_TO_TURN:443",
	"turnServerCredential": "authSecret",
	"username": "webrtcuser"
}
  • "username" can be anything you like.
  • "turnServerCredential" must be the "authSecret" form the TURN Server installation.

Restart the server.

Behind a nginx reverse Proxy

location /accelerator/ {
	resolver 127.0.0.1 valid=30s;
	proxy_set_header HOST $host;
	proxy_http_version 1.1;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection upgrade;
	proxy_pass http://127.0.0.1:8080/;
}

Behind an Apache reverse Proxy

<VirtualHost example.org:443>
...
# Proxy /accelerator/ to accelerator container
ProxyPass "/accelerator/" "http://127.0.0.1:8080/"
ProxyPassReverse "/accelerator/" "http://127.0.0.1:8080/"
...
</VirtualHost>

Version 0 based on students project work

Authors

Students

Professors

license: GPLv3.0

About

Online Conference and Collaboration Tool

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •