Since NextCloud opensourced their own signalling server we have migrated back to the original Talk. Our objective is in some sense fulfilled as we believe that open-sourcing was a direct result of our work.
However, if this repo is useful for you, consider becoming a maintainer
This repo breaks with latest version (19) of NC
This is a fork of Nextcloud Talk to use Big Blue Button as the video / audio conferencing server & client instead of Nextcloud's PHP-based signalling engine (or the Nextcloud paid cloud signaling servers)
Using PHP as a backend for video / audio conferencing is a bad idea for many reasons. It remains a good technical feat, but suffers from:
- Latency -- PHP does not maintain persistent connections with users and is an interpreted language
- Cannot maintain many connections at the same time (max is about 4-5 based on our own experience)
- Uses its own signaling protocol, so you have to either reinvent the wheel for a compiled native server or pay for the service
- There is no one going to maintain it besides the original developers. Something as complex as a video / audio conferencing requires a team -- future-proofing for enterprise deployments is paramount!
Paying for the third-party service by NC was not an option for us (maybe it is for you) -- it is too expensive for a solutions provider like us
This is a tried-tested-and-true solution used by many educational institutions worldwide. It has been under active development for a very long time and is well-maintained. Uses Red5 and Kurento under the hood, and has a very nice and solid client (using our beloved MeteorJS)
- A recommended BBB server can support over 100 simultaneous users
- BBB client can handle a lot more participants in the UI
- BBB client has drawing board, breakout rooms, uploading PDF,DOC,PPT,XLS
- BBB client has real-time notes
- BBB client UI is professional-grade (no offense intended for current Talk client UI)
- BBB uses WebRTC -- don't want to get sued like Zoom because they used their own protocol
Big Blue Button uses webrtc protocol which is supported by all recent browsers (even on iOS). Therefore, they do not have a mobile application for it.
If you are using the Talk mobile app it won't work with this app. If a mobile app is a must you are stuck with the original Talk app.
Super easy, they have an automated install script. You do need to have an SSL certificate setup (the install script does it for you, but you need to setup your domains properly). Don't forget that you need to use Ubuntu 16
- We load up an iframe with your BBB server where the old Talk client was, only when in the Talk app. The files details chat still uses the original signaling (which is easily capable of handling such a low-attendees call).
Right now it is still internally called spreed which is the original name of the Talk App. The reasons are many, but prevent us from pushing into the NC Apps store. If you can help with this, please open an issue.
-
When a call is launched in the Talk app (not files sidebar) we hide both sidebars to have the call full width (you can reopen the call sidebar on the right by clicking on its icon)
-
We kept the chat as-is using the internal signaling server which is more than capable of handling chat traffic
-
We removed the Talk changelog that appears for new users (I understand the rationale, but annoying for system administrators)
The original code is very well-written. Kudos to the original developers. Made it easier to make changes. We had to add a few helper functions here and there as some needs were not served well by existing ones (e.g. get the name of a guest to send to BBB)
Of course, remove the original spreed
git clone https://github.com/ramezrafla/spreed-bigbluebutton.git spreed --branch stable18-bbb --depth 1
Notes:
- Run that clone command in your /apps folder
- We included the build dir (/js) in this repo. In the future we will add releases (help wanted) or push in the Apps store (help wanted)
- Supports NC 18 only -- sorry, too much work porting back
- If you intend to develop omit the --depth argument
'spreed' =>
array (
'bbb_server' => 'https://YOURSERVER/bigbluebutton/',
'bbb_secret' => 'YOURSECRET',
),
or, alternatively create a config/custom.config.php:
<?php
$CONFIG = <?php
$CONFIG = array ('spreed' =>
array (
'bbb_server' => 'https://YOURSERVER/bigbluebutton/',
'bbb_secret' => 'YOURSECRET',
),
);
Notes:
- The trailing slash is important in the URL above
- You can get both info from your BBB server:
sudo bbb-conf --secret
- We hope to add soon to the admin settings UI of this App the ability to edit these manually (help wanted)
Reload your browser, clear your cache, etc. and you can now start calls with BBB
- Is the iframe loading when you start a call in the Talk app --> If not you are still using the old App
- Make sure BBB server is working. Open your browser to
https://DOMAIN/bigbluebutton/
andhttps://DOMAIN/bigbluebutton/api/
. You should get a response for both calls like this
<response>
<script/>
<returncode>SUCCESS</returncode>
<version>2.0</version>
</response>
Anything else is a problem. Fix your BBB server first
- You are getting a blank iframe --> are you sure you properly setup
bbb_secret
andbbb_server
parameters? - if you're getting a black iframe, check your browser console for cookie errors. Your BBB domain must be equal to the nextcloud domain: cloud.mydomain.de/bbb.mydomain.de work; cloud.mydomain.de/bbb.yourdomain.de might not work (same site cookie issue)
Needless to say, help wanted
- Add the 2 BBB parameters (server and key) in the admin settings UI of this App instead of config.php
- Change name of this app -- recommended: name = 'Talk with BigBlueButton' and id = 'talk_bbb'
- Publish to apps store under new name
If you need a BBB server for testing, please PM me.
- Ask for help to setup your BBB server -- out of scope. If you are having issues read the docs or look for a third-party provider
- Ask for help before you go through the troubleshooting steps above
- Criticize this work needlessly -- it was done to serve a purpose (for example, we did not add function docs above the new functions, later ...)
- Ask us to add your must-have features for you -- we are sharing this in the hopes that it is useful and welcome good PRs; so there is no reason you can't do it yourself or pay someone else
---- Original Talk README below this line ----
Video- & audio-conferencing app for Nextcloud
- π¬ Chat integration! Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.
- π₯ Private, group, public and password protected calls! Just invite somebody, a whole group or send a public link to invite to a call.
- π» Screen sharing! Share your screen with participants of your call. You just need to use Firefox version 52 (or newer), latest Edge or Chrome 49 (or newer) with this Chrome extension.
- π Integration with other Nextcloud apps like Files, Contacts and Deck. More to come.
- π Weβre not reinventing the wheel! Based on the great simpleWebRTC library.
And in the works for the coming versions:
- π Federated calls, to call people on other Nextclouds
If you have suggestions or problems, please open an issue or contribute directly :)
Browser | Compatible |
---|---|
Firefox | βοΈ 52 or later |
Chrome/Chromium | βοΈ 49 or later |
Edge | π€ Speakers are not promoted π· Name changes while a call is on-going are not reflected |
Safari | β No screensharing support π₯ Viewing screens of others works |
Nextcloud Talk is really easy to install. You just need to enable the app from the Nextcloud App Store and everything will work out of the box.
There are some scenarios (users behind strict firewalls / symmetric NATs) where a TURN server is needed. That's a bit more tricky installation, but the guys from Nextcloud VM have developed a script which takes care of everything for you. You can find the script here. The script is tested on Ubuntu Server 18.04, but should work on 16.04 as well. Please keep in mind that it's developed for the VM specifically and any issues should be reported in that repo, not here.
Here's a short video on how it's done.
If you need to use Talk in a enterprise environment, including the ability to have calls with more than 5-6 users, you can contact our sales team for access to our high performance back-end. This is a set of components that replaces some of the PHP code with a more scalable and performant solution that decreases network traffic and allows dozens or hundreds of users in a call.
- Simply clone this repository into the
apps
folder of your Nextcloud development instance. - Run
make dev-setup
to install the dependencies; - Run
make build-js
- Then activate it through the apps management. π
- To build the docs locally, install mkdocs locally:
apt install mkdocs mkdocs-bootstrap
We are also available on our public Talk team conversation, if you want to join the discussion.
The API documentation is available at https://nextcloud-talk.readthedocs.io/en/latest/
In the Talk app we have one branch per Nextcloud server version. stable* branches of the app should always work with the same branch of the Nextcloud server. This is only off close to releases of the server, to allow easier finishing of features, so we don't have to backport them.
- 5.0.0 - Numeric milestones are settled and waiting for their release or some final polishing
- π Next Minor (15) - The next minor milestone is for issues/PR that go into the next Dot-Release for the given Nextcloud version (in the example 15 - e.g. 5.0.1)
- π Next Major - The next major milestone is for issues/PR that go into the next feature release for the new Major Nextcloud version (as there are Minors for 15, this would be 16)
- π Following Major - The following major milestone is for issues/PR that should be worked towards/on but didn't make it into the next major due to timing constraints
- π Backlog - The backlog milestone is assigned to all remaining issues
You can always pick a task of any of the milestones and we will help you to get it into the assigned milestone or also an earlier one if time permits. It's just a matter of having an overview and better visibility what we think should be worked on, but it's not exclusive.
- Disable camera until reboot:
sudo modprobe -r uvcvideo
- Re-enable camera:
sudo modprobe uvcvideo
- Send fake-stream (audio and video) in firefox:
- Open
about:config
- Search for
fake
- Toggle
media.navigator.streams.fake
to true
- Open
For more information please see the guidelines for contributing to this repository.