🗨️ Nextcloud Talk – chat, video & audio calls for Nextcloud
Перейти к файлу
Joas Schilling 2f242a56d7
Correctly compile modules with our supported browsers
Signed-off-by: Joas Schilling <coding@schilljs.com>
2020-04-02 14:36:45 +02:00
.github Hmm? 2020-03-24 16:04:45 +01:00
.tx Fix tx config 2018-02-12 23:04:39 +01:00
appinfo Add some indexes for the main queries 2020-03-31 19:17:40 +02:00
css Make icon-search visible again 2020-03-25 10:47:59 +01:00
docs Merge pull request #3221 from nextcloud/bugfix/noid/reflect-NAT-in-turn-docs 2020-04-01 11:58:16 +02:00
img Create AdvancedInput component 2019-10-09 10:50:25 +02:00
l10n [tx-robot] updated from transifex 2020-04-02 02:53:12 +00:00
lib Remove unused count attribute from rooms 2020-04-01 08:15:07 +02:00
sample-commands More verbose feedback on sample commands 2019-04-08 17:00:54 +02:00
src Remove unused computed 2020-03-31 18:55:55 +02:00
templates Combine the admin settings into one JS file so we watch less resources 2020-03-26 12:10:28 +01:00
tests Fix unit tests 2020-03-26 19:03:29 +01:00
.drone.yml Fix drone app:check-code test 2020-01-20 17:27:27 +01:00
.eslintignore Fix stylelint errors 2019-12-13 22:15:41 +01:00
.eslintrc.js Install new eslint package 2020-03-24 10:28:39 +01:00
.gitattributes All items in js/ are now compiled 2019-10-18 10:31:15 +02:00
.gitignore Fix warnings and errors with phpunit 8 2019-11-28 14:54:16 +01:00
.l10nignore Ignore all compiled JS from translations 2019-10-18 10:30:57 +02:00
.stylelintignore Fix Stylelint 2020-03-24 11:32:49 +01:00
.stylelintrc Fix stylelint ::v-deep 2019-12-05 22:13:50 +01:00
CHANGELOG.md Add changelog for 8.0.6 2020-04-01 11:33:39 +02:00
COPYING add a proper readme file and a license file 2016-11-28 15:20:19 +01:00
Makefile Ship map files by default 2020-03-26 19:22:49 +01:00
README.md Link to the docu instead 2020-03-24 14:54:43 +01:00
babel.config.js Correctly compile modules with our supported browsers 2020-04-02 14:36:45 +02:00
check-vuejs-builds.sh Remove vue/ because it's empty 2019-10-18 13:14:11 +02:00
jest.config.js Execute unit tests on github 2020-03-24 11:33:34 +01:00
mkdocs.yml Fix docs 2019-12-04 15:51:20 +01:00
package-lock.json Merge pull request #3153 from nextcloud/h264 2020-03-31 15:50:13 +02:00
package.json Merge pull request #3153 from nextcloud/h264 2020-03-31 15:50:13 +02:00
run-stylelint.sh Unify the stylelinting into 1 call 2019-12-05 22:19:46 +01:00
webpack.common.js Compile some more libs to make IE load 2020-04-02 11:19:54 +02:00
webpack.dev.js fix code style config files 2020-03-27 16:16:23 +01:00
webpack.prod.js fix code style config files 2020-03-27 16:16:23 +01:00

README.md

Nextcloud Talk

Video- & audio-conferencing app for Nextcloud

Why is this so awesome?

  • 💬 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.
  • 🙈 Were not reinventing the wheel! Based on the great simpleWebRTC library.

And in the works for the coming versions:

If you have suggestions or problems, please open an issue or contribute directly :)

Supported Browsers

Browser Compatible
Firefox ✔️ 52 or later
Chrome/Chromium ✔️ 49 or later
Edge ⚠️ latest versions
🎤 Speakers are not promoted
🏷 Name changes while a call is on-going are not reflected
Safari ⚠️ 12 or later
No screensharing support
🖥 Viewing screens of others works

Installing for Production

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 to install. You can find instructions in our documentation and the team behind the Nextcloud VM has developed a script which takes care of everything for you (vm-talk.sh). 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.

Scalability

Talk works peer to peer, that is, each participant sends an end-to-end encrypted stream to each other participant and receives one stream per other participant. This grows bandwidth usage with the number of participants. As most users are on an asymetric local internet connection, the sending bandwidth often becomes the bottleneck. A typical Nextcloud Talk instance can handle a few dozen calls, but each call can have only 4-6 participants depending on the participants' bandwidth.

To limit bandwidth usage, Talk automatically disables video when a call is started in a room 5 or more participants. As long as nobody enables video, this saves bandwidth but once video is started a user has to leave the call and re-join for the stream to stop. Even a muted or disabled video stream is being send out. This is due to the technical implementation details of WebRTC which is used by Talk.

Scaling beyond 5 users in a call

Nextcloud offers a partner product, the Talk High Performance Back-end, which deals with this scalability issue by including a Selective Forwarding Unit (SFU). Each participant sends one stream to the SFU which distributes it under the participants. This typically scales to 30-50 or even more active participants. Further more, the HPB setup also allows calls with hundreds of passive participants. With this number of participants is only limited by the bandwidth of the SFU setup. This is ideal for one-to-many streaming like webinars or remote teaching lessons.

The HPB also takes care of signaling, decreasing the load of many calls on the Talk server and optional SIP integration so users can dial in to calls by phone.

If you need to use Talk in an enterprise environment, contact our sales team for access to the high performance back-end. See our website for more details and pricing.

Development setup

  1. Simply clone this repository into the apps folder of your Nextcloud development instance.
  2. Run make dev-setup to install the dependencies;
  3. Run make build-js
  4. Then activate it through the apps management. 🎉
  5. 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.

API documentation

The API documentation is available at https://nextcloud-talk.readthedocs.io/en/latest/

Milestones and Branches

Branches

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.

Milestones

  • 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.

Useful tricks for testing

  • Disable camera until reboot: sudo modprobe -r uvcvideo
  • Re-enable camera: sudo modprobe uvcvideo
  • Send fake-stream (audio and video) in firefox:
    1. Open about:config
    2. Search for fake
    3. Toggle media.navigator.streams.fake to true

Contribution Guidelines

For more information please see the guidelines for contributing to this repository.