Free Online Conference and Collaboration Tool with build in WebRTC MCU/SFU running in NodeJS
- 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...
- install nodeJs
- run: npm install
- run: node server.js
- 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.
- build . -t acc
- run: docker run -d --net=host acc
- 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
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...
- 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)
- 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
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)
- Setup your TURN Container on an extra Server: HowTo
- 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.
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/;
}
<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>
- University: Reutlingen University
- Faculty: Informatik
- Course of study: Human-Centered Computing (Master)
- Lecture: "Kollaborative Systeme" (Collaborative Environments)
- Raphael Fritsch (raphael.fritsch@reutlingen-university.de) | Backend / WebRTC (and generally further development)
- Simone Liegl (simone.liegl@gmail.com) | Frontend / Design / UX
- Sebastian Hirth | Frontend / Backend / Logo
- Gabriela Tullius (gabriela.tullius@reutlingen-university.de) | swuxLab
- Peter Hertkorn (peter.hertkorn@reutlingen-university.de) | swuxLab
license: GPLv3.0