🗨️ Nextcloud Talk – chat, video & audio calls for Nextcloud
Перейти к файлу
Joas Schilling 799bcbf03a fix(recording): Don't create confusing system message about recording if actor ended the call
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-04-18 11:49:15 +02:00
.github fix(deps): Fix reseting vendor-bin 2023-04-03 19:29:19 +02:00
.tx [tx-robot] Update transifex configuration 2022-10-01 02:58:18 +00:00
appinfo chore: Add Nextcloud 27 support on master 2023-03-03 11:43:26 +01:00
composer perf(autoloader): Force own autoloader 2023-01-25 09:47:45 +01:00
css Fix conversation icon for smart picker 2023-03-13 20:14:53 +01:00
docs feat(chat): Add capabilities for translation options 2023-04-17 12:27:49 +02:00
img Add background images 2023-04-18 06:35:39 +01:00
l10n Fix(l10n): Update translations from Transifex 2023-04-18 03:42:03 +00:00
lib fix(recording): Don't create confusing system message about recording if actor ended the call 2023-04-18 11:49:15 +02:00
recording fix(recording): Improve recording file names 2023-04-17 17:45:05 +02:00
sample-commands Update coding standard 2022-02-09 11:53:50 +01:00
src Add aria label reminder 2023-04-18 06:35:39 +01:00
templates fix: remove import of deleted `At.css` 2023-02-22 09:55:17 +01:00
tests fix(recording): Don't create confusing system message about recording if actor ended the call 2023-04-18 11:49:15 +02:00
vendor-bin chore(deps-dev): Bump phpunit/phpunit in /vendor-bin/phpunit 2023-04-15 03:30:42 +00:00
.drone.jsonnet feat(CI): Run integration tests on PHP 8.2 for testing 2023-02-02 15:40:57 +01:00
.drone.yml feat(CI): Run integration tests on PHP 8.2 for testing 2023-02-02 15:40:57 +01:00
.eslintignore Adjust code imported from Jitsi to Talk style 2021-10-11 16:48:38 +02:00
.eslintrc.js Merge pull request #9050 from nextcloud/feat/noid/prepare-for-desktop 2023-03-21 12:43:26 +01:00
.gitattributes All items in js/ are now compiled 2019-10-18 10:31:15 +02:00
.gitignore chore(git): Ignore '*.code-workspace' files 2023-04-04 09:08:13 +02:00
.l10nignore Ignore all compiled JS from translations 2019-10-18 10:30:57 +02:00
.php-cs-fixer.dist.php Add Mozart to avoid conflict with other JWT apps 2022-09-01 10:53:37 +02:00
.stylelintignore Fix Stylelint 2020-03-24 11:32:49 +01:00
CHANGELOG.md chore(release): Add changelog for 16.0.2 2023-03-28 19:09:46 +02:00
COPYING add a proper readme file and a license file 2016-11-28 15:20:19 +01:00
Makefile Update makefile 2023-03-29 16:00:35 +01:00
README.md Update browser compatibility list 2022-11-09 13:01:13 +01:00
babel.config.js build: remove TS related tooling and files 2023-03-13 16:17:42 +01:00
composer.json Only do classmap-authoritative on release 2023-02-17 12:04:33 +01:00
composer.lock chore(dev-deps): Bump nextcloud/ocp package 2023-04-09 02:46:20 +00:00
jest.config.js Bump jest to @29.5.0, jest-mock-axios to @4.7.1 2023-03-29 11:05:58 +02:00
mkdocs.yml fix(docs): Split avatar docs because it has a different base API version 2023-04-14 10:42:40 +02:00
package-lock.json chore(deps-dev): Bump @vue/test-utils from 1.3.4 to 1.3.5 2023-04-15 03:40:14 +00:00
package.json chore(deps-dev): Bump @vue/test-utils from 1.3.4 to 1.3.5 2023-04-15 03:40:14 +00:00
psalm.xml fix(CI): Add upcoming psalm options to get rid of warnings 2023-04-03 19:29:18 +02:00
stylelint.config.js fix: remove import of deleted `At.css` 2023-02-22 09:55:17 +01:00
webpack.common.config.js feat(desktop): prepare webpack config for desktop 2023-03-14 10:02:12 +01:00
webpack.config.js feat(desktop): prepare webpack config for desktop 2023-03-14 10:02:12 +01:00

README.md

Nextcloud Talk

A video & audio conferencing app for Nextcloud

Why is this so awesome?

  • 💬 Chat Nextcloud Talk comes with a simple text chat, allowing you to share or upload files from your Nextcloud Files app or local device and mentioning other participants.
  • 👥 Private, group, public and password protected calls! Invite someone, 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 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this Chrome extension).
  • 🚀 Integration with other Nextcloud apps like Files, Calendar, User status, Dashboard, Flow, Contacts and Deck, with more to come.
  • 🎡 Were not reinventing the wheel! Based on the great simpleWebRTC library.
  • 🌉 Sync with other chat solutions With Matterbridge being integrated in Talk, you can easily sync a lot of other chat solutions to Nextcloud Talk and vice-versa.

More 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
Opera ✔️ 72 or later
Safari ✔️ 13 or later
⚠️ Safari 12 also works, but can not share their own screen
Edge ⚠️ Latest versions
🎤 Speakers are not promoted
🏷 Name changes while a call is on-going are not reflected

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 the recent Ubuntu Server LTS. Please keep in mind that it's developed for the VM specifically and any issues should be reported in that repository, 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 every other participant and receives one stream per other participant. Bandwidth usage grows with the number of participants.

A single video stream currently uses about 1 Mbit/sec and the total required bandwidth can be calculated as follows:

1 Mbit/s * (participants - 1)

This means that in a call with 5 participants, each has to send and receive about 4 Mbit/sec. Given the asymmetric nature of most typical broadband connections, it's sending video that quickly becomes the bottleneck. Moreover, decoding all those video streams puts a big strain on the system of each participant.

To limit and CPU bandwidth usage, participants can disable video. This will drop the bandwidth use to audio only, about 50 kbit/sec (about 1/20th of the bandwidth of video), eliminating most decoding work. When all participants are on a fast network, a call with 20 people without video could be doable.

Still a call creates a load on the participants' browsers (decoding streams) and on the server as it handles signaling. This, for example, also has consequences for devices that support calls. Mobile device browsers will sooner run out of compute capacity and cause issues to the call. While we continuously work to optimize Talk for performance, there is still work to be done so it is not unlikely that the bottleneck will be there for the time being. We very much welcome help in optimization of calls!

How to have the maximum number of participants in a call

To make sure a call can sustain the largest number of participants, make sure that:

  • each participant has a fast upload and download.
  • each participant has a fast enough system. This means:
    • on a desktop/laptop system, a browser like Firefox or Chrome should be used. The WebRTC implementation in other browsers is often sub-par. On a laptop, the power cord should be plugged in - this often results in better CPU performance.
    • on mobile devices, the Android/iOS apps should be used because mobile browsers will run out of computing power quickly.
  • all participant disables their video streams.

With this setup, 20 users should be possible in a typical setup.

Scaling beyond 5-20 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. Furthermore, 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 Talk 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.

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

API documentation

The API documentation is available on nextcloud-talk.readthedocs.io/.

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

  • 10.0.0 - Numeric milestones are settled and waiting for their release or some final polishing
  • 💛 Next Minor (20) - The next minor milestone is for issues/PR that go into the next Dot-Release for the given Nextcloud version (in the example 20 - e.g. 10.0.1)
  • 💚 Next Major (21) - 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 20, this would be 21)
  • 💔 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.

Contribution Guidelines

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