87 lines
3.4 KiB
Markdown
87 lines
3.4 KiB
Markdown
# Setting up relays (cascaded bridges)
|
|
|
|
### Relays
|
|
Relays (aka secure octo) use ICE and DTLS/SRTP between each pair of bridges, so a secure
|
|
network is not required. It uses and requires either SCTP or colibri websockets for the
|
|
bridge-bridge connections.
|
|
|
|
## Jitsi Videobridge configuration
|
|
|
|
### Relay configuration
|
|
Relays can be configured with the following properties in `/etc/jitsi/videobridge/jvb.conf` (also see
|
|
[reference.conf](https://github.com/jitsi/jitsi-videobridge/blob/master/jvb/src/main/resources/reference.conf#L132)).
|
|
```
|
|
videobridge {
|
|
relay {
|
|
enabled=true
|
|
region="region1"
|
|
relay-id="unique-id-of-the-jitsi-videobridge-instance"
|
|
}
|
|
}
|
|
```
|
|
|
|
Legacy configuration is detected and automatically adapted, so no configuration changes are necessary when upgrading.
|
|
|
|
Relays require colibri websockets for the bridge-to-bridge connections, which can be enabled as described in
|
|
[this document](https://github.com/jitsi/jitsi-videobridge/blob/master/doc/web-sockets.md). Note that the `colibri-relay-ws`
|
|
endpoints also need to be proxied.
|
|
|
|
## Jicofo configuration
|
|
Octo needs to be enabled, and a suitable bridge selection strategy needs to be configured in `/etc/jitsi/jicofo/jicofo.conf`:
|
|
|
|
```
|
|
jicofo {
|
|
bridge {
|
|
selection-strategy = RegionBasedBridgeSelectionStrategy
|
|
}
|
|
octo {
|
|
enabled = true
|
|
}
|
|
}
|
|
```
|
|
|
|
The `RegionBasedBridgeSelectionStrategy` matches the region of the clients to
|
|
the region of the Jitsi Videobridge instances. That is, it always attempts to select a bridge
|
|
in the region of the client.
|
|
|
|
The `SplitBridgeSelectionStrategy` can be used for testing. It tries to select a new bridge
|
|
for each client, regardless of the regions. This is useful while testing, because you can
|
|
verify that Octo works before setting up the region configuration for the clients.
|
|
|
|
*Important note*: Jicofo will not mix bridges with different versions in the same conference. Even with
|
|
`SplitBridgeSelectionStrategy` if the bridges have different versions only bridges with the same version will be used.
|
|
To prevent this behavior (for testing purposes only) set `jicofo.ocfo.allow-mixed-versions=true` in `jicofo.conf`.
|
|
|
|
## Debugging
|
|
Jicofo's debug interface can be used for troubleshooting.
|
|
|
|
To list the bridges available to jicofo (with their versions, regions, etc):
|
|
```commandline
|
|
curl "http://localhost:8888/debug" | jq .bridge_selector
|
|
```
|
|
|
|
To list currently running conferences:
|
|
```commandline
|
|
curl "http://localhost:8888/debug" | jq .focus_manager
|
|
```
|
|
|
|
To list the full state of a conference (get actual conference ID with the command above, escaping the '@' sign):
|
|
```commandline
|
|
curl "http://localhost:8888/debug/conference/test\@conference.example.com" | jq .
|
|
```
|
|
|
|
Look under `colibri_session_manager` for the different bridge sessions.
|
|
|
|
|
|
## Configuring client regions
|
|
Clients learn about the region that they are in via the value of
|
|
`config.deploymentInfo.userRegion`. Thus, in order for relays to actually work
|
|
for geolocation, `config.js` must be served with the correct values. The best
|
|
way to implement this is outside the scope of this document, and it depends on
|
|
the environment in which Jitsi Meet is installed.
|
|
|
|
One easy solution can be to set the variable based on the domain name, and then
|
|
access the conference through the desired domain name, e.g. use
|
|
`us-east.jitsi.example.com`, `us-west.jitsi.example.com`,
|
|
`eu.jitsi.example.com` and have them serve custom versions of `config.js`.
|