Bläddra i källkod

doc: replace documentation with the handbook

- Leave a link on doc/README,api,quick-install
- Moved the cloud API swagger file to resources/
- Merged the coding conventions with CONTRIBUTING.md
master
Saúl Ibarra Corretgé 4 år sedan
förälder
incheckning
7c4c8384fd

+ 96
- 0
CONTRIBUTING.md Visa fil

@@ -27,3 +27,99 @@ in the agreement, unfortunately, we cannot accept your contribution.
27 27
 - Maintain a clean list of commits, squash them if necessary.
28 28
 - Rebase your topic branch on top of the master branch before creating the pull
29 29
  request.
30
+
31
+## Coding style
32
+
33
+### Comments
34
+
35
+* Comments documenting the source code are required.
36
+
37
+  * Comments from which documentation is automatically generated are **not**
38
+    subject to case-by-case decisions. Such comments are used, for example, on
39
+    types and their members. Examples of tools which automatically generate
40
+    documentation from such comments include JSDoc, Javadoc, Doxygen.
41
+
42
+  * Comments which are not automatically processed are strongly encouraged. They
43
+    are subject to case-by-case decisions. Such comments are often observed in
44
+    function bodies.
45
+
46
+* Comments should be formatted as proper English sentences. Such formatting pays
47
+  attention to, for example, capitalization and punctuation.
48
+
49
+### Duplication
50
+
51
+* Don't copy-paste source code. Reuse it.
52
+
53
+### Formatting
54
+
55
+* Line length is limited to 120 characters.
56
+
57
+* Sort by alphabetical order in order to make the addition of new entities as
58
+  easy as looking a word up in a dictionary. Otherwise, one risks duplicate
59
+  entries (with conflicting values in the cases of key-value pairs). For
60
+  example:
61
+
62
+  * Within an `import` of multiple names from a module, sort the names in
63
+    alphabetical order. (Of course, the default name stays first as required by
64
+    the `import` syntax.)
65
+
66
+    ````javascript
67
+    import {
68
+        DOMINANT_SPEAKER_CHANGED,
69
+        JITSI_CLIENT_CONNECTED,
70
+        JITSI_CLIENT_CREATED,
71
+        JITSI_CLIENT_DISCONNECTED,
72
+        JITSI_CLIENT_ERROR,
73
+        JITSI_CONFERENCE_JOINED,
74
+        MODERATOR_CHANGED,
75
+        PEER_JOINED,
76
+        PEER_LEFT,
77
+        RTC_ERROR
78
+    } from './actionTypes';
79
+    ````
80
+
81
+  * Within a group of imports (e.g. groups of imports delimited by an empty line
82
+    may be: third-party modules, then project modules, and eventually the
83
+    private files of a module), sort the module names in alphabetical order.
84
+
85
+    ````javascript
86
+    import React, { Component } from 'react';
87
+    import { connect } from 'react-redux';
88
+    ````
89
+
90
+### Indentation
91
+
92
+* Align `switch` and `case`/`default`. Don't indent the `case`/`default` more
93
+  than its `switch`.
94
+
95
+  ````javascript
96
+  switch (i) {
97
+  case 0:
98
+      ...
99
+      break;
100
+  default:
101
+      ...
102
+  }
103
+  ````
104
+
105
+### Naming
106
+
107
+* An abstraction should have one name within the project and across multiple
108
+  projects. For example:
109
+
110
+  * The instance of lib-jitsi-meet's `JitsiConnection` type should be named
111
+    `connection` or `jitsiConnection` in jitsi-meet, not `client`.
112
+
113
+  * The class `ReducerRegistry` should be defined in ReducerRegistry.js and its
114
+    imports in other files should use the same name. Don't define the class
115
+    `Registry` in ReducerRegistry.js and then import it as `Reducers` in other
116
+    files.
117
+
118
+* The names of global constants (including ES6 module-global constants) should
119
+  be written in uppercase with underscores to separate words. For example,
120
+  `BACKGROUND_COLOR`.
121
+
122
+* The underscore character at the beginning of a name signals that the
123
+  respective variable, function, property is non-public i.e. private, protected,
124
+  or internal. In contrast, the lack of an underscore at the beginning of a name
125
+  signals public API.

+ 1
- 45
doc/README.md Visa fil

@@ -1,47 +1,3 @@
1 1
 # Documentation
2 2
 
3
-This document is the entrypoint to different guides, divided in three groups:
4
-
5
-* User guide: these documents are designed to help users of the service, to better
6
-understand all the available features and how to use them.
7
-
8
-* Developer guide: these documents are designed to help developers who want to either
9
-integrate the Jitsi Meet API / SDK in their products or want to improve Jitsi Meet
10
-itself by developing new features or fixing bugs.
11
-
12
-* DevOps guide: these documents are designed for DevOps folks, system administrators
13
-or anyone who wishes to deploy and operate their own Jitsi Meet instance.
14
-
15
-## User guide
16
-
17
-Work in progress.
18
-
19
-## Developer guides
20
-
21
-### Web
22
-
23
-* [iframe API](https://github.com/jitsi/jitsi-meet/blob/master/doc/api.md)
24
-* [Jitsi Meet development](https://github.com/jitsi/jitsi-meet/blob/master/doc/development.md)
25
-
26
-### Mobile
27
-
28
-* [Building the mobile apps](https://github.com/jitsi/jitsi-meet/blob/master/doc/mobile.md)
29
-* [SDK usage examples](https://github.com/jitsi/jitsi-meet-sdk-samples)
30
-* [Enabling Dropbox support](https://github.com/jitsi/jitsi-meet/blob/master/doc/mobile-dropbox.md)
31
-* [Enabling Google authentication](https://github.com/jitsi/jitsi-meet/blob/master/doc/mobile-google-auth.md)
32
-
33
-## DevOps guides
34
-
35
-* [Quick install](https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md)
36
-* [Docker install](https://github.com/jitsi/docker-jitsi-meet/blob/master/README.md)
37
-* [Google Calendar, MS Calendar, Dropbox integrations](https://github.com/jitsi/jitsi-meet/blob/master/doc/integrations.md)
38
-* [Video: Installing Jitsi Meet on your own Linux Server](https://jitsi.org/news/new-tutorial-installing-jitsi-meet-on-your-own-linux-server/)
39
-* [Video: How to Load Balance Jitsi Meet](https://jitsi.org/blog/tutorial-video-how-to-load-balance-jitsi-meet/)
40
-* [Video: Scaling Jitsi Meet in the Cloud](https://jitsi.org/blog/new-tutorial-video-scaling-jitsi-meet-in-the-cloud/)
41
-* [Configuring a video SIP gateway](https://github.com/jitsi/jitsi-meet/blob/master/doc/sipgw-config.md)
42
-* [Enabling speaker stats](https://github.com/jitsi/jitsi-meet/blob/master/doc/speakerstats-prosody.md)
43
-* [Enabling TURN](https://github.com/jitsi/jitsi-meet/blob/master/doc/turn.md)
44
-* [Networking FAQ](https://github.com/jitsi/jitsi-meet/blob/master/doc/faq.md)
45
-* [Cloud APIs](https://github.com/jitsi/jitsi-meet/blob/master/doc/cloud-api.md)
46
-* [Manual Installation](https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md)
47
-* [Scalable Installation](https://github.com/jitsi/jitsi-meet/blob/master/doc/scalable-installation.md)
3
+The Jitsi documentation has been moved to [The Handbook](https://jitsi.github.io/handbook/).

+ 1
- 629
doc/api.md Visa fil

@@ -1,631 +1,3 @@
1 1
 # Jitsi Meet API
2 2
 
3
-You can use the Jitsi Meet API to embed Jitsi Meet in to your application. You are also welcome to use it for embedding the globally distributed and highly available deployment on meet.jit.si itself. The only thing we ask for in that case is that you please DO NOT remove the jitsi.org logo from the top left corner.
4
-
5
-## Installation
6
-
7
-To embed Jitsi Meet in your application you need to add the Jitsi Meet API library:
8
-
9
-```javascript
10
-<script src='https://meet.jit.si/external_api.js'></script>
11
-```
12
-## API
13
-
14
-### `api = new JitsiMeetExternalAPI(domain, options)`
15
-
16
-The next step for embedding Jitsi Meet is to create the Jitsi Meet API object.
17
-Its constructor gets a number of options:
18
-
19
-* **domain**: domain used to build the conference URL, 'meet.jit.si' for
20
-  example.
21
-* **options**: object with properties - the optional arguments:
22
-    * **roomName**: (optional) name of the room to join.
23
-    * **width**: (optional) width for the iframe which will be created. If a number is specified it's treated as pixel units. If a string is specified the format is number followed by 'px', 'em', 'pt' or '%'.
24
-    * **height**: (optional) height for the iframe which will be created. If a number is specified it's treated as pixel units. If a string is specified the format is number followed by 'px', 'em', 'pt' or '%'.
25
-    * **parentNode**: (optional) HTML DOM Element where the iframe will be added as a child.
26
-    * **configOverwrite**: (optional) JS object with overrides for options defined in [config.js].
27
-    * **interfaceConfigOverwrite**: (optional) JS object with overrides for options defined in [interface_config.js].
28
-    * **noSSL**: (optional, defaults to true) Boolean indicating if the server should be contacted using HTTP or HTTPS.
29
-    * **jwt**: (optional) [JWT](https://jwt.io/) token.
30
-    * **onload**: (optional) handler for the iframe onload event.
31
-    * **invitees**: (optional) Array of objects containing information about new participants that will be invited in the call.
32
-    * **devices**: (optional) A map containing information about the initial devices that will be used in the call.
33
-    * **userInfo**: (optional) JS object containing information about the participant opening the meeting, such as `email`.
34
-
35
-Example:
36
-
37
-```javascript
38
-const domain = 'meet.jit.si';
39
-const options = {
40
-    roomName: 'JitsiMeetAPIExample',
41
-    width: 700,
42
-    height: 700,
43
-    parentNode: document.querySelector('#meet')
44
-};
45
-const api = new JitsiMeetExternalAPI(domain, options);
46
-```
47
-
48
-You can set the initial media devices for the call:
49
-
50
-```javascript
51
-const domain = 'meet.jit.si';
52
-const options = {
53
-    ...
54
-    devices: {
55
-        audioInput: '<deviceLabel>',
56
-        audioOutput: '<deviceLabel>',
57
-        videoInput: '<deviceLabel>'
58
-    },
59
-    ...
60
-};
61
-const api = new JitsiMeetExternalAPI(domain, options);
62
-```
63
-
64
-You can overwrite options set in [config.js] and [interface_config.js].
65
-For example, to enable the filmstrip-only interface mode, you can use:
66
-
67
-```javascript
68
-const options = {
69
-    ...
70
-    interfaceConfigOverwrite: { filmStripOnly: true },
71
-    ...
72
-};
73
-const api = new JitsiMeetExternalAPI(domain, options);
74
-```
75
-
76
-You can also pass a jwt token to Jitsi Meet:
77
-
78
- ```javascript
79
-const options = {
80
-    ...
81
-    jwt: '<jwt_token>',
82
-    noSsl: false,
83
-    ...
84
-};
85
-const api = new JitsiMeetExternalAPI(domain, options);
86
- ```
87
-
88
-You can set the userInfo(email, display name) for the call:
89
-
90
-```javascript
91
-var domain = "meet.jit.si";
92
-var options = {
93
-    ...
94
-    userInfo: {
95
-        email: 'email@jitsiexamplemail.com',
96
-        displayName: 'John Doe'
97
-    }
98
-}
99
-var api = new JitsiMeetExternalAPI(domain, options);
100
-```
101
-
102
-### Controlling the embedded Jitsi Meet Conference
103
-
104
-Device management `JitsiMeetExternalAPI` methods:
105
-* **getAvailableDevices** - Retrieve a list of available devices.
106
-
107
-```javascript
108
-api.getAvailableDevices().then(devices => {
109
-    // devices = {
110
-    //     audioInput: [{
111
-    //         deviceId: 'ID'
112
-    //         groupId: 'grpID'
113
-    //         kind: 'audioinput'
114
-    //         label: 'label'
115
-    //     },....],
116
-    //     audioOutput: [{
117
-    //         deviceId: 'ID'
118
-    //         groupId: 'grpID'
119
-    //         kind: 'audioOutput'
120
-    //         label: 'label'
121
-    //     },....],
122
-    //     videoInput: [{
123
-    //         deviceId: 'ID'
124
-    //         groupId: 'grpID'
125
-    //         kind: 'videoInput'
126
-    //         label: 'label'
127
-    //     },....]
128
-    // }
129
-    ...
130
-});
131
-```
132
-* **getCurrentDevices** - Retrieve a list with the devices that are currently selected.
133
-
134
-```javascript
135
-api.getCurrentDevices().then(devices => {
136
-    // devices = {
137
-    //     audioInput: {
138
-    //         deviceId: 'ID'
139
-    //         groupId: 'grpID'
140
-    //         kind: 'videoInput'
141
-    //         label: 'label'
142
-    //     },
143
-    //     audioOutput: {
144
-    //         deviceId: 'ID'
145
-    //         groupId: 'grpID'
146
-    //         kind: 'videoInput'
147
-    //         label: 'label'
148
-    //     },
149
-    //     videoInput: {
150
-    //         deviceId: 'ID'
151
-    //         groupId: 'grpID'
152
-    //         kind: 'videoInput'
153
-    //         label: 'label'
154
-    //     }
155
-    // }
156
-    ...
157
-});
158
-```
159
-* **isDeviceChangeAvailable** - Resolves with true if the device change is available and with false if not.
160
-
161
-```javascript
162
-// The accepted deviceType values are - 'output', 'input' or undefined.
163
-api.isDeviceChangeAvailable(deviceType).then(isDeviceChangeAvailable => {
164
-    ...
165
-});
166
-```
167
-* **isDeviceListAvailable** - Resolves with true if the device list is available and with false if not.
168
-
169
-```javascript
170
-api.isDeviceListAvailable().then(isDeviceListAvailable => {
171
-    ...
172
-});
173
-```
174
-* **isMultipleAudioInputSupported** - Resolves with true if multiple audio input is supported and with false if not.
175
-
176
-```javascript
177
-api.isMultipleAudioInputSupported().then(isMultipleAudioInputSupported => {
178
-    ...
179
-});
180
-```
181
-* **setAudioInputDevice** - Sets the audio input device to the one with the label or id that is passed.
182
-
183
-```javascript
184
-api.setAudioInputDevice(deviceLabel, deviceId);
185
-```
186
-* **setAudioOutputDevice** - Sets the audio output device to the one with the label or id that is passed.
187
-
188
-```javascript
189
-api.setAudioOutputDevice(deviceLabel, deviceId);
190
-```
191
-* **setVideoInputDevice** - Sets the video input device to the one with the label or id that is passed.
192
-
193
-```javascript
194
-api.setVideoInputDevice(deviceLabel, deviceId);
195
-```
196
-
197
-You can control the embedded Jitsi Meet conference using the `JitsiMeetExternalAPI` object by using `executeCommand`:
198
-
199
-```javascript
200
-api.executeCommand(command, ...arguments);
201
-```
202
-
203
-The `command` parameter is String object with the name of the command. The following commands are currently supported:
204
-
205
-* **displayName** - Sets the display name of the local participant. This command requires one argument - the new display name to be set.
206
-```javascript
207
-api.executeCommand('displayName', 'New Nickname');
208
-```
209
-
210
-* **password** - Sets the password for the room. This command requires one argument - the password name to be set.
211
-```javascript
212
-api.executeCommand('password', 'The Password');
213
-```
214
-
215
-* **sendTones** - Play touch tones.
216
-```javascript
217
-api.executeCommand('sendTones', {
218
-    tones: string, // The dial pad touch tones to play. For example, '12345#'.
219
-    duration: number, // Optional. The number of milliseconds each tone should play. The default is 200.
220
-    pause: number // Optional. The number of milliseconds between each tone. The default is 200.
221
-});
222
-```
223
-
224
-* **subject** - Sets the subject of the conference. This command requires one argument - the new subject to be set.
225
-```javascript
226
-api.executeCommand('subject', 'New Conference Subject');
227
-```
228
-
229
-* **toggleAudio** - Mutes / unmutes the audio for the local participant. No arguments are required.
230
-```javascript
231
-api.executeCommand('toggleAudio');
232
-```
233
-
234
-* **toggleVideo** - Mutes / unmutes the video for the local participant. No arguments are required.
235
-```javascript
236
-api.executeCommand('toggleVideo');
237
-```
238
-
239
-* **toggleFilmStrip** - Hides / shows the filmstrip. No arguments are required.
240
-```javascript
241
-api.executeCommand('toggleFilmStrip');
242
-```
243
-
244
-* **toggleChat** - Hides / shows the chat. No arguments are required.
245
-```javascript
246
-api.executeCommand('toggleChat');
247
-```
248
-
249
-* **toggleShareScreen** - Starts / stops screen sharing. No arguments are required.
250
-```javascript
251
-api.executeCommand('toggleShareScreen');
252
-```
253
-
254
-* **toggleTileView** - Enter / exit tile view layout mode. No arguments are required.
255
-```javascript
256
-api.executeCommand('toggleTileView');
257
-```
258
-
259
-* **hangup** - Hangups the call. No arguments are required.
260
-```javascript
261
-api.executeCommand('hangup');
262
-```
263
-
264
-* **email** - Changes the local email address. This command requires one argument - the new email address to be set.
265
-```javascript
266
-api.executeCommand('email', 'example@example.com');
267
-```
268
-
269
-* **avatarUrl** - Changes the local avatar URL. This command requires one argument - the new avatar URL to be set.
270
-```javascript
271
-api.executeCommand('avatarUrl', 'https://avatars0.githubusercontent.com/u/3671647');
272
-```
273
-
274
-* **sendEndpointTextMessage** - Sends a text message to another participant through the datachannels.
275
-```javascript
276
-api.executeCommand('receiverParticipantId', 'text');
277
-```
278
-* **setVideoQuality** - Sets the send and receive video resolution. This command requires one argument - the resolution height to be set.
279
-```javascript
280
-api.executeCommand('setVideoQuality', 720);
281
-```
282
-
283
-You can also execute multiple commands using the `executeCommands` method:
284
-```javascript
285
-api.executeCommands(commands);
286
-```
287
-The `commands` parameter is an object with the names of the commands as keys and the arguments for the commands as values:
288
-```javascript
289
-api.executeCommands({
290
-    displayName: [ 'nickname' ],
291
-    toggleAudio: []
292
-});
293
-```
294
-
295
-You can add event listeners to the embedded Jitsi Meet using the `addEventListener` method.
296
-**NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods (`addListener` or `on`).**
297
-```javascript
298
-api.addEventListener(event, listener);
299
-```
300
-
301
-The `event` parameter is a String object with the name of the event.
302
-The `listener` parameter is a Function object with one argument that will be notified when the event occurs with data related to the event.
303
-
304
-The following events are currently supported:
305
-* **cameraError** - event notifications about Jitsi-Meet having failed to access the camera. The listener will receive an object with the following structure:
306
-```javascript
307
-{
308
-    type: string, // A constant representing the overall type of the error.
309
-    message: string // Additional information about the error.
310
-}
311
-```
312
-
313
-* **avatarChanged** - event notifications about avatar
314
-changes. The listener will receive an object with the following structure:
315
-```javascript
316
-{
317
-    id: string, // the id of the participant that changed his avatar.
318
-    avatarURL: string // the new avatar URL.
319
-}
320
-```
321
-
322
-* **audioAvailabilityChanged** - event notifications about audio availability status changes. The listener will receive an object with the following structure:
323
-```javascript
324
-{
325
-    available: boolean // new available status - boolean
326
-}
327
-```
328
-
329
-* **audioMuteStatusChanged** - event notifications about audio mute status changes. The listener will receive an object with the following structure:
330
-```javascript
331
-{
332
-    muted: boolean // new muted status - boolean
333
-}
334
-```
335
-
336
-* **endpointTextMessageReceived** - event notifications about a text message received through datachannels.
337
-The listener will receive an object with the following structure:
338
-```javascript
339
-{
340
-    senderInfo: {
341
-        jid: string, // the jid of the sender
342
-        id: string // the participant id of the sender
343
-    },
344
-    eventData: {
345
-        name: string // the name of the datachannel event: `endpoint-text-message`
346
-        text: string // the received text from the sender
347
-    }
348
-}
349
-```
350
-
351
-* **micError** - event notifications about Jitsi-Meet having failed to access the mic. The listener will receive an object with the following structure:
352
-```javascript
353
-{
354
-    type: string, // A constant representing the overall type of the error.
355
-    message: string // Additional information about the error.
356
-}
357
-```
358
-
359
-* **screenSharingStatusChanged** - receives event notifications about turning on/off the local user screen sharing. The listener will receive object with the following structure:
360
-```javascript
361
-{
362
-    on: boolean, //whether screen sharing is on
363
-    details: {
364
-
365
-        // From where the screen sharing is capturing, if known. Values which are
366
-        // passed include 'window', 'screen', 'proxy', 'device'. The value undefined
367
-        // will be passed if the source type is unknown or screen share is off.
368
-        sourceType: string|undefined
369
-    }
370
-}
371
-```
372
-
373
-* **dominantSpeakerChanged** - receives event notifications about change in the dominant speaker. The listener will receive object with the following structure:
374
-```javascript
375
-{
376
-    id: string //participantId of the new dominant speaker
377
-}
378
-```
379
-
380
-* **tileViewChanged** - event notifications about tile view layout mode being entered or exited. The listener will receive object with the following structure:
381
-```javascript
382
-{
383
-    enabled: boolean, // whether tile view is not displayed or not
384
-}
385
-```
386
-
387
-* **incomingMessage** - Event notifications about incoming
388
-messages. The listener will receive an object with the following structure:
389
-```javascript
390
-{
391
-    from: string, // The id of the user that sent the message
392
-    nick: string, // the nickname of the user that sent the message
393
-    message: string // the text of the message
394
-}
395
-```
396
-
397
-* **outgoingMessage** - Event notifications about outgoing
398
-messages. The listener will receive an object with the following structure:
399
-```javascript
400
-{
401
-    message: string // the text of the message
402
-}
403
-```
404
-
405
-* **displayNameChange** - event notifications about display name
406
-changes. The listener will receive an object with the following structure:
407
-```javascript
408
-{
409
-    id: string, // the id of the participant that changed his display name
410
-    displayname: string // the new display name
411
-}
412
-```
413
-
414
-* **deviceListChanged** - event notifications about device list changes. The listener will receive an object with the following structure:
415
-```javascript
416
-{
417
-    devices: Object // the new list of available devices.
418
-}
419
-```
420
-NOTE: The devices object has the same format as the getAvailableDevices result format.
421
-
422
-* **emailChange** - event notifications about email
423
-changes. The listener will receive an object with the following structure:
424
-```javascript
425
-{
426
-    id: string, // the id of the participant that changed his email
427
-    email: string // the new email
428
-}
429
-```
430
-* **feedbackSubmitted** - event notifications about conference feedback submission
431
-```javascript
432
-{
433
-    error: string // The error which occurred during submission, if any.
434
-}
435
-```
436
-
437
-* **filmstripDisplayChanged** - event notifications about the visibility of the filmstrip being updated.
438
-```javascript
439
-{
440
-    visible: boolean // Whether or not the filmstrip is displayed or hidden.
441
-}
442
-```
443
-
444
-* **participantJoined** - event notifications about new participants who join the room. The listener will receive an object with the following structure:
445
-```javascript
446
-{
447
-    id: string, // the id of the participant
448
-    displayName: string // the display name of the participant
449
-}
450
-```
451
-
452
-* **participantKickedOut** - event notifications about a participants being removed from the room. The listener will receive an object with the following structure:
453
-```javascript
454
-{
455
-    kicked: {
456
-        id: string, // the id of the participant removed from the room
457
-        local: boolean // whether or not the participant is the local particiapnt
458
-    },
459
-    kicker: {
460
-        id: string // the id of the participant who kicked out the other participant
461
-    }
462
-}
463
-```
464
-
465
-* **participantLeft** - event notifications about participants that leave the room. The listener will receive an object with the following structure:
466
-```javascript
467
-{
468
-    id: string // the id of the participant
469
-}
470
-```
471
-
472
-* **participantRoleChanged** - event notification fired when the role of the local user has changed (none, moderator, participant). The listener will receive an object with the following structure:
473
-```javascript
474
-{
475
-    id: string // the id of the participant
476
-    role: string // the new role of the participant
477
-}
478
-```
479
-
480
-* **passwordRequired** - event notifications fired when failing to join a room because it has a password.
481
-
482
-* **videoConferenceJoined** - event notifications fired when the local user has joined the video conference. The listener will receive an object with the following structure:
483
-```javascript
484
-{
485
-    roomName: string, // the room name of the conference
486
-    id: string, // the id of the local participant
487
-    displayName: string, // the display name of the local participant
488
-    avatarURL: string // the avatar URL of the local participant
489
-}
490
-```
491
-
492
-* **videoConferenceLeft** - event notifications fired when the local user has left the video conference. The listener will receive an object with the following structure:
493
-```javascript
494
-{
495
-    roomName: string // the room name of the conference
496
-}
497
-```
498
-
499
-* **videoAvailabilityChanged** - event notifications about video availability status changes. The listener will receive an object with the following structure:
500
-```javascript
501
-{
502
-    available: boolean // new available status - boolean
503
-}
504
-```
505
-
506
-* **videoMuteStatusChanged** - event notifications about video mute status changes. The listener will receive an object with the following structure:
507
-```javascript
508
-{
509
-    muted: boolean // new muted status - boolean
510
-}
511
-```
512
-
513
-* **readyToClose** - event notification fired when Jitsi Meet is ready to be closed (hangup operations are completed).
514
-
515
-* **subjectChange** - event notifications about subject of conference changes.
516
-The listener will receive an object with the following structure:
517
-```javascript
518
-{
519
-    subject: string // the new subject
520
-}
521
-```
522
-
523
-* **suspendDetected** - event notifications about detecting suspend event in host computer.
524
-
525
-You can also add multiple event listeners by using `addEventListeners`.
526
-This method requires one argument of type Object. The object argument must
527
-have the names of the events as keys and the listeners of the events as values.
528
-**NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods.**
529
-
530
-```javascript
531
-function incomingMessageListener(object)
532
-{
533
-// ...
534
-}
535
-
536
-function outgoingMessageListener(object)
537
-{
538
-// ...
539
-}
540
-
541
-api.addEventListeners({
542
-    incomingMessage: incomingMessageListener,
543
-    outgoingMessage: outgoingMessageListener
544
-});
545
-```
546
-
547
-If you want to remove a listener you can use `removeEventListener` method with argument the name of the event.
548
-**NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods( `removeListener`).**
549
-```javascript
550
-api.removeEventListener('incomingMessage');
551
-```
552
-
553
-If you want to remove more than one event you can use `removeEventListeners` method with an Array with the names of the events as an argument.
554
-**NOTE: This method still exists but it is deprecated. JitsiMeetExternalAPI class extends [EventEmitter]. Use [EventEmitter] methods.**
555
-```javascript
556
-api.removeEventListeners([ 'incomingMessage', 'outgoingMessageListener' ]);
557
-```
558
-
559
-You can get the number of participants in the conference with the following API function:
560
-```javascript
561
-const numberOfParticipants = api.getNumberOfParticipants();
562
-```
563
-
564
-You can get the avatar URL of a participant in the conference with the following API function:
565
-```javascript
566
-const avatarURL = api.getAvatarURL(participantId);
567
-```
568
-
569
-You can get the display name of a participant in the conference with the following API function:
570
-```javascript
571
-const displayName = api.getDisplayName(participantId);
572
-```
573
-
574
-You can get the email of a participant in the conference with the following API function:
575
-```javascript
576
-const email = api.getEmail(participantId);
577
-```
578
-
579
-You can get the iframe HTML element where Jitsi Meet is loaded with the following API function:
580
-```javascript
581
-const iframe = api.getIFrame();
582
-```
583
-
584
-You can check whether the audio is muted with the following API function:
585
-```javascript
586
-api.isAudioMuted().then(muted => {
587
-    ...
588
-});
589
-```
590
-
591
-You can check whether the video is muted with the following API function:
592
-```javascript
593
-api.isVideoMuted().then(muted => {
594
-    ...
595
-});
596
-```
597
-
598
-You can check whether the audio is available with the following API function:
599
-```javascript
600
-api.isAudioAvailable().then(available => {
601
-    ...
602
-});
603
-```
604
-
605
-You can check whether the video is available with the following API function:
606
-```javascript
607
-api.isVideoAvailable().then(available => {
608
-    ...
609
-});
610
-```
611
-
612
-You can invite new participants to the call with the following API function:
613
-```javascript
614
-api.invite([ {...}, {...}, {...} ]).then(() => {
615
-    // success
616
-}).catch(() => {
617
-    // failure
618
-});
619
-```
620
-**NOTE: The format of the invitees in the array depends on the invite service used for the deployment.**
621
-
622
-You can remove the embedded Jitsi Meet Conference with the following API function:
623
-```javascript
624
-api.dispose();
625
-```
626
-
627
-NOTE: It's a good practice to remove the conference before the page is unloaded.
628
-
629
-[config.js]: https://github.com/jitsi/jitsi-meet/blob/master/config.js
630
-[interface_config.js]: https://github.com/jitsi/jitsi-meet/blob/master/interface_config.js
631
-[EventEmitter]: https://nodejs.org/api/events.html
3
+This document has been moved [here](https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-iframe).

+ 0
- 5
doc/cloud-api.md Visa fil

@@ -1,5 +0,0 @@
1
-# Jitsi Meet Cloud API
2
-
3
-The Jitsi Meet Cloud API is a specification for services which can support the integration of Jitsi Meet into other applications, for mapping conferences for dial-in support, and for supporting directory search and user invitations to conferences.
4
-
5
-The swagger for these services is provided in [cloud-api.swagger](cloud-api.swagger) in this same repository and directory.

+ 0
- 93
doc/coding-style.md Visa fil

@@ -1,93 +0,0 @@
1
-# Comments
2
-
3
-* Comments documenting the source code are required.
4
-
5
-  * Comments from which documentation is automatically generated are **not**
6
-    subject to case-by-case decisions. Such comments are used, for example, on
7
-    types and their members. Examples of tools which automatically generate
8
-    documentation from such comments include JSDoc, Javadoc, Doxygen.
9
-
10
-  * Comments which are not automatically processed are strongly encouraged. They
11
-    are subject to case-by-case decisions. Such comments are often observed in
12
-    function bodies.
13
-
14
-* Comments should be formatted as proper English sentences. Such formatting pays
15
-  attention to, for example, capitalization and punctuation.
16
-
17
-# Duplication
18
-
19
-* Don't copy-paste source code. Reuse it.
20
-
21
-# Formatting
22
-
23
-* Line length is limited to 80 characters.
24
-
25
-* Sort by alphabetical order in order to make the addition of new entities as
26
-  easy as looking a word up in a dictionary. Otherwise, one risks duplicate
27
-  entries (with conflicting values in the cases of key-value pairs). For
28
-  example:
29
-
30
-  * Within an `import` of multiple names from a module, sort the names in
31
-    alphabetical order. (Of course, the default name stays first as required by
32
-    the `import` syntax.)
33
-
34
-    ````javascript
35
-    import {
36
-        DOMINANT_SPEAKER_CHANGED,
37
-        JITSI_CLIENT_CONNECTED,
38
-        JITSI_CLIENT_CREATED,
39
-        JITSI_CLIENT_DISCONNECTED,
40
-        JITSI_CLIENT_ERROR,
41
-        JITSI_CONFERENCE_JOINED,
42
-        MODERATOR_CHANGED,
43
-        PEER_JOINED,
44
-        PEER_LEFT,
45
-        RTC_ERROR
46
-    } from './actionTypes';
47
-    ````
48
-
49
-  * Within a group of imports (e.g. groups of imports delimited by an empty line
50
-    may be: third-party modules, then project modules, and eventually the
51
-    private files of a module), sort the module names in alphabetical order.
52
-
53
-    ````javascript
54
-    import React, { Component } from 'react';
55
-    import { connect } from 'react-redux';
56
-    ````
57
-
58
-# Indentation
59
-
60
-* Align `switch` and `case`/`default`. Don't indent the `case`/`default` more
61
-  than its `switch`.
62
-
63
-  ````javascript
64
-  switch (i) {
65
-  case 0:
66
-      ...
67
-      break;
68
-  default:
69
-      ...
70
-  }
71
-  ````
72
-
73
-# Naming
74
-
75
-* An abstraction should have one name within the project and across multiple
76
-  projects. For example:
77
-
78
-  * The instance of lib-jitsi-meet's `JitsiConnection` type should be named
79
-    `connection` or `jitsiConnection` in jitsi-meet, not `client`.
80
-
81
-  * The class `ReducerRegistry` should be defined in ReducerRegistry.js and its
82
-    imports in other files should use the same name. Don't define the class
83
-    `Registry` in ReducerRegistry.js and then import it as `Reducers` in other
84
-    files.
85
-
86
-* The names of global constants (including ES6 module-global constants) should
87
-  be written in uppercase with underscores to separate words. For example,
88
-  `BACKGROUND_COLOR`.
89
-
90
-* The underscore character at the beginning of a name signals that the
91
-  respective variable, function, property is non-public i.e. private, protected,
92
-  or internal. In contrast, the lack of an underscore at the beginning of a name
93
-  signals public API.

+ 0
- 82
doc/development.md Visa fil

@@ -1,82 +0,0 @@
1
-# Developing Jitsi Meet
2
-
3
-## Building the sources
4
-
5
-Node.js >= 12 and npm >= 6 are required.
6
-
7
-On Debian/Ubuntu systems, the required packages can be installed with:
8
-```
9
-sudo apt-get install npm nodejs
10
-cd jitsi-meet
11
-npm install
12
-```
13
-
14
-To build the Jitsi Meet application, just type
15
-```
16
-make
17
-```
18
-
19
-### Working with the library sources (lib-jitsi-meet)
20
-
21
-By default the library is build from its git repository sources. The default dependency path in package.json is :
22
-```json
23
-"lib-jitsi-meet": "jitsi/lib-jitsi-meet",
24
-```
25
-
26
-To work with local copy you must change the path to:
27
-```json
28
-"lib-jitsi-meet": "file:///Users/name/local-lib-jitsi-meet-copy",
29
-```
30
-
31
-To make the project you must force it to take the sources as 'npm update':
32
-```
33
-npm install lib-jitsi-meet --force && make
34
-```
35
-
36
-Or if you are making only changes to the library:
37
-```
38
-npm install lib-jitsi-meet --force && make deploy-lib-jitsi-meet
39
-```
40
-
41
-Alternative way is to use [npm link](https://docs.npmjs.com/cli/link).
42
-It allows to link `lib-jitsi-meet` dependency to local source in few steps:
43
-
44
-```bash
45
-cd lib-jitsi-meet
46
-
47
-#### create global symlink for lib-jitsi-meet package
48
-npm link
49
-
50
-cd ../jitsi-meet
51
-
52
-#### create symlink from the local node_modules folder to the global lib-jitsi-meet symlink
53
-npm link lib-jitsi-meet
54
-```
55
-
56
- After changes in local `lib-jitsi-meet` repository, you can rebuild it with `npm run install` and your `jitsi-meet` repository will use that modified library.
57
-Note: when using node version 4.x, the make file of jitsi-meet do npm update which will delete the link. It is no longer the case with version 6.x.
58
-
59
-If you do not want to use local repository anymore you should run
60
-```bash
61
-cd jitsi-meet
62
-npm unlink lib-jitsi-meet
63
-npm install
64
-```
65
-### Running with webpack-dev-server for development
66
-
67
-Use it at the CLI, type
68
-```
69
-make dev
70
-```
71
-
72
-By default the backend deployment used is `alpha.jitsi.net`. You can point the Jitsi-Meet app at a different backend by using a proxy server. To do this, set the WEBPACK_DEV_SERVER_PROXY_TARGET variable:
73
-```
74
-export WEBPACK_DEV_SERVER_PROXY_TARGET=https://your-example-server.com
75
-make dev
76
-```
77
-
78
-The app should be running at https://localhost:8080/
79
-
80
-#### Chrome Privacy Error
81
-
82
-Newer versions of Chrome may block localhost under https and show `NET::ERR_CERT_INVALID` on the page. To solve this open [chrome://flags/#allow-insecure-localhost](chrome://flags/#allow-insecure-localhost) and select Enable, then press Relaunch or quit and restart Chrome.

+ 0
- 7
doc/faq.md Visa fil

@@ -1,7 +0,0 @@
1
-**1. How to tell if my server instance is behind NAT?**
2
-
3
-A. In general, if the tool ifconfig (or ipconfig) shows the assigned IP address to be some local address (10.x.x.x or 192.x.x.x) but you know that its public IP address is different from that, the server is most probably behind NAT
4
-
5
-**2. Clients could communicate well in room created at meet.jit.si . The same clients still could connect to my self-hosted instance but can neither hear nor see one another. What's wrong?**
6
-
7
-A. Most probably, the server is behind NAT. See this [resolved question](https://community.jitsi.org/t/cannot-see-video-or-hear-audio-on-self-hosted-instance/). You need to follow the steps detailed [here](https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md#Advanced-configuration)

+ 0
- 38
doc/integrations.md Visa fil

@@ -1,38 +0,0 @@
1
-Document describing enabling various jitsi-meet integrations.
2
-
3
-## Creating the Google API client for Google Calendar and Youtube integration
4
-1. Log into a Google admin account.
5
-1. Go to Google cloud platform dashboard. https://console.cloud.google.com/apis/dashboard
6
-1. In the Select a Project dropdown, click New Project.
7
-1. Give the project a name.
8
-1. Proceed to the Credentials settings of the new project.
9
-1. In the Credentials tab of the Credentials settings, click Create Credentials and select the type OAuth client ID.
10
-1. Proceed with creating a Web application and add the domains (origins) on which the application will be hosted. Local development environments (http://localhost:8000 for example) can be added here.
11
-1. While still in the Google cloud platform dashboard, click the Library settings for the calendar project.
12
-1. Search for the Google Calendar API (used for calendar accessing), click its result, and enable it.
13
-1. Do the same for YouTube Data API v3
14
-
15
-## Creating the Microsoft app for Microsoft Outlook integration
16
-1. Go to https://apps.dev.microsoft.com/
17
-1. Proceed through the "Add an app" flow. Once created, a page with several Graph Permissions fields should display.
18
-1. Under "Platforms" add "Web"
19
-1. Add a redirect URL for the Microsoft auth flow to visit once a user has confirmed authentication. Target domain if available is just 'yourdomain.com' (the deployment address) and the redirect URL is `https://yourdomain.com/static/msredirect.html`.
20
-1. Add Microsoft Graph delegated permissions, if this option is available: Calendars.Read, Calendars.ReadWrite, Calendars.Read.Shared, Calendars.ReadWrite.Shared.
21
-1. Check `Allow Implicit Flow` (and `Restrict token issuing to this app` if available).
22
-1. Save the changes.
23
-
24
-## Creating the Dropbox app for Dropbox recording integration
25
-1. You need a Dropbox account (If you don't already have one, you can sign up for a free account [here](https://www.dropbox.com/register).)
26
-1. Create new App as described in [Getting Started Guide](https://www.dropbox.com/developers/reference/getting-started?_tk=guides_lp&_ad=guides2&_camp=get_started#app%20console) in App Console section.
27
-1. Choose
28
-    1. 'Dropbox API - For apps that need to access files in Dropbox.' 
29
-    1. 'App folder– Access to a single folder created specifically for your app.'
30
-    1. Fill in the name of your app
31
-1. You need only, the newly created App key, goes in config.js in 
32
-    ```
33
-        dropbox: {
34
-            appKey: '__dropbox_app_key__'
35
-        }
36
-    ```
37
-1. Add your Redirect URIs in the form `https://yourdeployment.com//static/oauth.html`
38
-1. Fill in Branding

+ 0
- 270
doc/manual-install.md Visa fil

@@ -1,270 +0,0 @@
1
-# Server Installation for Jitsi Meet
2
-
3
-:warning: **WARNING:** Manual installation is not recommended. We recommend following the [quick-install](https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md) document. The current document describes the steps that are needed to install a working deployment, but steps are easy to mess up, and the debian packages are more up-to-date, where this document is sometimes not updated to reflect latest changes.
4
-
5
-This describes configuring a server `jitsi.example.com` running Debian or a Debian Derivative. You will need to
6
-change references to that to match your host, and generate some passwords for
7
-`YOURSECRET1`, `YOURSECRET2` and `YOURSECRET3`.
8
-
9
-There are also some complete [example config files](https://github.com/jitsi/jitsi-meet/tree/master/doc/example-config-files/) available, mentioned in each section.
10
-
11
-There are additional configurations to be done for a [scalable installation](https://github.com/jitsi/jitsi-meet/tree/master/doc/scalable-installation.md)
12
-
13
-## Network description
14
-
15
-This is how the network looks:
16
-```
17
-                   +                           +
18
-                   |                           |
19
-                   |                           |
20
-                   v                           |
21
-                  443                          |
22
-               +-------+                       |
23
-               |       |                       |
24
-               | Nginx |                       |
25
-               |       |                       |
26
-               +--+-+--+                       |
27
-                  | |                          |
28
-+------------+    | |    +--------------+      |
29
-|            |    | |    |              |      |
30
-| jitsi-meet +<---+ +--->+ prosody/xmpp |      |
31
-|            |files 5280 |              |      |
32
-+------------+           +--------------+      v
33
-                     5222,5347^    ^5347   4443,10000
34
-                +--------+    |    |    +-------------+
35
-                |        |    |    |    |             |
36
-                | jicofo +----^    ^----+ videobridge |
37
-                |        |              |             |
38
-                +--------+              +-------------+
39
-```
40
-
41
-## Install prosody
42
-```sh
43
-apt-get install prosody
44
-```
45
-
46
-## Configure prosody
47
-Add config file in `/etc/prosody/conf.avail/jitsi.example.com.cfg.lua` :
48
-
49
-- add your domain virtual host section:
50
-
51
-```
52
-VirtualHost "jitsi.example.com"
53
-    authentication = "anonymous"
54
-    ssl = {
55
-        key = "/var/lib/prosody/jitsi.example.com.key";
56
-        certificate = "/var/lib/prosody/jitsi.example.com.crt";
57
-    }
58
-    modules_enabled = {
59
-        "bosh";
60
-        "pubsub";
61
-    }
62
-    c2s_require_encryption = false
63
-```
64
-- add domain with authentication for conference focus user:
65
-```
66
-VirtualHost "auth.jitsi.example.com"
67
-    ssl = {
68
-        key = "/var/lib/prosody/auth.jitsi.example.com.key";
69
-        certificate = "/var/lib/prosody/auth.jitsi.example.com.crt";
70
-    }
71
-    authentication = "internal_plain"
72
-```
73
-- add focus user to server admins:
74
-```
75
-admins = { "focus@auth.jitsi.example.com" }
76
-```
77
-- and finally configure components:
78
-```
79
-Component "conference.jitsi.example.com" "muc"
80
-Component "jitsi-videobridge.jitsi.example.com"
81
-    component_secret = "YOURSECRET1"
82
-Component "focus.jitsi.example.com"
83
-    component_secret = "YOURSECRET2"
84
-```
85
-
86
-Add link for the added configuration
87
-```sh
88
-ln -s /etc/prosody/conf.avail/jitsi.example.com.cfg.lua /etc/prosody/conf.d/jitsi.example.com.cfg.lua
89
-```
90
-
91
-Generate certs for the domain:
92
-```sh
93
-prosodyctl cert generate jitsi.example.com
94
-prosodyctl cert generate auth.jitsi.example.com
95
-```
96
-
97
-Add auth.jitsi.example.com to the trusted certificates on the local machine:
98
-```sh
99
-ln -sf /var/lib/prosody/auth.jitsi.example.com.crt /usr/local/share/ca-certificates/auth.jitsi.example.com.crt
100
-update-ca-certificates -f
101
-```
102
-Note that the `-f` flag is necessary if there are symlinks left from a previous installation.
103
-
104
-Create conference focus user:
105
-```sh
106
-prosodyctl register focus auth.jitsi.example.com YOURSECRET3
107
-```
108
-
109
-Restart prosody XMPP server with the new config
110
-```sh
111
-prosodyctl restart
112
-```
113
-
114
-## Install Nginx
115
-```sh
116
-apt-get install nginx
117
-```
118
-
119
-Add a new file `jitsi.example.com` in `/etc/nginx/sites-available` (see also the example config file):
120
-```
121
-server_names_hash_bucket_size 64;
122
-
123
-server {
124
-    listen 0.0.0.0:443 ssl http2;
125
-    listen [::]:443 ssl http2;
126
-    # tls configuration that is not covered in this guide
127
-    # we recommend the use of https://certbot.eff.org/
128
-    server_name jitsi.example.com;
129
-    # set the root
130
-    root /srv/jitsi-meet;
131
-    index index.html;
132
-    location ~ ^/([a-zA-Z0-9=\?]+)$ {
133
-        rewrite ^/(.*)$ / break;
134
-    }
135
-    location / {
136
-        ssi on;
137
-    }
138
-    # BOSH, Bidirectional-streams Over Synchronous HTTP
139
-    # https://en.wikipedia.org/wiki/BOSH_(protocol)
140
-    location /http-bind {
141
-        proxy_pass      http://localhost:5280/http-bind;
142
-        proxy_set_header X-Forwarded-For $remote_addr;
143
-        proxy_set_header Host $http_host;
144
-    }
145
-    # external_api.js must be accessible from the root of the
146
-    # installation for the electron version of Jitsi Meet to work
147
-    # https://github.com/jitsi/jitsi-meet-electron
148
-    location /external_api.js {
149
-        alias /srv/jitsi-meet/libs/external_api.min.js;
150
-    }
151
-}
152
-```
153
-
154
-Add link for the added configuration
155
-```sh
156
-cd /etc/nginx/sites-enabled
157
-ln -s ../sites-available/jitsi.example.com jitsi.example.com
158
-```
159
-
160
-## Install Jitsi Videobridge
161
-Visit https://download.jitsi.org/jitsi-videobridge/linux to determine the current build number, download and unzip it:
162
-```sh
163
-wget https://download.jitsi.org/jitsi-videobridge/linux/jitsi-videobridge-linux-{arch-buildnum}.zip
164
-unzip jitsi-videobridge-linux-{arch-buildnum}.zip
165
-```
166
-
167
-Install JRE if missing:
168
-```
169
-apt-get install openjdk-8-jre
170
-```
171
-
172
-_NOTE: When installing on older Debian releases keep in mind that you need JRE >= 1.7._
173
-
174
-Create `~/.sip-communicator/sip-communicator.properties` in the home folder of the user that will be starting Jitsi Videobridge:
175
-```sh
176
-mkdir -p ~/.sip-communicator
177
-cat > ~/.sip-communicator/sip-communicator.properties << EOF
178
-org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false
179
-# The videobridge uses 443 by default with 4443 as a fallback, but since we're already
180
-# running nginx on 443 in this example doc, we specify 4443 manually to avoid a race condition
181
-org.jitsi.videobridge.TCP_HARVESTER_PORT=4443
182
-EOF
183
-```
184
-
185
-Start the videobridge with:
186
-```sh
187
-./jvb.sh --host=localhost --domain=jitsi.example.com --port=5347 --secret=YOURSECRET1 &
188
-```
189
-Or autostart it by adding the line in `/etc/rc.local`:
190
-```sh
191
-/bin/bash /root/jitsi-videobridge-linux-{arch-buildnum}/jvb.sh --host=localhost --domain=jitsi.example.com --port=5347 --secret=YOURSECRET1 </dev/null >> /var/log/jvb.log 2>&1
192
-```
193
-
194
-## Install Jitsi Conference Focus (jicofo)
195
-
196
-Install JDK and Maven if missing:
197
-```
198
-apt-get install openjdk-8-jdk maven
199
-```
200
-
201
-_NOTE: When installing on older Debian releases keep in mind that you need JDK >= 1.7._
202
-
203
-Clone source from Github repo:
204
-```sh
205
-git clone https://github.com/jitsi/jicofo.git
206
-```
207
-Build the package.
208
-```sh
209
-cd jicofo
210
-mvn package -DskipTests -Dassembly.skipAssembly=false
211
-```
212
-Run jicofo:
213
-```sh
214
-=======
215
-unzip target/jicofo-1.1-SNAPSHOT-archive.zip
216
-cd jicofo-1.1-SNAPSHOT-archive'
217
-./jicofo.sh --host=localhost --domain=jitsi.example.com --secret=YOURSECRET2 --user_domain=auth.jitsi.example.com --user_name=focus --user_password=YOURSECRET3
218
-```
219
-
220
-## Deploy Jitsi Meet
221
-Checkout and configure Jitsi Meet:
222
-```sh
223
-cd /srv
224
-git clone https://github.com/jitsi/jitsi-meet.git
225
-cd jitsi-meet
226
-npm install
227
-make
228
-```
229
-
230
-_NOTE: When installing on older distributions keep in mind that you need Node.js >= 12 and npm >= 6._
231
-
232
-Edit host names in `/srv/jitsi-meet/config.js` (see also the example config file):
233
-```
234
-var config = {
235
-    hosts: {
236
-        domain: 'jitsi.example.com',
237
-        muc: 'conference.jitsi.example.com',
238
-        bridge: 'jitsi-videobridge.jitsi.example.com',
239
-        focus: 'focus.jitsi.example.com'
240
-    },
241
-    useNicks: false,
242
-    bosh: '//jitsi.example.com/http-bind', // FIXME: use xep-0156 for that
243
-    //chromeExtensionId: 'diibjkoicjeejcmhdnailmkgecihlobk', // Id of desktop streamer Chrome extension
244
-    //minChromeExtVersion: '0.1' // Required version of Chrome extension
245
-};
246
-```
247
-
248
-Verify that nginx config is valid and reload nginx:
249
-```sh
250
-nginx -t && nginx -s reload
251
-```
252
-
253
-## Running behind NAT
254
-Jitsi Videobridge can run behind a NAT, provided that both required ports are routed (forwarded) to the machine that it runs on. By default these ports are `TCP/4443` and `UDP/10000`.
255
-
256
-If you do not route these two ports, Jitsi Meet will only work with video for two people, breaking upon 3 or more people trying to show video.
257
-
258
-`TCP/443` is required for the webserver which can be running on another machine than the Jitsi Videobrige is running on.
259
-
260
-The following extra lines need to be added to the file `~/.sip-communicator/sip-communicator.properties` (in the home directory of the user running the videobridge):
261
-```
262
-org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
263
-org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
264
-```
265
-
266
-# Hold your first conference
267
-You are now all set and ready to have your first meet by going to http://jitsi.example.com
268
-
269
-## Enabling recording
270
-[Jibri](https://github.com/jitsi/jibri) is a set of tools for recording and/or streaming a Jitsi Meet conference.

+ 0
- 28
doc/mobile-dropbox.md Visa fil

@@ -1,28 +0,0 @@
1
-# Setting up Dropbox integration
2
-1. Create a Dropbox app.
3
-2. Add the following to ```ios/app/src/Info.plist``` by replacing `<APP_KEY>`
4
-   with your own Dropbox app key (which can be found in the
5
-   [App Console](https://www.dropbox.com/developers/apps)):
6
-```
7
-<key>CFBundleURLTypes</key>
8
-<array>
9
-  <dict>
10
-    <key>CFBundleURLName</key>
11
-    <string></string>
12
-    <key>CFBundleURLSchemes</key>
13
-    <array>
14
-      <string>db-<APP_KEY></string>
15
-    </array>
16
-  </dict>
17
-</array>
18
-<key>LSApplicationQueriesSchemes</key>
19
-<array>
20
-  <string>dbapi-2</string>
21
-  <string>dbapi-8-emm</string>
22
-</array>
23
-```
24
-
25
-**NOTE:** Both Android and iOS builds of the apps will parse the Dropbox app key
26
-from ```ios/app/src/Info.plist```.
27
-
28
-**NOTE:** See [Dropbox developer guide](https://www.dropbox.com/developers/reference/developer-guide) for more information

+ 0
- 22
doc/mobile-google-auth.md Visa fil

@@ -1,22 +0,0 @@
1
-# Setting up Google Authentication
2
-
3
-- Create a Firebase project here: https://firebase.google.com/. You'll need a
4
-signed Android build for that, that can be a debug self-signed build too, just
5
-retrieve the signing hash. The key hash of an already signed ap can be obtained
6
-as follows (on macOS): ```keytool -list -printcert -jarfile the-app.apk```
7
-- Place the generated ```google-services.json``` file in ```android/app```
8
-for Android and the ```GoogleService-Info.plist``` into ```ios/app``` for
9
-iOS (you can stop at that step, no need for the driver and the code changes they
10
-suggest in the wizard).
11
-- You may want to exclude these files in YOUR GIT config (do not exclude them in
12
-the ```.gitignore``` of the application itself!).
13
-- Your web client ID is auto generated during the Firebase project
14
- creation. Find them in the Google Developer console
15
- (https://console.developers.google.com/)
16
-- Make sure your config reflects this ID by setting
17
-```googleApiApplicationClientID``` in config.js.
18
-- Add your iOS client ID (the REVERSED_CLIENT_ID in the plist file) as an
19
-application URL schema into ```ios/app/src/Info.plist```
20
-(replacing placeholder).
21
-- Enable YouTube API access on the developer console (see above) to enable live
22
-streaming.

+ 0
- 109
doc/mobile.md Visa fil

@@ -1,109 +0,0 @@
1
-# Jitsi Meet apps for Android and iOS
2
-
3
-Jitsi Meet can be built as a standalone app for Android or iOS. It uses the
4
-[React Native] framework.
5
-
6
-**If you want to rebuild the SDK yourself look in [Android README] or [iOS README].**
7
-
8
-First make sure the [React Native dependencies] are installed.
9
-
10
-**NOTE**: This document assumes the app is being built on a macOS system. GNU/Linux is also
11
-supported for building the Android app and Windows **is not supported at alll**.
12
-
13
-**NOTE**: Node 12.X and npm 6.X are recommended for building.
14
-
15
-
16
-## iOS
17
-
18
-1. Install some extra dependencies
19
-
20
-  - Install ios-deploy globally (in case you want to use the React Native CLI
21
-    to deploy the app to the device)
22
-
23
-    ```bash
24
-    npm install -g ios-deploy
25
-    ```
26
-
27
-  - Install main dependencies:
28
-
29
-    ```bash
30
-    npm install
31
-    ```
32
-
33
-  - Install the required pods (CocoaPods must be installled first, it can
34
-    be done with Homebrew: `brew install cocoapods`)
35
-
36
-    ```bash
37
-    cd ios
38
-    pod install
39
-    cd ..
40
-    ```
41
-
42
-2. Build the app
43
-
44
-    There are 2 ways to build the app: using the CLI or using Xcode.
45
-
46
-    Using the CLI:
47
-
48
-    ```bash
49
-    react-native run-ios --device
50
-    ```
51
-
52
-    When the app is launched from the CLI the output can be checked with the
53
-    following command:
54
-
55
-    ```bash
56
-    react-native log-ios
57
-    ```
58
-
59
-    Using Xcode
60
-
61
-    - Open **ios/jitsi-meet.xcworkspace** in Xcode. Make sure it's the workspace
62
-      file!
63
-
64
-    - Select your device from the top bar and hit the "play" button.
65
-
66
-    When the app is launched from Xcode the Debug console will show the output
67
-    logs the application creates.
68
-
69
-
70
-3. Other remarks
71
-
72
-    It's likely you'll need to change the bundle ID for deploying to a device.
73
-    This can be changed in the "General" tab.  Under "Identity" set
74
-    "Bundle Identifier" to a different value, and adjust the "Team" in the
75
-    "Signing" section to match your own.
76
-
77
-
78
-## Android
79
-
80
-The [React Native dependencies] page has very detailed information on how to
81
-setup [Android Studio] and the required components for getting the necessary
82
-build environment.  Make sure you follow it closely.
83
-
84
-1. Building the app
85
-
86
-    The app can be built using the CLI utility as follows:
87
-
88
-    ```bash
89
-    react-native run-android
90
-    ```
91
-
92
-    It will be launched on the connected Android device.
93
-
94
-## Debugging
95
-
96
-The official documentation on [debugging] is quite extensive and specifies the
97
-preferred method for debugging.
98
-
99
-**NOTE**: When using Chrome Developer Tools for debugging the JavaScript source
100
-code is being interpreted by Chrome's V8 engine, instead of JSCore which React
101
-Native uses. It's important to keep this in mind due to potential differences in
102
-supported JavaScript features.
103
-
104
-[Android README]: https://github.com/jitsi/jitsi-meet/blob/master/android/README.md
105
-[iOS README]: https://github.com/jitsi/jitsi-meet/blob/master/ios/README.md
106
-[Android Studio]: https://developer.android.com/studio/index.html
107
-[debugging]: https://facebook.github.io/react-native/docs/debugging.html
108
-[React Native]: https://facebook.github.io/react-native/
109
-[React Native dependencies]: https://facebook.github.io/react-native/docs/getting-started.html#installing-dependencies

+ 1
- 160
doc/quick-install.md Visa fil

@@ -1,162 +1,3 @@
1 1
 # Jitsi Meet quick install
2 2
 
3
-This guide helps you  ___host your own Jitsi server___. If you want to have a video conference without setting up any infrastructure, use https://meet.jit.si instead.
4
-
5
-This document describes the required steps for a quick Jitsi Meet installation on a Debian based GNU/Linux system. Debian 9 (Stretch) or later, and Ubuntu 18.04 (Bionic Beaver) or later are supported out-of-the-box.
6
-
7
-On Ubuntu systems, Jitsi requires dependencies from Ubuntu's `universe` package repository.  To ensure this is enabled, run `apt-add-repository universe` at the command-line.
8
-
9
-_Note_: Many of the installation steps require elevated privileges. If you are logged in using a regular user account, you may need to temporarily increase your permissions (for example, by using `sudo` for individual commands).
10
-
11
-## Basic Jitsi Meet install
12
-
13
-### Set up the Fully Qualified Domain Name (FQDN) (optional)
14
-
15
-If the machine used to host the Jitsi Meet instance has a FQDN (for example `meet.example.org`) already set up in DNS, `/etc/hostname` must contain this FQDN; if this is not the case yet, [change the hostname](https://wiki.debian.org/HowTo/ChangeHostname).
16
-
17
-Then add the same FQDN in the `/etc/hosts` file, associating it with the loopback address:
18
-
19
-    127.0.0.1 localhost meet.example.org
20
-
21
-Finally on the same machine test that you can ping the FQDN with: `ping "$(hostname)"`-
22
-
23
-### Add the Jitsi package repository
24
-```sh
25
-echo 'deb https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list
26
-wget -qO -  https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
27
-```
28
-### Open ports in your firewall
29
-
30
-Open the following ports in your firewall, to allow traffic to the machine running jitsi:
31
-
32
- - 80 TCP
33
- - 443 TCP
34
- - 10000 UDP
35
-
36
-
37
-### Install Jitsi Meet
38
-
39
-_Note_: The installer will check if [Nginx](https://nginx.org/) or [Apache](https://httpd.apache.org/) is present (in that order) and configure a virtualhost within the web server it finds to serve Jitsi Meet. If none of the above is found it then defaults to Nginx.
40
-If you are already running Nginx on port 443 on the same machine turnserver configuration will be skipped as it will conflict with your current port 443.
41
-
42
-```sh
43
-# Ensure support is available for apt repositories served via HTTPS
44
-sudo apt install apt-transport-https
45
-
46
-# Retrieve the latest package versions across all repositories
47
-sudo apt update
48
-
49
-# Perform jitsi-meet installation
50
-sudo apt install jitsi-meet
51
-```
52
-
53
-During the installation, you will be asked to enter the hostname of the Jitsi Meet instance. If you have a [FQDN](https://en.wikipedia.org/wiki/Fully_qualified_domain_name) for the instance already set up in DNS, enter it there. If you don't have a resolvable hostname, you can enter the IP address of the machine (if it is static or doesn't change).
54
-
55
-This hostname (or IP address) will be used for virtualhost configuration inside the Jitsi Meet and also, you and your correspondents will be using it to access the web conferences.
56
-
57
-### Generate a Let's Encrypt certificate (optional, recommended)
58
-
59
-In order to have encrypted communications, you need a [TLS certificate](https://en.wikipedia.org/wiki/Transport_Layer_Security). The easiest way is to use [Let's Encrypt](https://letsencrypt.org/).
60
-
61
-_Note_: Jitsi Meet mobile apps *require* a valid certificate signed by a trusted [Certificate Authority](https://en.wikipedia.org/wiki/Certificate_authority) (such as a Let's Encrypt certificate) and will not be able to connect to your server if you choose a self-signed certificate.
62
-
63
-Simply run the following in your shell:
64
-
65
-```sh
66
-sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
67
-```
68
-
69
-Note that this script uses the [HTTP-01 challenge type](https://letsencrypt.org/docs/challenge-types/) and thus your instance needs to be accessible from the public internet. If you want to use a different challenge type, don't use this script and instead choose ___I want to use my own certificate___ during jitsi-meet installation.
70
-
71
-#### Advanced configuration
72
-If the installation is on a machine [behind NAT](https://github.com/jitsi/jitsi-meet/blob/master/doc/faq.md) jitsi-videobridge should configure itself automatically on boot. If three way call does not work further configuration of jitsi-videobridge is needed in order for it to be accessible from outside.
73
-Provided that all required ports are routed (forwarded) to the machine that it runs on. By default these ports are (TCP/443 or TCP/4443 and UDP/10000).
74
-The following extra lines need to be added to the file `/etc/jitsi/videobridge/sip-communicator.properties`:
75
-```
76
-org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
77
-org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
78
-```
79
-And comment the existing `org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES`.
80
-See [the documentation of ice4j](https://github.com/jitsi/ice4j/blob/master/doc/configuration.md)
81
-for details.
82
-
83
-Default deployments on systems using systemd will have low default values for maximum processes and open files. If the used bridge will expect higher number of participants the default values need to be adjusted (the default values are good for less than 100 participants).
84
-To update the values edit `/etc/systemd/system.conf` and make sure you have the following values if values are smaller, if not do not update.
85
-```
86
-DefaultLimitNOFILE=65000
87
-DefaultLimitNPROC=65000
88
-DefaultTasksMax=65000
89
-```
90
-To check values just run :
91
-```
92
-systemctl show --property DefaultLimitNPROC
93
-systemctl show --property DefaultLimitNOFILE
94
-systemctl show --property DefaultTasksMax
95
-```
96
-To load the values and check them look [here](#systemd-details) for details.
97
-
98
-By default, anyone who has access to your jitsi instance will be able to start a conference: if your server is open to the world, anyone can have a chat with anyone else. If you want to limit the ability to start a conference to registered users, set up a "secure domain". Follow the instructions at https://github.com/jitsi/jicofo#secure-domain.
99
-
100
-### Confirm that your installation is working
101
-
102
-Launch a web browser (Chrome, Chromium or latest Opera) and enter the hostname or IP address from the previous step into the address bar.
103
-
104
-If you used a self-signed certificate (as opposed to using Let's Encrypt), your web browser will ask you to confirm that you trust the certificate.
105
-
106
-You should see a web page prompting you to create a new meeting.  Make sure that you can successfully create a meeting and that other participants are able to join the session.
107
-
108
-If this all worked, then congratulations!  You have an operational Jitsi conference service.
109
-
110
-## Adding sip-gateway to Jitsi Meet
111
-
112
-### Install Jigasi
113
-
114
-Jigasi is a server-side application acting as a gateway to Jitsi Meet conferences. It allows regular [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) clients to join meetings and provides transcription capabilities.
115
-
116
-```sh
117
-sudo apt install jigasi
118
-```
119
-
120
-During the installation, you will be asked to enter your SIP account and password. This account will be used to invite the other SIP participants.
121
-
122
-### Reload Jitsi Meet
123
-
124
-Launch again a browser with the Jitsi Meet URL and you'll see a telephone icon on the right end of the toolbar. Use it to invite SIP accounts to join the current conference.
125
-
126
-Enjoy!
127
-
128
-## Uninstall
129
-
130
-```sh
131
-sudo apt purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2
132
-```
133
-
134
-Sometimes the following packages will fail to uninstall properly:
135
-
136
-- jigasi
137
-- jitsi-videobridge
138
-
139
-When this happens, just run the uninstall command a second time and it should be ok.
140
-
141
-The reason for the failure is that sometimes the uninstall script is faster than the process that stops the daemons. The second run of the uninstall command fixes this, as by then the jigasi or jitsi-videobridge daemons are already stopped.
142
-
143
-#### Systemd details
144
-To reload the systemd changes on a running system execute `sudo systemctl daemon-reload` and `sudo systemctl restart jitsi-videobridge2`.
145
-To check the tasks part execute `sudo systemctl status jitsi-videobridge2` and you should see `Tasks: XX (limit: 65000)`.
146
-To check the files and process part execute ```cat /proc/`cat /var/run/jitsi-videobridge/jitsi-videobridge.pid`/limits``` and you should see:
147
-```
148
-Max processes             65000                65000                processes
149
-Max open files            65000                65000                files
150
-```
151
-
152
-## Debugging problems
153
-
154
-If you run into problems, one thing to try is using a different web browser. Some versions of some browsers are known to have issues with Jitsi Meet. You can also visit https://test.webrtc.org to test your browser's [WebRTC](https://en.wikipedia.org/wiki/WebRTC) support.
155
-
156
-Another place to look is the various log files:
157
-
158
-```
159
-/var/log/jitsi/jvb.log
160
-/var/log/jitsi/jicofo.log
161
-/var/log/prosody/prosody.log
162
-```
3
+This document has been moved [here](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart).

+ 0
- 166
doc/scalable-installation.md Visa fil

@@ -1,166 +0,0 @@
1
-# Scalable Jitsi installation
2
-
3
-A single server Jitsi installation is good for a limited size of concurrent conferences.
4
-The first limiting factor is the videobridge component, that handles the actual video and audio traffic.
5
-It is easy to scale the video bridges horizontally by adding as many as needed.
6
-In a cloud based environment, additionally the bridges can be scaled up or down as needed.
7
-
8
-*NB*: The [Youtube Tutorial on Scaling](https://www.youtube.com/watch?v=LyGV4uW8km8) is outdated and describes an old configuration method.
9
-
10
-*NB*: Building a scalable infrastructure is not a task for beginning Jitsi Administrators.
11
-The instructions assume that you have installed a single node version successfully, and that
12
-you are comfortable installing, configuring and debugging Linux software.
13
-This is not a step-by-step guide, but will show you, which packages to install and which
14
-configurations to change. Use the [manual install](https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md) for
15
-details on how to setup Jitsi on a single host.
16
-It is highly recommended to use configuration management tools like Ansible or Puppet to manage the
17
-installation and configuration.
18
-
19
-## Architecture (Single Jitsi-Meet, multiple videobridges)
20
-
21
-A first step is to split the functions of the central jitsi-meet instance (with nginx, prosody and jicofo) and
22
-videobridges.
23
-
24
-A simplified diagram (with open network ports) of an installation with one Jitsi-Meet instance and three
25
-videobridges that are load balanced looks as follows. Each box is a server/VM.
26
-
27
-```
28
-               +                                       +
29
-               |                                       |
30
-               |                                       |
31
-               v                                       v
32
-          80, 443 TCP                          443 TCP, 10000 UDP
33
-       +--------------+                     +---------------------+
34
-       |  nginx       |  5222, 5347 TCP     |                     |
35
-       |  jitsi-meet  |<-------------------+|  jitsi-videobridge  |
36
-       |  prosody     |         |           |                     |
37
-       |  jicofo      |         |           +---------------------+
38
-       +--------------+         |
39
-                                |           +---------------------+
40
-                                |           |                     |
41
-                                +----------+|  jitsi-videobridge  |
42
-                                |           |                     |
43
-                                |           +---------------------+
44
-                                |
45
-                                |           +---------------------+
46
-                                |           |                     |
47
-                                +----------+|  jitsi-videobridge  |
48
-                                            |                     |
49
-                                            +---------------------+
50
-```
51
-
52
-## Machine Sizing
53
-
54
-The Jitsi-Meet server will generally not have that much load (unless you have many) conferences
55
-going at the same time. A 4 CPU, 8 GB machine will probably be fine.
56
-
57
-The videobridges will have more load. 4 or 8 CPU with 8 GB RAM seems to be a good configuration.
58
-
59
-
60
-### Installation of Jitsi-Meet
61
-
62
-Assuming that the installation will run under the following FQDN: `meet.example.com` and you have
63
-SSL cert and key in `/etc/ssl/meet.example.com.{crt,key}`
64
-
65
-Set the following DebConf variables prior to installing the packages.
66
-(We are not installing the `jitsi-meet` package which would handle that for us)
67
-
68
-Install the `debconf-utils` package
69
-
70
-```
71
-$ cat << EOF | sudo debconf-set-selections
72
-jitsi-videobridge	jitsi-videobridge/jvb-hostname	string	meet.example.com
73
-jitsi-meet	jitsi-meet/jvb-serve	boolean	false
74
-jitsi-meet-prosody	jitsi-videobridge/jvb-hostname	string	meet.example.com
75
-jitsi-meet-web-config	jitsi-meet/cert-choice	select	I want to use my own certificate
76
-jitsi-meet-web-config	jitsi-meet/cert-path-crt	string	/etc/ssl/meet.example.com.crt
77
-jitsi-meet-web-config	jitsi-meet/cert-path-key	string	/etc/ssl/meet.example.com.key
78
-EOF
79
-```
80
-
81
-On the jitsi-meet server, install the following packages:
82
-
83
-* `nginx`
84
-* `prosody`
85
-* `jicofo`
86
-* `jitsi-meet-web`
87
-* `jitsi-meet-prosody`
88
-* `jitsi-meet-web-config`
89
-
90
-### Installation of Videobridge(s)
91
-
92
-For simplicities sake, set the same `debconf` variables as above and install
93
-
94
-* `jitsi-videobridge2`
95
-
96
-### Configuration of jitsi-meet
97
-
98
-#### Firewall
99
-
100
-Open the following ports:
101
-
102
-Open to world:
103
-
104
-* 80 TCP
105
-* 443 TCP
106
-
107
-Open to the videobridges only
108
-
109
-* 5222 TCP (for Prosody)
110
-* 5347 TCP (for Jicofo)
111
-
112
-
113
-#### NGINX
114
-
115
-Create the `/etc/nginx/sites-available/meet.example.com.conf` as usual
116
-
117
-#### Prosody
118
-
119
-Follow the steps in the [manual install](https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md) for setup tasks
120
-
121
-You will need to adapt the following files (see the files in `example-config-files/scalable`)
122
-
123
-* `/etc/prosody/prosody.cfg.lua`
124
-* `/etc/prosody/conf.avail/meet.example.com.cfg.lua`
125
-
126
-#### Jitsi-Meet
127
-
128
-Adapt `/usr/share/jitsi-meet/config.js` and `/usr/share/jitsi-meet/interface-config.js` to your specific needs
129
-
130
-#### Jicofo
131
-
132
-You will need to adapt the following files (see the files in `example-config-files/scalable`)
133
-
134
-* `/etc/jitsi/jicofo/config` (hostname, jicofo_secret, jicofo_password)
135
-* `/etc/jitsi/jicofo/sip-communicator.properties` (hostname)
136
-
137
-### Configuration of the Videobridge
138
-
139
-#### Firewall
140
-
141
-Open the following ports:
142
-
143
-Open to world:
144
-
145
-* 443 TCP
146
-* 10000 UDP
147
-
148
-#### jitsi-videobridge2
149
-
150
-You will need to adapt the following files (see the files in `example-config-files/scalable`)
151
-
152
-Each videobridge will have to have it's own, unique nickname
153
-
154
-* `/etc/jitsi/videobridge/config` (hostname, password)
155
-* `/etc/jitsi/jicofo/sip-communicator.properties` (hostname of jitsi-meet, nickname of videobridge, vb_password)
156
-
157
-With the latest stable (April 2020) videobridge, it is no longer necessary to set public and private IP
158
-adresses in the `sip-communicator.properties` as the bridge will figure out the correct configuration by itself.
159
-
160
-## Testing
161
-
162
-After restarting all services (`prosody`, `jicofo` and all the `jitsi-videobridge2`) you can see in
163
-`/var/log/prosody/prosody.log` and
164
-`/var/log/jitsi/jicofo.log` that the videobridges connect to Prososy and that Jicofo picks them up.
165
-
166
-When a new conference starts, Jicofo picks a videobridge and schedules the conference on it.

+ 0
- 53
doc/sipgw-config.md Visa fil

@@ -1,53 +0,0 @@
1
-# Configuring sipgw jibri with jitsi-meet
2
-
3
-This document describes how you can configure jitsi-meet to use sipgw jibri and enable rooms in 'Add people dialog'
4
-You will need a working deployment of jibri configured to use a regular sip video device, for more info check out the [jibri documentation](https://github.com/jitsi/jibri/blob/master/README.md).
5
-
6
-This feature is available for non-guests of the system, so this relies on setting in config.js ``enableUserRolesBasedOnToken: true`` and providing a jwt token when accessing the conference.
7
-
8
-* Jicofo configuration:
9
-edit /etc/jitsi/jicofo/sip-communicator.properties (or similar), set the appropriate MUC to look for the Jibri Controllers. This should be the same MUC as is referenced in jibri's config.json file. Restart Jicofo after setting this property.
10
-
11
-```
12
-  org.jitsi.jicofo.jibri.SIP_BREWERY=TheSipBrewery@conference.yourdomain.com
13
- ```
14
-
15
-* Jitsi Meet configuration:
16
- - config.js: add 
17
-```
18
-  enableUserRolesBasedOnToken: true,
19
-  peopleSearchQueryTypes: ['conferenceRooms'],
20
-  peopleSearchUrl: 'https://api.yourdomain.com/testpath/searchpeople',
21
-```
22
-
23
-The combination of the above settings and providing a jwt token will enable a button under invite option which will show the dialog 'Add people'.
24
-
25
-## People search service
26
-
27
-When searching in the dialog, a request for results is made to the `peopleSearchUrl` service.
28
-
29
-The request is in the following format:
30
-```
31
-https://api.yourdomain.com/testpath/searchpeople?query=testroomname&queryTypes=[%22conferenceRooms%22]&jwt=somejwt
32
-```
33
-The parameters are:
34
- - query - The text entered by the user.
35
- - queryTypes - What type of results we want people, rooms, conferenceRooms. This is the value from config.js `peopleSearchQueryTypes`
36
- - jwt - The token used by the user to access the conference.
37
-
38
-The response of the service is a json in the following format:
39
-```
40
-[
41
-   {
42
-       "id": "address@sip.domain.com",
43
-       "name": "Some room name",
44
-       "type": "videosipgw"
45
-   },
46
-  {
47
-      "id": "address2@sip.domain.com",
48
-      "name": "Some room name2",
49
-      "type": "videosipgw"
50
-  }
51
-]
52
-```
53
-Type should be `videosipgw`, `name` is the name shown to the user and `id` is the sip address to be called by the sipgw jibri.

+ 0
- 22
doc/speakerstats-prosody.md Visa fil

@@ -1,22 +0,0 @@
1
-# Enabling speakerstats prosody module
2
-
3
-To enable the speaker stats we need to enable speakerstats module under the main
4
-virtual host, this is to enable the advertising the speaker stats component, 
5
-which address needs to be specified in `speakerstats_component` option.
6
-
7
-We need to also enable the component with the address specified in `speakerstats_component`.
8
-The component needs also to have the option with the muc component address in
9
-`muc_component` option.
10
-
11
-```lua
12
-VirtualHost "jitsi.example.com"
13
-    speakerstats_component = "speakerstats.jitsi.example.com"
14
-    modules_enabled = {
15
-        "speakerstats";
16
-    }
17
-
18
-Component "speakerstats.jitsi.example.com" "speakerstats_component"
19
-    muc_component = "conference.jitsi.example.com"
20
-
21
-Component "conference.jitsi.example.com" "muc"
22
-```

+ 0
- 15
doc/turn.md Visa fil

@@ -1,15 +0,0 @@
1
-One-to-one calls should avoid going throught the JVB for optimal performance and for optimal resource usage. This is why we've added the peer-to-peer mode where the two participants connect directly to each other. Unfortunately, a direct connection is not always possible between the participants. In those cases you can use a TURN server to relay the traffic (n.b. the JVB does much more than just relay the traffic, so this is not the same as using the JVB to "relay" the traffic).
2
-
3
-This document describes how to enable TURN server support in one-to-one calls in Jitsi Meet, even though it gives some hints how to configure [prosody](prosody.im) and [coTURN](https://github.com/coturn/coturn), it assumes a properly configured TURN server and a proprely configured XMPP server.
4
-
5
-One way to configure TURN support in meet with a static configuration. You can simply fill out the `p2p.stunServers` option with appropriate values, e.g.:
6
-
7
-    [
8
-        { urls: 'turn:turn.example.com1', credential: 'user', password: 'pass' },
9
-    ]
10
-
11
-This technique doesn't require any special configuration on the XMPP server, but it exposes the credentials to your TURN server and other people can use your bandwidth freely, so while it's simple to implement, it's not recommended.
12
-
13
-This [draft](https://tools.ietf.org/html/draft-uberti-behave-turn-rest-00) escribes a proposed standard REST API for obtaining access to TURN services via ephemeral (i.e. time-limited) credentials. These credentials are vended by a web service over HTTP, and then supplied to and checked by a TURN server using the standard TURN protocol. The usage of ephemeral credentials ensures that access to the TURN server can be controlled even if the credentials can be discovered by the user.
14
-
15
-Jitsi Meet can fetch the TURN credentials from the XMPP server via [XEP-0215](https://xmpp.org/extensions/xep-0215.html). You can enable this functionality by setting `p2p.useStunTurn: true` in config.js. By properly configuring a common shared secret on your TURN server and your XMPP server, the XMPP server can deliver appropriate credentials and TURN urls to Jitsi Meet. coTURN natively supports shared secret authentication (--use-auth-secret-) and in prosody, you can use the [mod_turncredentials](https://modules.prosody.im/mod_turncredentials.html) module.

doc/cloud-api.swagger → resources/cloud-api.swagger Visa fil


Laddar…
Avbryt
Spara