|
@@ -0,0 +1,166 @@
|
|
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
|
+* 5437 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.
|