@drumee/setup-infra 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +3 -0
  3. package/configs/etc/cron.d/drumee +6 -0
  4. package/configs/etc/postfix/master.cf +137 -0
  5. package/congigure/init/acme +69 -0
  6. package/congigure/init/mail +16 -0
  7. package/congigure/init/named +27 -0
  8. package/congigure/menu/menu -tmp +144 -0
  9. package/congigure/menu/menu-install +147 -0
  10. package/congigure/menu/menu-reinstall +15 -0
  11. package/congigure/prepare +10 -0
  12. package/congigure/preset/jitsi +9 -0
  13. package/congigure/setup-infra +58 -0
  14. package/congigure/setup-schemas +57 -0
  15. package/congigure/start +29 -0
  16. package/congigure/utils/configure +56 -0
  17. package/congigure/utils/dependencies +90 -0
  18. package/congigure/utils/jitsi +122 -0
  19. package/congigure/utils/misc +77 -0
  20. package/congigure/utils/prompt.sh +35 -0
  21. package/congigure/utils/setup-versions +7 -0
  22. package/index.js +572 -0
  23. package/package.json +30 -0
  24. package/template.js +453 -0
  25. package/templates/env/application.json.tpl +0 -0
  26. package/templates/env/logrotate.tpl +7 -0
  27. package/templates/etc/bind/named.conf.local +13 -0
  28. package/templates/etc/bind/named.conf.log +105 -0
  29. package/templates/etc/bind/named.conf.options +33 -0
  30. package/templates/etc/dkimkeys/dkim.key +1 -0
  31. package/templates/etc/drumee/conf.d/conference.json.tpl +9 -0
  32. package/templates/etc/drumee/conf.d/drumee.json.tpl +7 -0
  33. package/templates/etc/drumee/conf.d/exchange.json.tpl +4 -0
  34. package/templates/etc/drumee/conf.d/myDrumee.json.tpl +16 -0
  35. package/templates/etc/drumee/credential/db.json.tpl +6 -0
  36. package/templates/etc/drumee/credential/email.json.tpl +12 -0
  37. package/templates/etc/drumee/credential/ovh/dns.json.tpl +6 -0
  38. package/templates/etc/drumee/credential/ovh/dns.sh.tpl +7 -0
  39. package/templates/etc/drumee/credential/redis.json.tpl +6 -0
  40. package/templates/etc/drumee/credential/sms.json.tpl +6 -0
  41. package/templates/etc/drumee/dnsapi.sh.tpl +28 -0
  42. package/templates/etc/drumee/drumee.sh.tpl +43 -0
  43. package/templates/etc/drumee/env.json +29 -0
  44. package/templates/etc/drumee/infrastructure/internals/accel.conf.tpl +47 -0
  45. package/templates/etc/drumee/infrastructure/mfs.conf.tpl +16 -0
  46. package/templates/etc/drumee/infrastructure/platform.json.tpl +16 -0
  47. package/templates/etc/drumee/infrastructure/routes/main.conf.tpl +143 -0
  48. package/templates/etc/drumee/infrastructure/servers/tt.conf +199 -0
  49. package/templates/etc/drumee/ssl/main.conf.tpl +10 -0
  50. package/templates/etc/jitsi/jicofo/config +2 -0
  51. package/templates/etc/jitsi/jicofo/defaults/jicofo.conf +225 -0
  52. package/templates/etc/jitsi/jicofo/defaults/logging.properties +15 -0
  53. package/templates/etc/jitsi/jicofo/jicofo.conf.tpl +46 -0
  54. package/templates/etc/jitsi/jicofo/logging.properties.tpl +12 -0
  55. package/templates/etc/jitsi/meet.conf.tpl +131 -0
  56. package/templates/etc/jitsi/ssl.conf.tpl +25 -0
  57. package/templates/etc/jitsi/videobridge/config +2 -0
  58. package/templates/etc/jitsi/videobridge/defaults/jvb.conf +129 -0
  59. package/templates/etc/jitsi/videobridge/defaults/logging.properties +12 -0
  60. package/templates/etc/jitsi/videobridge/jvb.conf +67 -0
  61. package/templates/etc/jitsi/videobridge/logging.properties.tpl +12 -0
  62. package/templates/etc/jitsi/web/config.js.tpl +208 -0
  63. package/templates/etc/jitsi/web/defaults/default +26 -0
  64. package/templates/etc/jitsi/web/defaults/ffdhe2048.txt +8 -0
  65. package/templates/etc/jitsi/web/defaults/interface_config.js +273 -0
  66. package/templates/etc/jitsi/web/defaults/meet.conf +193 -0
  67. package/templates/etc/jitsi/web/defaults/nginx.conf +73 -0
  68. package/templates/etc/jitsi/web/defaults/settings-config.js +480 -0
  69. package/templates/etc/jitsi/web/defaults/ssl.conf +28 -0
  70. package/templates/etc/jitsi/web/defaults/system-config.js +60 -0
  71. package/templates/etc/jitsi/web/interface_config.js +273 -0
  72. package/templates/etc/mail/dkim.key +1 -0
  73. package/templates/etc/mailname +1 -0
  74. package/templates/etc/mysql/mariadb.conf.d/50-server.cnf +120 -0
  75. package/templates/etc/nginx/modules-enabled/90-turn-relay.conf +27 -0
  76. package/templates/etc/nginx/modules-enabled/90-turn-relay.conf.tpl +27 -0
  77. package/templates/etc/nginx/nginx.conf +65 -0
  78. package/templates/etc/nginx/sites-enabled/drumee.conf.tpl +33 -0
  79. package/templates/etc/nginx/sites-enabled/jitsi.conf.tpl +28 -0
  80. package/templates/etc/nginx/sites-enabled/turnrelay.conf.tpl +9 -0
  81. package/templates/etc/opendkim/KeyTable +1 -0
  82. package/templates/etc/postfix/main.cf +76 -0
  83. package/templates/etc/postfix/mysql-virtual-alias-maps.cf +5 -0
  84. package/templates/etc/postfix/mysql-virtual-mailbox-domains.cf +5 -0
  85. package/templates/etc/postfix/mysql-virtual-mailbox-maps.cf +5 -0
  86. package/templates/etc/prosody/conf.d/vhost.cfg.lua.tpl +162 -0
  87. package/templates/etc/prosody/defaults/conf.d/jitsi-meet.cfg.lua +406 -0
  88. package/templates/etc/prosody/defaults/credentials.sh +10 -0
  89. package/templates/etc/prosody/defaults/prosody.cfg.lua +225 -0
  90. package/templates/etc/prosody/defaults/saslauthd.conf +30 -0
  91. package/templates/etc/prosody/prosody.cfg.lua.tpl +203 -0
  92. package/templates/etc/turnserver.conf.tpl +46 -0
  93. package/templates/index.js +102 -0
  94. package/templates/schema/utils/configs.init.sql.tpl +20 -0
  95. package/templates/schema/utils/configs.update.sql.tpl +19 -0
  96. package/templates/server/ecosystem.config.js.tpl +8 -0
  97. package/templates/var/lib/bind/domain.tpl +70 -0
@@ -0,0 +1,225 @@
1
+ {{ $ENABLE_AUTH := .Env.ENABLE_AUTH | default "0" -}}
2
+ {{ $JICOFO_ENABLE_AUTH := .Env.JICOFO_ENABLE_AUTH | default $ENABLE_AUTH | toBool -}}
3
+ {{ $AUTH_TYPE := .Env.AUTH_TYPE | default "internal" -}}
4
+ {{ $JICOFO_AUTH_TYPE := .Env.JICOFO_AUTH_TYPE | default $AUTH_TYPE -}}
5
+ {{ $JICOFO_AUTH_LIFETIME := .Env.JICOFO_AUTH_LIFETIME | default "24 hours" -}}
6
+ {{ $ENABLE_SCTP := .Env.ENABLE_SCTP | default "0" | toBool -}}
7
+ {{ $ENABLE_RECORDING := .Env.ENABLE_RECORDING | default "0" | toBool -}}
8
+ {{ $ENABLE_OCTO := .Env.ENABLE_OCTO | default "0" | toBool -}}
9
+ {{ $ENABLE_AUTO_LOGIN := .Env.ENABLE_AUTO_LOGIN | default "1" | toBool -}}
10
+ {{ $ENABLE_REST := .Env.JICOFO_ENABLE_REST | default "0" | toBool -}}
11
+ {{ $ENABLE_JVB_XMPP_SERVER := .Env.ENABLE_JVB_XMPP_SERVER | default "0" | toBool -}}
12
+ {{ $HEALTH_CHECKS_USE_PRESENCE := .Env.JICOFO_HEALTH_CHECKS_USE_PRESENCE | default "0" | toBool -}}
13
+ {{ $JIBRI_BREWERY_MUC := .Env.JIBRI_BREWERY_MUC | default "jibribrewery" -}}
14
+ {{ $JIGASI_BREWERY_MUC := .Env.JIGASI_BREWERY_MUC | default "jigasibrewery" -}}
15
+ {{ $JVB_BREWERY_MUC := .Env.JVB_BREWERY_MUC | default "jvbbrewery" -}}
16
+ {{ $JIBRI_PENDING_TIMEOUT := .Env.JIBRI_PENDING_TIMEOUT | default 90 -}}
17
+ {{ $JVB_XMPP_AUTH_DOMAIN := .Env.JVB_XMPP_AUTH_DOMAIN | default "auth.jvb.meet.jitsi" -}}
18
+ {{ $JVB_XMPP_INTERNAL_MUC_DOMAIN := .Env.JVB_XMPP_INTERNAL_MUC_DOMAIN | default "muc.jvb.meet.jitsi" -}}
19
+ {{ $JVB_XMPP_PORT := .Env.JVB_XMPP_PORT | default "6222" -}}
20
+ {{ $JVB_XMPP_SERVER := .Env.JVB_XMPP_SERVER | default "xmpp.jvb.meet.jitsi" -}}
21
+ {{ $XMPP_AUTH_DOMAIN := .Env.XMPP_AUTH_DOMAIN | default "auth.meet.jitsi" -}}
22
+ {{ $XMPP_MUC_DOMAIN := .Env.XMPP_MUC_DOMAIN | default "muc.meet.jitsi" -}}
23
+ {{ $XMPP_INTERNAL_MUC_DOMAIN := .Env.XMPP_INTERNAL_MUC_DOMAIN | default "internal-muc.meet.jitsi" -}}
24
+ {{ $XMPP_DOMAIN := .Env.XMPP_DOMAIN | default "meet.jitsi" -}}
25
+ {{ $XMPP_RECORDER_DOMAIN := .Env.XMPP_RECORDER_DOMAIN | default "recorder.meet.jitsi" -}}
26
+ {{ $XMPP_PORT := .Env.XMPP_PORT | default "5222" -}}
27
+ {{ $XMPP_SERVER := .Env.XMPP_SERVER | default "xmpp.meet.jitsi" -}}
28
+
29
+ jicofo {
30
+ {{ if $JICOFO_ENABLE_AUTH }}
31
+ authentication {
32
+ enabled = true
33
+ // The type of authentication. Supported values are XMPP or JWT.
34
+ {{ if eq $JICOFO_AUTH_TYPE "jwt" }}
35
+ type = JWT
36
+ {{ else }}
37
+ type = XMPP
38
+ {{ end }}
39
+ login-url = "{{ $XMPP_DOMAIN }}"
40
+ enable-auto-login = {{ $ENABLE_AUTO_LOGIN }}
41
+ authentication-lifetime = {{ $JICOFO_AUTH_LIFETIME }}
42
+ }
43
+ {{ end }}
44
+
45
+ // Configuration related to jitsi-videobridge
46
+ bridge {
47
+ {{ if .Env.MAX_BRIDGE_PARTICIPANTS }}
48
+ max-bridge-participants = "{{ .Env.MAX_BRIDGE_PARTICIPANTS }}"
49
+ {{ end }}
50
+
51
+ {{ if .Env.BRIDGE_AVG_PARTICIPANT_STRESS }}
52
+ // The assumed average stress per participant. default is 0.01
53
+ average-participant-stress = "{{ .Env.BRIDGE_AVG_PARTICIPANT_STRESS }}"
54
+ {{ end }}
55
+
56
+ {{ if .Env.BRIDGE_STRESS_THRESHOLD }}
57
+ // The stress level above which a bridge is considered overstressed. 0.8 is the default value
58
+ stress-threshold = "{{ .Env.BRIDGE_STRESS_THRESHOLD }}"
59
+ {{ end }}
60
+
61
+ {{ if .Env.OCTO_BRIDGE_SELECTION_STRATEGY }}
62
+ selection-strategy = "{{ .Env.OCTO_BRIDGE_SELECTION_STRATEGY }}"
63
+ {{ end }}
64
+
65
+ {{ if .Env.JICOFO_ENABLE_BRIDGE_HEALTH_CHECKS }}
66
+ health-checks {
67
+ enabled = {{ .Env.JICOFO_ENABLE_BRIDGE_HEALTH_CHECKS | toBool }}
68
+ use-presence = {{ $HEALTH_CHECKS_USE_PRESENCE }}
69
+ }
70
+ {{ end }}
71
+
72
+ {{ if $ENABLE_JVB_XMPP_SERVER }}
73
+ brewery-jid = "{{ $JVB_BREWERY_MUC }}@{{ $JVB_XMPP_INTERNAL_MUC_DOMAIN }}"
74
+ {{ else }}
75
+ brewery-jid = "{{ $JVB_BREWERY_MUC }}@{{ $XMPP_INTERNAL_MUC_DOMAIN }}"
76
+ {{ end }}
77
+
78
+ {{ if .Env.JICOFO_BRIDGE_REGION_GROUPS }}
79
+ region-groups = [{{ .Env.JICOFO_BRIDGE_REGION_GROUPS }}]
80
+ {{ end }}
81
+ }
82
+ // Configure the codecs and RTP extensions to be used in the offer sent to clients.
83
+ codec {
84
+ video {
85
+ {{ if .Env.ENABLE_CODEC_VP8 }}
86
+ vp8 {
87
+ enabled = {{ .Env.ENABLE_CODEC_VP8 | toBool }}
88
+ }
89
+ {{ end }}
90
+ {{ if .Env.ENABLE_CODEC_VP9 }}
91
+ vp9 {
92
+ enabled = {{ .Env.ENABLE_CODEC_VP9 | toBool }}
93
+ }
94
+ {{ end }}
95
+ {{ if .Env.ENABLE_CODEC_H264 }}
96
+ h264 {
97
+ enabled = {{ .Env.ENABLE_CODEC_H264 | toBool }}
98
+ }
99
+ {{ end }}
100
+ }
101
+ audio {
102
+ {{ if .Env.ENABLE_CODEC_OPUS_RED }}
103
+ opus {
104
+ red {
105
+ enabled = {{ .Env.ENABLE_CODEC_OPUS_RED | toBool }}
106
+ }
107
+ }
108
+ {{ end }}
109
+ }
110
+ }
111
+
112
+ conference {
113
+ {{ if .Env.ENABLE_AUTO_OWNER }}
114
+ enable-auto-owner = {{ .Env.ENABLE_AUTO_OWNER | toBool }}
115
+ {{ end }}
116
+
117
+ {{ if .Env.JICOFO_CONF_INITIAL_PARTICIPANT_WAIT_TIMEOUT }}
118
+ initial-timeout = "{{ .Env.JICOFO_CONF_INITIAL_PARTICIPANT_WAIT_TIMEOUT }}"
119
+ {{ end }}
120
+
121
+ {{ if .Env.JICOFO_CONF_SINGLE_PARTICIPANT_TIMEOUT }}
122
+ single-participant-timeout = "{{ .Env.JICOFO_CONF_SINGLE_PARTICIPANT_TIMEOUT }}"
123
+ {{ end }}
124
+
125
+ {{ if .Env.JICOFO_CONF_SOURCE_SIGNALING_DELAYS }}
126
+ source-signaling-delays = {{ .Env.JICOFO_SOURCE_SIGNALING_DELAYS }}
127
+ {{ end }}
128
+
129
+ {{ if .Env.JICOFO_CONF_MAX_AUDIO_SENDERS }}
130
+ max-audio-senders = {{ .Env.JICOFO_CONF_MAX_AUDIO_SENDERS }}
131
+ {{ end }}
132
+
133
+ {{ if .Env.JICOFO_CONF_MAX_VIDEO_SENDERS }}
134
+ max-video-senders = {{ .Env.JICOFO_CONF_MAX_VIDEO_SENDERS }}
135
+ {{ end }}
136
+
137
+ {{ if .Env.JICOFO_CONF_STRIP_SIMULCAST }}
138
+ strip-simulcast = {{ .Env.JICOFO_CONF_STRIP_SIMULCAST | toBool }}
139
+ {{ end }}
140
+
141
+ {{ if .Env.JICOFO_CONF_SSRC_REWRITING }}
142
+ use-ssrc-rewriting = {{ .Env.JICOFO_CONF_SSRC_REWRITING | toBool }}
143
+ {{ end }}
144
+
145
+ {{ if .Env.JICOFO_MULTI_STREAM_BACKWARD_COMPAT }}
146
+ enable-multi-stream-backward-compat = {{ .Env.JICOFO_MULTI_STREAM_BACKWARD_COMPAT | toBool }}
147
+ {{ end }}
148
+
149
+ }
150
+
151
+ {{ if .Env.JICOFO_ENABLE_HEALTH_CHECKS }}
152
+ // Configuration for the internal health checks performed by jicofo.
153
+ health {
154
+ // Whether to perform health checks.
155
+ enabled = {{ .Env.JICOFO_ENABLE_HEALTH_CHECKS | toBool }}
156
+ }
157
+ {{ end }}
158
+
159
+ {{ if $ENABLE_RECORDING }}
160
+ jibri {
161
+ brewery-jid = "{{ $JIBRI_BREWERY_MUC }}@{{ $XMPP_INTERNAL_MUC_DOMAIN }}"
162
+ {{ if .Env.JIBRI_REQUEST_RETRIES }}
163
+ num-retries = "{{ .Env.JIBRI_REQUEST_RETRIES }}"
164
+ {{ end }}
165
+ pending-timeout = "{{ $JIBRI_PENDING_TIMEOUT }}"
166
+ }
167
+ {{ end }}
168
+
169
+ {{ if and .Env.JIGASI_SIP_URI $JIGASI_BREWERY_MUC }}
170
+ jigasi {
171
+ brewery-jid = "{{ $JIGASI_BREWERY_MUC }}@{{ $XMPP_INTERNAL_MUC_DOMAIN }}"
172
+ }
173
+ {{ end }}
174
+
175
+ {{ if .Env.JICOFO_OCTO_REGION }}
176
+ local-region = "{{ .Env.JICOFO_OCTO_REGION }}"
177
+ {{ end }}
178
+
179
+ octo {
180
+ // Whether or not to use Octo. Note that when enabled, its use will be determined by
181
+ // $jicofo.bridge.selection-strategy. There's a corresponding flag in the JVB and these
182
+ // two MUST be in sync (otherwise bridges will crash because they won't know how to
183
+ // deal with octo channels).
184
+ enabled = {{ $ENABLE_OCTO }}
185
+ }
186
+
187
+ {{ if $ENABLE_REST }}
188
+ rest {
189
+ host = "0.0.0.0"
190
+ }
191
+ {{ end }}
192
+
193
+ sctp {
194
+ enabled = {{ $ENABLE_SCTP }}
195
+ }
196
+
197
+ xmpp {
198
+ client {
199
+ enabled = true
200
+ hostname = "{{ $XMPP_SERVER }}"
201
+ port = "{{ $XMPP_PORT }}"
202
+ domain = "{{ $XMPP_AUTH_DOMAIN }}"
203
+ xmpp-domain = "{{ $XMPP_DOMAIN }}"
204
+ username = "focus"
205
+ password = "{{ .Env.JICOFO_AUTH_PASSWORD }}"
206
+ conference-muc-jid = "{{ $XMPP_MUC_DOMAIN }}"
207
+ client-proxy = "focus.{{ $XMPP_DOMAIN }}"
208
+ disable-certificate-verification = true
209
+ }
210
+ {{ if $ENABLE_JVB_XMPP_SERVER }}
211
+ service {
212
+ enabled = true
213
+ hostname = "{{ $JVB_XMPP_SERVER }}"
214
+ port = "{{ $JVB_XMPP_PORT }}"
215
+ domain = "{{ $JVB_XMPP_AUTH_DOMAIN }}"
216
+ username = "focus"
217
+ password = "{{ .Env.JICOFO_AUTH_PASSWORD }}"
218
+ disable-certificate-verification = true
219
+ }
220
+ {{ end }}
221
+ {{ if $ENABLE_RECORDING }}
222
+ trusted-domains = [ "{{ $XMPP_RECORDER_DOMAIN }}" ]
223
+ {{ end }}
224
+ }
225
+ }
@@ -0,0 +1,15 @@
1
+ {{ if .Env.SENTRY_DSN | default "0" | toBool }}
2
+ handlers=java.util.logging.ConsoleHandler,io.sentry.jul.SentryHandler
3
+ {{ else }}
4
+ handlers= java.util.logging.ConsoleHandler
5
+ {{ end }}
6
+
7
+ java.util.logging.ConsoleHandler.level = ALL
8
+ java.util.logging.ConsoleHandler.formatter = org.jitsi.utils.logging2.JitsiLogFormatter
9
+ org.jitsi.utils.logging2.JitsiLogFormatter.programname=Jicofo
10
+
11
+ .level=INFO
12
+ io.sentry.jul.SentryHandler.level=WARNING
13
+
14
+ # Enable debug packets logging
15
+ #org.jitsi.impl.protocol.xmpp.level=FINE
@@ -0,0 +1,46 @@
1
+ jicofo {
2
+ // Configuration related to jitsi-videobridge
3
+ bridge {
4
+ brewery-jid = "jvbbrewery@internal-muc.<%= jitsi_domain %>"
5
+ }
6
+ // Configure the codecs and RTP extensions to be used in the offer sent to clients.
7
+ codec {
8
+ video {
9
+ }
10
+ audio {
11
+ }
12
+ }
13
+
14
+ conference {
15
+ }
16
+ octo {
17
+ // Whether or not to use Octo. Note that when enabled, its use will be determined by
18
+ // $jicofo.bridge.selection-strategy. There's a corresponding flag in the JVB and these
19
+ // two MUST be in sync (otherwise bridges will crash because they won't know how to
20
+ // deal with octo channels).
21
+ enabled = false
22
+ }
23
+ sctp {
24
+ enabled = false
25
+ }
26
+ authentication: {
27
+ enabled: true
28
+ type: JWT
29
+ login-url: <%= jitsi_domain %>
30
+ }
31
+ xmpp {
32
+ client {
33
+ enabled = true
34
+ hostname = "xmpp.<%= jitsi_domain %>"
35
+ port = "5222"
36
+ domain = "auth.<%= jitsi_domain %>"
37
+ xmpp-domain = "<%= jitsi_domain %>"
38
+ username = "focus"
39
+ password = "<%= jicofo_password %>"
40
+ conference-muc-jid = "muc.<%= jitsi_domain %>"
41
+ client-proxy = "focus.<%= jitsi_domain %>"
42
+ disable-certificate-verification = true
43
+ }
44
+ }
45
+ }
46
+
@@ -0,0 +1,12 @@
1
+ handlers= java.util.logging.ConsoleHandler
2
+
3
+
4
+ java.util.logging.ConsoleHandler.level = ALL
5
+ java.util.logging.ConsoleHandler.formatter = org.jitsi.utils.logging2.JitsiLogFormatter
6
+ org.jitsi.utils.logging2.JitsiLogFormatter.programname=Jicofo
7
+
8
+ .level=INFO
9
+ io.sentry.jul.SentryHandler.level=WARNING
10
+
11
+ # Enable debug packets logging
12
+ #org.jitsi.impl.protocol.xmpp.level=FINE
@@ -0,0 +1,131 @@
1
+ server_name <%= jitsi_domain %>;
2
+
3
+ charset utf8;
4
+
5
+ client_max_body_size 0;
6
+
7
+ #root /usr/share/jitsi-meet;
8
+ root /srv/drumee/static/images;
9
+
10
+ # ssi on with javascript for multidomain variables in config.js
11
+ ssi on;
12
+ ssi_types application/x-javascript application/javascript;
13
+
14
+ # index index.html index.htm;
15
+ error_page 404 /static/404.html;
16
+
17
+ # Security headers
18
+ add_header X-Content-Type-Options nosniff;
19
+ add_header X-XSS-Protection "1; mode=block";
20
+
21
+ set $prefix "";
22
+
23
+
24
+ # Opt out of FLoC (deprecated)
25
+ add_header Permissions-Policy "interest-cohort=()";
26
+
27
+ # location = /config.js {
28
+ # alias /etc/jitsi/web/config.js;
29
+ # }
30
+
31
+ # location = /interface_config.js {
32
+ # alias /etc/jitsi/web/interface_config.js;
33
+ # }
34
+
35
+ # location = /external_api.js {
36
+ # alias /usr/share/jitsi-meet/libs/external_api.min.js;
37
+ # }
38
+
39
+
40
+
41
+ # ensure all static content can always be found first
42
+ # location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$ {
43
+ # add_header 'Access-Control-Allow-Origin' '*';
44
+ # alias /usr/share/jitsi-meet/$1/$2;
45
+
46
+ # cache all versioned files
47
+ # if ($arg_v) {
48
+ # expires 1y;
49
+ # }
50
+ # }
51
+
52
+
53
+ # colibri (JVB) websockets
54
+ location ~ ^/colibri-ws/([a-zA-Z0-9-\._]+)/(.*) {
55
+ tcp_nodelay on;
56
+ proxy_http_version 1.1;
57
+ proxy_set_header Upgrade $http_upgrade;
58
+ proxy_set_header Connection $connection_upgrade;
59
+ proxy_pass http://$1:9090/colibri-ws/$1/$2$is_args$args;
60
+ }
61
+
62
+
63
+ # BOSH
64
+ location = /http-bind {
65
+ proxy_set_header X-Forwarded-For $remote_addr;
66
+ proxy_set_header Host <%= jitsi_domain %>;
67
+ proxy_pass http://127.0.0.1:5280/http-bind?prefix=$prefix&$args;
68
+ }
69
+
70
+
71
+ # xmpp websockets
72
+ location = /xmpp-websocket {
73
+ proxy_pass http://localhost:5280/xmpp-websocket;
74
+ proxy_http_version 1.1;
75
+ proxy_set_header Connection "upgrade";
76
+ proxy_set_header Upgrade $http_upgrade;
77
+ proxy_set_header Host <%= jitsi_domain %>;
78
+ proxy_set_header X-Forwarded-For $remote_addr;
79
+ tcp_nodelay on;
80
+ }
81
+
82
+
83
+ location ~ ^/([^/?&:'"]+)$ {
84
+ try_files $uri @root_path;
85
+ }
86
+
87
+ location @root_path {
88
+ rewrite ^/(.*)$ / break;
89
+ }
90
+
91
+
92
+ # Matches /(TENANT)/pwa-worker.js or /(TENANT)/manifest.json to rewrite to / and look for file
93
+ location ~ ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ {
94
+ set $subdomain "$1.";
95
+ set $subdir "$1/";
96
+ rewrite ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ /$2;
97
+ }
98
+
99
+ location ~ ^/([^/?&:'"]+)/config.js$ {
100
+ set $subdomain "$1.";
101
+ set $subdir "$1/";
102
+
103
+ alias /etc/jitsi/web/config.js;
104
+ }
105
+
106
+ # BOSH for subdomains
107
+ location ~ ^/([^/?&:'"]+)/http-bind {
108
+ set $subdomain "$1.";
109
+ set $subdir "$1/";
110
+ set $prefix "$1";
111
+
112
+ rewrite ^/(.*)$ /http-bind;
113
+ }
114
+
115
+
116
+ # websockets for subdomains
117
+ location ~ ^/([^/?&:'"]+)/xmpp-websocket {
118
+ set $subdomain "$1.";
119
+ set $subdir "$1/";
120
+ set $prefix "$1";
121
+
122
+ rewrite ^/(.*)$ /xmpp-websocket;
123
+ }
124
+
125
+
126
+ # Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
127
+ location ~ ^/([^/?&:'"]+)/(.*)$ {
128
+ set $subdomain "$1.";
129
+ set $subdir "$1/";
130
+ rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
131
+ }
@@ -0,0 +1,25 @@
1
+ # session settings
2
+ ssl_session_timeout 1d;
3
+ ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
4
+ ssl_session_tickets off;
5
+
6
+ # ssl certs
7
+
8
+ ssl_certificate <%= certs_dir %>/<%= jitsi_domain %>_ecc/fullchain.cer;
9
+ ssl_certificate_key <%= certs_dir %>/<%= jitsi_domain %>_ecc/<%= jitsi_domain %>.key;
10
+ ssl_trusted_certificate <%= certs_dir %>/<%= jitsi_domain %>_ecc/ca.cer;
11
+
12
+ # protocols
13
+ # Mozilla Guideline v5.6, nginx 1.14.2, OpenSSL 1.1.1d, intermediate configuration, no OCSP
14
+ # https://ssl-config.mozilla.org/#server=nginx&version=1.14.2&config=intermediate&openssl=1.1.1d&ocsp=false&guideline=5.6
15
+ ssl_protocols TLSv1.2 TLSv1.3;
16
+ ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
17
+ ssl_prefer_server_ciphers off;
18
+
19
+ # Diffie-Hellman parameter for DHE cipher suites
20
+ ssl_dhparam /etc/jitsi/web/defaults/ffdhe2048.txt;
21
+
22
+ # HSTS (ngx_http_headers_module is required) (63072000 seconds)
23
+
24
+ add_header Strict-Transport-Security "max-age=63072000" always;
25
+
@@ -0,0 +1,2 @@
1
+ # adds java system props that are passed to jvb (default are for home and logging config file)
2
+ JAVA_SYS_PROPS="-Dconfig.file=/etc/jitsi/videobridge/jvb.conf -Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=videobridge -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi -Djava.util.logging.config.file=/etc/jitsi/videobridge/logging.properties"
@@ -0,0 +1,129 @@
1
+ {{ $COLIBRI_REST_ENABLED := .Env.COLIBRI_REST_ENABLED | default "false" | toBool -}}
2
+ {{ $ENABLE_COLIBRI_WEBSOCKET := .Env.ENABLE_COLIBRI_WEBSOCKET | default "1" | toBool -}}
3
+ {{ $ENABLE_OCTO := .Env.ENABLE_OCTO | default "0" | toBool -}}
4
+ {{ $ENABLE_JVB_XMPP_SERVER := .Env.ENABLE_JVB_XMPP_SERVER | default "0" | toBool }}
5
+ {{ $JVB_DISABLE_STUN := .Env.JVB_DISABLE_STUN | default "0" | toBool -}}
6
+ {{ $JVB_STUN_SERVERS := .Env.JVB_STUN_SERVERS | default "meet-jit-si-turnrelay.jitsi.net:443" -}}
7
+ {{ $JVB_AUTH_USER := .Env.JVB_AUTH_USER | default "jvb" -}}
8
+ {{ $JVB_BREWERY_MUC := .Env.JVB_BREWERY_MUC | default "jvbbrewery" -}}
9
+ {{ $JVB_MUC_NICKNAME := .Env.JVB_MUC_NICKNAME | default .Env.HOSTNAME -}}
10
+ {{ $JVB_ADVERTISE_PRIVATE_CANDIDATES := .Env.JVB_ADVERTISE_PRIVATE_CANDIDATES | default "true" | toBool -}}
11
+ {{ $JVB_ADVERTISE_IPS := .Env.JVB_ADVERTISE_IPS | default "" -}}
12
+ {{ $JVB_IPS := splitList "," $JVB_ADVERTISE_IPS -}}
13
+ {{ $JVB_XMPP_AUTH_DOMAIN := .Env.JVB_XMPP_AUTH_DOMAIN | default "auth.jvb.meet.jitsi" -}}
14
+ {{ $JVB_XMPP_INTERNAL_MUC_DOMAIN := .Env.JVB_XMPP_INTERNAL_MUC_DOMAIN | default "muc.jvb.meet.jitsi" -}}
15
+ {{ $JVB_XMPP_PORT := .Env.JVB_XMPP_PORT | default "6222" -}}
16
+ {{ $JVB_XMPP_SERVER := .Env.JVB_XMPP_SERVER | default "xmpp.jvb.meet.jitsi" -}}
17
+ {{ $JVB_XMPP_SERVERS := splitList "," $JVB_XMPP_SERVER -}}
18
+ {{ $PUBLIC_URL_DOMAIN := .Env.PUBLIC_URL | default "https://localhost:8443" | trimPrefix "https://" | trimSuffix "/" -}}
19
+ {{ $SHUTDOWN_REST_ENABLED := .Env.SHUTDOWN_REST_ENABLED | default "false" | toBool -}}
20
+ {{ $WS_DOMAIN := .Env.JVB_WS_DOMAIN | default $PUBLIC_URL_DOMAIN -}}
21
+ {{ $WS_SERVER_ID := .Env.JVB_WS_SERVER_ID | default .Env.JVB_WS_SERVER_ID_FALLBACK -}}
22
+ {{ $XMPP_AUTH_DOMAIN := .Env.XMPP_AUTH_DOMAIN | default "auth.meet.jitsi" -}}
23
+ {{ $XMPP_INTERNAL_MUC_DOMAIN := .Env.XMPP_INTERNAL_MUC_DOMAIN | default "internal-muc.meet.jitsi" -}}
24
+ {{ $XMPP_PORT := .Env.XMPP_PORT | default "5222" -}}
25
+ {{ $XMPP_SERVER := .Env.XMPP_SERVER | default "xmpp.meet.jitsi" -}}
26
+ {{ $XMPP_SERVERS := splitList "," $XMPP_SERVER -}}
27
+ {{/* assign env from context, preserve during range when . is re-assigned */}}
28
+ {{ $ENV := .Env -}}
29
+
30
+ videobridge {
31
+ ice {
32
+ udp {
33
+ port = {{ .Env.JVB_PORT | default 10000 }}
34
+ }
35
+ advertise-private-candidates = {{ $JVB_ADVERTISE_PRIVATE_CANDIDATES }}
36
+ }
37
+ apis {
38
+ xmpp-client {
39
+ configs {
40
+ {{ if $ENABLE_JVB_XMPP_SERVER }}
41
+ {{ range $index, $element := $JVB_XMPP_SERVERS -}}
42
+ {{ $SERVER := splitn ":" 2 $element }}
43
+ shard{{ $index }} {
44
+ HOSTNAME = "{{ $SERVER._0 }}"
45
+ PORT = "{{ $SERVER._1 | default $JVB_XMPP_PORT }}"
46
+ DOMAIN = "{{ $JVB_XMPP_AUTH_DOMAIN }}"
47
+ USERNAME = "{{ $JVB_AUTH_USER }}"
48
+ PASSWORD = "{{ $ENV.JVB_AUTH_PASSWORD }}"
49
+ MUC_JIDS = "{{ $JVB_BREWERY_MUC }}@{{ $JVB_XMPP_INTERNAL_MUC_DOMAIN }}"
50
+ MUC_NICKNAME = "{{ $JVB_MUC_NICKNAME }}"
51
+ DISABLE_CERTIFICATE_VERIFICATION = true
52
+ }
53
+ {{ end -}}
54
+ {{ else }}
55
+ {{ range $index, $element := $XMPP_SERVERS -}}
56
+ {{ $SERVER := splitn ":" 2 $element }}
57
+ shard{{ $index }} {
58
+ HOSTNAME = "{{ $SERVER._0 }}"
59
+ PORT = "{{ $SERVER._1 | default $XMPP_PORT }}"
60
+ DOMAIN = "{{ $XMPP_AUTH_DOMAIN }}"
61
+ USERNAME = "{{ $JVB_AUTH_USER }}"
62
+ PASSWORD = "{{ $ENV.JVB_AUTH_PASSWORD }}"
63
+ MUC_JIDS = "{{ $JVB_BREWERY_MUC }}@{{ $XMPP_INTERNAL_MUC_DOMAIN }}"
64
+ MUC_NICKNAME = "{{ $JVB_MUC_NICKNAME }}"
65
+ DISABLE_CERTIFICATE_VERIFICATION = true
66
+ }
67
+ {{ end -}}
68
+ {{ end }}
69
+ }
70
+ }
71
+ rest {
72
+ enabled = {{ $COLIBRI_REST_ENABLED }}
73
+ }
74
+ }
75
+ rest {
76
+ shutdown {
77
+ enabled = {{ $SHUTDOWN_REST_ENABLED }}
78
+ }
79
+ }
80
+ stats {
81
+ enabled = true
82
+ }
83
+ websockets {
84
+ enabled = {{ $ENABLE_COLIBRI_WEBSOCKET }}
85
+ domain = "{{ $WS_DOMAIN }}"
86
+ tls = true
87
+ server-id = "{{ $WS_SERVER_ID }}"
88
+ }
89
+ http-servers {
90
+ private {
91
+ host = 0.0.0.0
92
+ }
93
+ public {
94
+ host = 0.0.0.0
95
+ port = 9090
96
+ }
97
+ }
98
+
99
+ {{ if $ENABLE_OCTO -}}
100
+ relay {
101
+ enabled = true
102
+ region = "{{ .Env.JVB_OCTO_REGION | default "europe" }}"
103
+ relay-id = "{{ .Env.JVB_OCTO_RELAY_ID | default .Env.JVB_OCTO_BIND_ADDRESS }}"
104
+ }
105
+ {{ end -}}
106
+ }
107
+
108
+ ice4j {
109
+ harvest {
110
+ mapping {
111
+ stun {
112
+ {{ if not $JVB_DISABLE_STUN -}}
113
+ addresses = [ "{{ join "\",\"" (splitList "," $JVB_STUN_SERVERS) }}" ]
114
+ {{ else -}}
115
+ enabled = false
116
+ {{ end -}}
117
+ }
118
+ static-mappings = [
119
+ {{ range $index, $element := $JVB_IPS -}}
120
+ {
121
+ local-address = "{{ $ENV.LOCAL_ADDRESS }}"
122
+ public-address = "{{ $element }}"
123
+ name = "ip-{{ $index }}"
124
+ },
125
+ {{ end -}}
126
+ ]
127
+ }
128
+ }
129
+ }
@@ -0,0 +1,12 @@
1
+ {{ if .Env.SENTRY_DSN | default "0" | toBool }}
2
+ handlers=java.util.logging.ConsoleHandler,io.sentry.jul.SentryHandler
3
+ {{ else }}
4
+ handlers= java.util.logging.ConsoleHandler
5
+ {{ end }}
6
+
7
+ java.util.logging.ConsoleHandler.level = ALL
8
+ java.util.logging.ConsoleHandler.formatter = org.jitsi.utils.logging2.JitsiLogFormatter
9
+ org.jitsi.utils.logging2.JitsiLogFormatter.programname=JVB
10
+
11
+ .level=INFO
12
+ io.sentry.jul.SentryHandler.level=WARNING
@@ -0,0 +1,67 @@
1
+ videobridge {
2
+ ice {
3
+ udp {
4
+ port = 10000
5
+ }
6
+ advertise-private-candidates = true
7
+ }
8
+ apis {
9
+ xmpp-client {
10
+ configs {
11
+ shard0 {
12
+ HOSTNAME = "xmpp.<%= jitsi_domain %>"
13
+ PORT = "5222"
14
+ DOMAIN = "auth.<%= jitsi_domain %>"
15
+ USERNAME = "jvb"
16
+ PASSWORD = "<%= jvb_password %>"
17
+ MUC_JIDS = "jvbbrewery@internal-muc.<%= jitsi_domain %>"
18
+ MUC_NICKNAME = "shard0"
19
+ DISABLE_CERTIFICATE_VERIFICATION = true
20
+ }
21
+ }
22
+ }
23
+ rest {
24
+ enabled = false
25
+ }
26
+ }
27
+ rest {
28
+ shutdown {
29
+ enabled = false
30
+ }
31
+ }
32
+ stats {
33
+ enabled = true
34
+ }
35
+ websockets {
36
+ enabled = true
37
+ domain = "<%= jitsi_domain %>"
38
+ tls = true
39
+ server-id = "<%= local_address %>"
40
+ }
41
+ http-servers {
42
+ private {
43
+ host = 0.0.0.0
44
+ }
45
+ public {
46
+ host = 0.0.0.0
47
+ port = 9090
48
+ }
49
+ }
50
+ }
51
+
52
+ ice4j {
53
+ harvest {
54
+ mapping {
55
+ stun {
56
+ addresses = [ "meet-jit-si-turnrelay.jitsi.net:443" ]
57
+ }
58
+ static-mappings = [
59
+ {
60
+ local-address = "<%= local_address %>"
61
+ public-address = ""
62
+ name = "ip-0"
63
+ }
64
+ ]
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,12 @@
1
+
2
+ handlers= java.util.logging.ConsoleHandler
3
+ java.util.logging.ConsoleHandler.level = ALL
4
+ java.util.logging.ConsoleHandler.formatter = org.jitsi.utils.logging2.JitsiLogFormatter
5
+ org.jitsi.utils.logging2.JitsiLogFormatter.programname=JVB
6
+
7
+ .level=INFO
8
+ io.sentry.jul.SentryHandler.level=WARNING
9
+
10
+ # Enable debug packets logging
11
+ #org.jitsi.impl.protocol.xmpp.level=FINE
12
+