Giter Site home page Giter Site logo

pratik9722 / accelerator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cracker0dks/accelerator

0.0 0.0 0.0 15.23 MB

Online Conference and Collaboration Tool

License: GNU General Public License v3.0

Dockerfile 0.03% JavaScript 93.13% HTML 3.81% CSS 3.03%

accelerator's Introduction

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

  • Raphael Fritsch ([email protected]) | Backend / WebRTC (and generally further development)
  • Simone Liegl ([email protected]) | Frontend / Design / UX
  • Sebastian Hirth | Frontend / Backend / Logo

Professors

license: GPLv3.0

accelerator's People

Contributors

cracker0dks avatar luroc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.