@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.
- package/LICENSE +661 -0
- package/README.md +3 -0
- package/configs/etc/cron.d/drumee +6 -0
- package/configs/etc/postfix/master.cf +137 -0
- package/congigure/init/acme +69 -0
- package/congigure/init/mail +16 -0
- package/congigure/init/named +27 -0
- package/congigure/menu/menu -tmp +144 -0
- package/congigure/menu/menu-install +147 -0
- package/congigure/menu/menu-reinstall +15 -0
- package/congigure/prepare +10 -0
- package/congigure/preset/jitsi +9 -0
- package/congigure/setup-infra +58 -0
- package/congigure/setup-schemas +57 -0
- package/congigure/start +29 -0
- package/congigure/utils/configure +56 -0
- package/congigure/utils/dependencies +90 -0
- package/congigure/utils/jitsi +122 -0
- package/congigure/utils/misc +77 -0
- package/congigure/utils/prompt.sh +35 -0
- package/congigure/utils/setup-versions +7 -0
- package/index.js +572 -0
- package/package.json +30 -0
- package/template.js +453 -0
- package/templates/env/application.json.tpl +0 -0
- package/templates/env/logrotate.tpl +7 -0
- package/templates/etc/bind/named.conf.local +13 -0
- package/templates/etc/bind/named.conf.log +105 -0
- package/templates/etc/bind/named.conf.options +33 -0
- package/templates/etc/dkimkeys/dkim.key +1 -0
- package/templates/etc/drumee/conf.d/conference.json.tpl +9 -0
- package/templates/etc/drumee/conf.d/drumee.json.tpl +7 -0
- package/templates/etc/drumee/conf.d/exchange.json.tpl +4 -0
- package/templates/etc/drumee/conf.d/myDrumee.json.tpl +16 -0
- package/templates/etc/drumee/credential/db.json.tpl +6 -0
- package/templates/etc/drumee/credential/email.json.tpl +12 -0
- package/templates/etc/drumee/credential/ovh/dns.json.tpl +6 -0
- package/templates/etc/drumee/credential/ovh/dns.sh.tpl +7 -0
- package/templates/etc/drumee/credential/redis.json.tpl +6 -0
- package/templates/etc/drumee/credential/sms.json.tpl +6 -0
- package/templates/etc/drumee/dnsapi.sh.tpl +28 -0
- package/templates/etc/drumee/drumee.sh.tpl +43 -0
- package/templates/etc/drumee/env.json +29 -0
- package/templates/etc/drumee/infrastructure/internals/accel.conf.tpl +47 -0
- package/templates/etc/drumee/infrastructure/mfs.conf.tpl +16 -0
- package/templates/etc/drumee/infrastructure/platform.json.tpl +16 -0
- package/templates/etc/drumee/infrastructure/routes/main.conf.tpl +143 -0
- package/templates/etc/drumee/infrastructure/servers/tt.conf +199 -0
- package/templates/etc/drumee/ssl/main.conf.tpl +10 -0
- package/templates/etc/jitsi/jicofo/config +2 -0
- package/templates/etc/jitsi/jicofo/defaults/jicofo.conf +225 -0
- package/templates/etc/jitsi/jicofo/defaults/logging.properties +15 -0
- package/templates/etc/jitsi/jicofo/jicofo.conf.tpl +46 -0
- package/templates/etc/jitsi/jicofo/logging.properties.tpl +12 -0
- package/templates/etc/jitsi/meet.conf.tpl +131 -0
- package/templates/etc/jitsi/ssl.conf.tpl +25 -0
- package/templates/etc/jitsi/videobridge/config +2 -0
- package/templates/etc/jitsi/videobridge/defaults/jvb.conf +129 -0
- package/templates/etc/jitsi/videobridge/defaults/logging.properties +12 -0
- package/templates/etc/jitsi/videobridge/jvb.conf +67 -0
- package/templates/etc/jitsi/videobridge/logging.properties.tpl +12 -0
- package/templates/etc/jitsi/web/config.js.tpl +208 -0
- package/templates/etc/jitsi/web/defaults/default +26 -0
- package/templates/etc/jitsi/web/defaults/ffdhe2048.txt +8 -0
- package/templates/etc/jitsi/web/defaults/interface_config.js +273 -0
- package/templates/etc/jitsi/web/defaults/meet.conf +193 -0
- package/templates/etc/jitsi/web/defaults/nginx.conf +73 -0
- package/templates/etc/jitsi/web/defaults/settings-config.js +480 -0
- package/templates/etc/jitsi/web/defaults/ssl.conf +28 -0
- package/templates/etc/jitsi/web/defaults/system-config.js +60 -0
- package/templates/etc/jitsi/web/interface_config.js +273 -0
- package/templates/etc/mail/dkim.key +1 -0
- package/templates/etc/mailname +1 -0
- package/templates/etc/mysql/mariadb.conf.d/50-server.cnf +120 -0
- package/templates/etc/nginx/modules-enabled/90-turn-relay.conf +27 -0
- package/templates/etc/nginx/modules-enabled/90-turn-relay.conf.tpl +27 -0
- package/templates/etc/nginx/nginx.conf +65 -0
- package/templates/etc/nginx/sites-enabled/drumee.conf.tpl +33 -0
- package/templates/etc/nginx/sites-enabled/jitsi.conf.tpl +28 -0
- package/templates/etc/nginx/sites-enabled/turnrelay.conf.tpl +9 -0
- package/templates/etc/opendkim/KeyTable +1 -0
- package/templates/etc/postfix/main.cf +76 -0
- package/templates/etc/postfix/mysql-virtual-alias-maps.cf +5 -0
- package/templates/etc/postfix/mysql-virtual-mailbox-domains.cf +5 -0
- package/templates/etc/postfix/mysql-virtual-mailbox-maps.cf +5 -0
- package/templates/etc/prosody/conf.d/vhost.cfg.lua.tpl +162 -0
- package/templates/etc/prosody/defaults/conf.d/jitsi-meet.cfg.lua +406 -0
- package/templates/etc/prosody/defaults/credentials.sh +10 -0
- package/templates/etc/prosody/defaults/prosody.cfg.lua +225 -0
- package/templates/etc/prosody/defaults/saslauthd.conf +30 -0
- package/templates/etc/prosody/prosody.cfg.lua.tpl +203 -0
- package/templates/etc/turnserver.conf.tpl +46 -0
- package/templates/index.js +102 -0
- package/templates/schema/utils/configs.init.sql.tpl +20 -0
- package/templates/schema/utils/configs.update.sql.tpl +19 -0
- package/templates/server/ecosystem.config.js.tpl +8 -0
- package/templates/var/lib/bind/domain.tpl +70 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
// Jitsi Meet configuration.
|
|
2
|
+
var config = {};
|
|
3
|
+
|
|
4
|
+
if (!config.hasOwnProperty('hosts')) config.hosts = {};
|
|
5
|
+
|
|
6
|
+
config.hosts.domain = '<%= jitsi_domain %>';
|
|
7
|
+
config.focusUserJid = 'focus@auth.<%= jitsi_domain %>';
|
|
8
|
+
|
|
9
|
+
var subdir = '<!--# echo var="subdir" default="" -->';
|
|
10
|
+
var subdomain = "<!--# echo var="subdomain" default="" -->";
|
|
11
|
+
if (subdir.startsWith('<!--')) {
|
|
12
|
+
subdir = '';
|
|
13
|
+
}
|
|
14
|
+
if (subdomain) {
|
|
15
|
+
subdomain = subdomain.substring(0,subdomain.length-1).split('.').join('_').toLowerCase() + '.';
|
|
16
|
+
}
|
|
17
|
+
config.hosts.muc = 'muc.' + subdomain + '<%= jitsi_domain %>';
|
|
18
|
+
config.bosh = '/http-bind';
|
|
19
|
+
|
|
20
|
+
config.websocket = 'wss://<%= jitsi_domain %>:443/' + subdir + 'xmpp-websocket';
|
|
21
|
+
|
|
22
|
+
// Video configuration.
|
|
23
|
+
//
|
|
24
|
+
|
|
25
|
+
if (!config.hasOwnProperty('constraints')) config.constraints = {};
|
|
26
|
+
if (!config.constraints.hasOwnProperty('video')) config.constraints.video = {};
|
|
27
|
+
|
|
28
|
+
config.resolution = 720;
|
|
29
|
+
config.constraints.video.height = { ideal: 720, max: 720, min: 180 };
|
|
30
|
+
config.constraints.video.width = { ideal: 1280, max: 1280, min: 320};
|
|
31
|
+
config.disableSimulcast = false;
|
|
32
|
+
config.startVideoMuted = 10;
|
|
33
|
+
config.startWithVideoMuted = false;
|
|
34
|
+
|
|
35
|
+
if (!config.hasOwnProperty('flags')) config.flags = {};
|
|
36
|
+
config.flags.sourceNameSignaling = true;
|
|
37
|
+
config.flags.sendMultipleVideoStreams = true;
|
|
38
|
+
config.flags.receiveMultipleVideoStreams = true;
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
// ScreenShare Configuration.
|
|
42
|
+
//
|
|
43
|
+
|
|
44
|
+
config.desktopSharingFrameRate = { min: 5, max: 5 };
|
|
45
|
+
|
|
46
|
+
// Audio configuration.
|
|
47
|
+
//
|
|
48
|
+
|
|
49
|
+
config.enableNoAudioDetection = true;
|
|
50
|
+
config.enableTalkWhileMuted = false;
|
|
51
|
+
config.disableAP = false;
|
|
52
|
+
|
|
53
|
+
if (!config.hasOwnProperty('audioQuality')) config.audioQuality = {};
|
|
54
|
+
config.audioQuality.stereo = false;
|
|
55
|
+
|
|
56
|
+
config.startAudioOnly = false;
|
|
57
|
+
config.startAudioMuted = 10;
|
|
58
|
+
config.startWithAudioMuted = false;
|
|
59
|
+
config.startSilent = false;
|
|
60
|
+
config.enableOpusRed = false;
|
|
61
|
+
config.disableAudioLevels = false;
|
|
62
|
+
config.enableNoisyMicDetection = true;
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
// Peer-to-Peer options.
|
|
66
|
+
//
|
|
67
|
+
|
|
68
|
+
if (!config.hasOwnProperty('p2p')) config.p2p = {};
|
|
69
|
+
|
|
70
|
+
config.p2p.enabled = true;
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
// Breakout Rooms
|
|
74
|
+
//
|
|
75
|
+
|
|
76
|
+
config.hideAddRoomButton = false;
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
// Etherpad
|
|
80
|
+
//
|
|
81
|
+
|
|
82
|
+
// Recording.
|
|
83
|
+
//
|
|
84
|
+
|
|
85
|
+
// Local recording configuration.
|
|
86
|
+
if (!config.hasOwnProperty('localRecording')) config.localRecording = {};
|
|
87
|
+
config.localRecording.disable = false;
|
|
88
|
+
config.localRecording.notifyAllParticipants = false;
|
|
89
|
+
config.localRecording.disableSelfRecording = false;
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
// Analytics.
|
|
93
|
+
//
|
|
94
|
+
|
|
95
|
+
if (!config.hasOwnProperty('analytics')) config.analytics = {};
|
|
96
|
+
|
|
97
|
+
// Enables callstatsUsername to be reported as statsId and used
|
|
98
|
+
// by callstats as repoted remote id.
|
|
99
|
+
config.enableStatsID = false;
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
// Dial in/out services.
|
|
103
|
+
//
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
// Calendar service integration.
|
|
107
|
+
//
|
|
108
|
+
|
|
109
|
+
config.enableCalendarIntegration = false;
|
|
110
|
+
|
|
111
|
+
// Invitation service.
|
|
112
|
+
//
|
|
113
|
+
|
|
114
|
+
// Miscellaneous.
|
|
115
|
+
//
|
|
116
|
+
|
|
117
|
+
// Prejoin page.
|
|
118
|
+
if (!config.hasOwnProperty('prejoinConfig')) config.prejoinConfig = {};
|
|
119
|
+
config.prejoinConfig.enabled = true;
|
|
120
|
+
|
|
121
|
+
// Hides the participant name editing field in the prejoin screen.
|
|
122
|
+
config.prejoinConfig.hideDisplayName = false;
|
|
123
|
+
|
|
124
|
+
// List of buttons to hide from the extra join options dropdown on prejoin screen.
|
|
125
|
+
// Welcome page.
|
|
126
|
+
config.enableWelcomePage = true;
|
|
127
|
+
|
|
128
|
+
// Close page.
|
|
129
|
+
config.enableClosePage = false;
|
|
130
|
+
|
|
131
|
+
// Default language.
|
|
132
|
+
// Require users to always specify a display name.
|
|
133
|
+
config.requireDisplayName = false;
|
|
134
|
+
|
|
135
|
+
// Chrome extension banner.
|
|
136
|
+
// Disables profile and the edit of all fields from the profile settings (display name and email)
|
|
137
|
+
config.disableProfile = false;
|
|
138
|
+
|
|
139
|
+
// Room password (false for anything, number for max digits)
|
|
140
|
+
config.roomPasswordNumberOfDigits = false;
|
|
141
|
+
// Advanced.
|
|
142
|
+
//
|
|
143
|
+
|
|
144
|
+
// Lipsync hack in jicofo, may not be safe.
|
|
145
|
+
config.enableLipSync = false;
|
|
146
|
+
|
|
147
|
+
config.enableRemb = true;
|
|
148
|
+
config.enableTcc = true;
|
|
149
|
+
|
|
150
|
+
// Enable IPv6 support.
|
|
151
|
+
config.useIPv6 = true;
|
|
152
|
+
|
|
153
|
+
// Transcriptions (subtitles and buttons can be configured in interface_config)
|
|
154
|
+
config.transcription = { enabled: false };
|
|
155
|
+
config.transcription.translationLanguages = [];
|
|
156
|
+
config.transcription.translationLanguagesHead = ['en'];
|
|
157
|
+
config.transcription.useAppLanguage = true;
|
|
158
|
+
config.transcription.preferredLanguage = 'en-US';
|
|
159
|
+
config.transcription.disableStartForAll = false;
|
|
160
|
+
config.transcription.autoCaptionOnRecord = false;
|
|
161
|
+
|
|
162
|
+
// Deployment information.
|
|
163
|
+
//
|
|
164
|
+
|
|
165
|
+
if (!config.hasOwnProperty('deploymentInfo')) config.deploymentInfo = {};
|
|
166
|
+
|
|
167
|
+
// Testing
|
|
168
|
+
//
|
|
169
|
+
|
|
170
|
+
if (!config.hasOwnProperty('testing')) config.testing = {};
|
|
171
|
+
if (!config.testing.hasOwnProperty('octo')) config.testing.octo = {};
|
|
172
|
+
|
|
173
|
+
config.testing.capScreenshareBitrate = 1;
|
|
174
|
+
config.testing.octo.probability = 0;
|
|
175
|
+
|
|
176
|
+
// Deep Linking
|
|
177
|
+
config.disableDeepLinking = false;
|
|
178
|
+
|
|
179
|
+
// P2P preferred codec
|
|
180
|
+
// Enable preferred video Codec
|
|
181
|
+
if (!config.hasOwnProperty('videoQuality')) config.videoQuality = {};
|
|
182
|
+
config.videoQuality.enforcePreferredCodec = false;
|
|
183
|
+
|
|
184
|
+
if (!config.videoQuality.hasOwnProperty('maxBitratesVideo')) config.videoQuality.maxBitratesVideo = null;
|
|
185
|
+
// Reactions
|
|
186
|
+
config.disableReactions = false;
|
|
187
|
+
|
|
188
|
+
// Polls
|
|
189
|
+
config.disablePolls = false;
|
|
190
|
+
|
|
191
|
+
// Configure toolbar buttons
|
|
192
|
+
// Hides the buttons at pre-join screen
|
|
193
|
+
// Configure remote participant video menu
|
|
194
|
+
if (!config.hasOwnProperty('remoteVideoMenu')) config.remoteVideoMenu = {};
|
|
195
|
+
config.remoteVideoMenu.disabled = false;
|
|
196
|
+
config.remoteVideoMenu.disableKick = false;
|
|
197
|
+
config.remoteVideoMenu.disableGrantModerator = false;
|
|
198
|
+
config.remoteVideoMenu.disablePrivateChat = false;
|
|
199
|
+
|
|
200
|
+
// Configure e2eping
|
|
201
|
+
if (!config.hasOwnProperty('e2eping')) config.e2eping = {};
|
|
202
|
+
config.e2eping.enabled = false;
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
// Settings for the Excalidraw whiteboard integration.
|
|
206
|
+
if (!config.hasOwnProperty('whiteboard')) config.whiteboard = {};
|
|
207
|
+
config.whiteboard.enabled = false;
|
|
208
|
+
config.whiteboard.collabServerBaseUrl = '';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
server {
|
|
2
|
+
listen 80 default_server;
|
|
3
|
+
|
|
4
|
+
{{ if .Env.ENABLE_IPV6 | default "1" | toBool }}
|
|
5
|
+
listen [::]:80 default_server;
|
|
6
|
+
{{ end }}
|
|
7
|
+
|
|
8
|
+
{{ if .Env.ENABLE_HTTP_REDIRECT | default "0" | toBool }}
|
|
9
|
+
return 301 https://$host$request_uri;
|
|
10
|
+
{{ else }}
|
|
11
|
+
include /config/nginx/meet.conf;
|
|
12
|
+
{{ end }}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
{{ if not (.Env.DISABLE_HTTPS | default "0" | toBool) }}
|
|
16
|
+
server {
|
|
17
|
+
listen 443 ssl http2;
|
|
18
|
+
|
|
19
|
+
{{ if .Env.ENABLE_IPV6 | default "1" | toBool }}
|
|
20
|
+
listen [::]:443 ssl http2;
|
|
21
|
+
{{ end }}
|
|
22
|
+
|
|
23
|
+
include /config/nginx/ssl.conf;
|
|
24
|
+
include /config/nginx/meet.conf;
|
|
25
|
+
}
|
|
26
|
+
{{ end }}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
-----BEGIN DH PARAMETERS-----
|
|
2
|
+
MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz
|
|
3
|
+
+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a
|
|
4
|
+
87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7
|
|
5
|
+
YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi
|
|
6
|
+
7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD
|
|
7
|
+
ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==
|
|
8
|
+
-----END DH PARAMETERS-----
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/* eslint-disable no-unused-vars, no-var, max-len */
|
|
2
|
+
/* eslint sort-keys: ["error", "asc", {"caseSensitive": false}] */
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* !!!IMPORTANT!!!
|
|
6
|
+
*
|
|
7
|
+
* This file is considered deprecated. All options will eventually be moved to
|
|
8
|
+
* config.js, and no new options should be added here.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
var interfaceConfig = {
|
|
12
|
+
APP_NAME: 'Jitsi Meet',
|
|
13
|
+
AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)',
|
|
14
|
+
AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)',
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A UX mode where the last screen share participant is automatically
|
|
18
|
+
* pinned. Valid values are the string "remote-only" so remote participants
|
|
19
|
+
* get pinned but not local, otherwise any truthy value for all participants,
|
|
20
|
+
* and any falsy value to disable the feature.
|
|
21
|
+
*
|
|
22
|
+
* Note: this mode is experimental and subject to breakage.
|
|
23
|
+
*/
|
|
24
|
+
AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only',
|
|
25
|
+
BRAND_WATERMARK_LINK: '',
|
|
26
|
+
|
|
27
|
+
CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it
|
|
28
|
+
|
|
29
|
+
DEFAULT_BACKGROUND: '#040404',
|
|
30
|
+
DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg',
|
|
31
|
+
|
|
32
|
+
DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* If true, notifications regarding joining/leaving are no longer displayed.
|
|
36
|
+
*/
|
|
37
|
+
DISABLE_JOIN_LEAVE_NOTIFICATIONS: false,
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* If true, presence status: busy, calling, connected etc. is not displayed.
|
|
41
|
+
*/
|
|
42
|
+
DISABLE_PRESENCE_STATUS: false,
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Whether the ringing sound in the call/ring overlay is disabled. If
|
|
46
|
+
* {@code undefined}, defaults to {@code false}.
|
|
47
|
+
*
|
|
48
|
+
* @type {boolean}
|
|
49
|
+
*/
|
|
50
|
+
DISABLE_RINGING: false,
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Whether the speech to text transcription subtitles panel is disabled.
|
|
54
|
+
* If {@code undefined}, defaults to {@code false}.
|
|
55
|
+
*
|
|
56
|
+
* @type {boolean}
|
|
57
|
+
*/
|
|
58
|
+
DISABLE_TRANSCRIPTION_SUBTITLES: false,
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Whether or not the blurred video background for large video should be
|
|
62
|
+
* displayed on browsers that can support it.
|
|
63
|
+
*/
|
|
64
|
+
DISABLE_VIDEO_BACKGROUND: false,
|
|
65
|
+
|
|
66
|
+
DISPLAY_WELCOME_FOOTER: true,
|
|
67
|
+
DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: false,
|
|
68
|
+
DISPLAY_WELCOME_PAGE_CONTENT: false,
|
|
69
|
+
DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false,
|
|
70
|
+
|
|
71
|
+
ENABLE_DIAL_OUT: true,
|
|
72
|
+
|
|
73
|
+
// DEPRECATED. Animation no longer supported.
|
|
74
|
+
// ENABLE_FEEDBACK_ANIMATION: false,
|
|
75
|
+
|
|
76
|
+
FILM_STRIP_MAX_HEIGHT: 120,
|
|
77
|
+
|
|
78
|
+
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Hide the invite prompt in the header when alone in the meeting.
|
|
82
|
+
*/
|
|
83
|
+
HIDE_INVITE_MORE_HEADER: false,
|
|
84
|
+
|
|
85
|
+
JITSI_WATERMARK_LINK: 'https://jitsi.org',
|
|
86
|
+
|
|
87
|
+
LANG_DETECTION: true, // Allow i18n to detect the system language
|
|
88
|
+
LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Maximum coefficient of the ratio of the large video to the visible area
|
|
92
|
+
* after the large video is scaled to fit the window.
|
|
93
|
+
*
|
|
94
|
+
* @type {number}
|
|
95
|
+
*/
|
|
96
|
+
MAXIMUM_ZOOMING_COEFFICIENT: 1.3,
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Whether the mobile app Jitsi Meet is to be promoted to participants
|
|
100
|
+
* attempting to join a conference in a mobile Web browser. If
|
|
101
|
+
* {@code undefined}, defaults to {@code true}.
|
|
102
|
+
*
|
|
103
|
+
* @type {boolean}
|
|
104
|
+
*/
|
|
105
|
+
MOBILE_APP_PROMO: true,
|
|
106
|
+
|
|
107
|
+
// Names of browsers which should show a warning stating the current browser
|
|
108
|
+
// has a suboptimal experience. Browsers which are not listed as optimal or
|
|
109
|
+
// unsupported are considered suboptimal. Valid values are:
|
|
110
|
+
// chrome, chromium, edge, electron, firefox, nwjs, opera, safari
|
|
111
|
+
OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'nwjs', 'electron', 'safari' ],
|
|
112
|
+
|
|
113
|
+
POLICY_LOGO: null,
|
|
114
|
+
PROVIDER_NAME: 'Jitsi',
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* If true, will display recent list
|
|
118
|
+
*
|
|
119
|
+
* @type {boolean}
|
|
120
|
+
*/
|
|
121
|
+
RECENT_LIST_ENABLED: true,
|
|
122
|
+
REMOTE_THUMBNAIL_RATIO: 1, // 1:1
|
|
123
|
+
|
|
124
|
+
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds', 'more' ],
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Specify which sharing features should be displayed. If the value is not set
|
|
128
|
+
* all sharing features will be shown. You can set [] to disable all.
|
|
129
|
+
*/
|
|
130
|
+
// SHARING_FEATURES: ['email', 'url', 'dial-in', 'embed'],
|
|
131
|
+
|
|
132
|
+
SHOW_BRAND_WATERMARK: false,
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Decides whether the chrome extension banner should be rendered on the landing page and during the meeting.
|
|
136
|
+
* If this is set to false, the banner will not be rendered at all. If set to true, the check for extension(s)
|
|
137
|
+
* being already installed is done before rendering.
|
|
138
|
+
*/
|
|
139
|
+
SHOW_CHROME_EXTENSION_BANNER: false,
|
|
140
|
+
|
|
141
|
+
SHOW_JITSI_WATERMARK: true,
|
|
142
|
+
SHOW_POWERED_BY: false,
|
|
143
|
+
SHOW_PROMOTIONAL_CLOSE_PAGE: false,
|
|
144
|
+
|
|
145
|
+
/*
|
|
146
|
+
* If indicated some of the error dialogs may point to the support URL for
|
|
147
|
+
* help.
|
|
148
|
+
*/
|
|
149
|
+
SUPPORT_URL: 'https://community.jitsi.org/',
|
|
150
|
+
|
|
151
|
+
// Browsers, in addition to those which do not fully support WebRTC, that
|
|
152
|
+
// are not supported and should show the unsupported browser page.
|
|
153
|
+
UNSUPPORTED_BROWSERS: [],
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Whether to show thumbnails in filmstrip as a column instead of as a row.
|
|
157
|
+
*/
|
|
158
|
+
VERTICAL_FILMSTRIP: true,
|
|
159
|
+
|
|
160
|
+
// Determines how the video would fit the screen. 'both' would fit the whole
|
|
161
|
+
// screen, 'height' would fit the original video height to the height of the
|
|
162
|
+
// screen, 'width' would fit the original video width to the width of the
|
|
163
|
+
// screen respecting ratio, 'nocrop' would make the video as large as
|
|
164
|
+
// possible and preserve aspect ratio without cropping.
|
|
165
|
+
VIDEO_LAYOUT_FIT: 'both',
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* If true, hides the video quality label indicating the resolution status
|
|
169
|
+
* of the current large video.
|
|
170
|
+
*
|
|
171
|
+
* @type {boolean}
|
|
172
|
+
*/
|
|
173
|
+
VIDEO_QUALITY_LABEL_DISABLED: false,
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* How many columns the tile view can expand to. The respected range is
|
|
177
|
+
* between 1 and 5.
|
|
178
|
+
*/
|
|
179
|
+
// TILE_VIEW_MAX_COLUMNS: 5,
|
|
180
|
+
|
|
181
|
+
// List of undocumented settings
|
|
182
|
+
/**
|
|
183
|
+
INDICATOR_FONT_SIZES
|
|
184
|
+
PHONE_NUMBER_REGEX
|
|
185
|
+
*/
|
|
186
|
+
|
|
187
|
+
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Specify URL for downloading ios mobile app.
|
|
191
|
+
*/
|
|
192
|
+
// MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Specify custom URL for downloading android mobile app.
|
|
196
|
+
*/
|
|
197
|
+
// MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Specify mobile app scheme for opening the app from the mobile browser.
|
|
201
|
+
*/
|
|
202
|
+
// APP_SCHEME: 'org.jitsi.meet',
|
|
203
|
+
|
|
204
|
+
// NATIVE_APP_NAME: 'Jitsi Meet',
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Specify Firebase dynamic link properties for the mobile apps.
|
|
208
|
+
*/
|
|
209
|
+
// MOBILE_DYNAMIC_LINK: {
|
|
210
|
+
// APN: 'org.jitsi.meet',
|
|
211
|
+
// APP_CODE: 'w2atb',
|
|
212
|
+
// CUSTOM_DOMAIN: undefined,
|
|
213
|
+
// IBI: 'com.atlassian.JitsiMeet.ios',
|
|
214
|
+
// ISI: '1165103905'
|
|
215
|
+
// },
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Hide the logo on the deep linking pages.
|
|
219
|
+
*/
|
|
220
|
+
// HIDE_DEEP_LINKING_LOGO: false,
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Specify the Android app package name.
|
|
224
|
+
*/
|
|
225
|
+
// ANDROID_APP_PACKAGE: 'org.jitsi.meet',
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Specify custom URL for downloading f droid app.
|
|
229
|
+
*/
|
|
230
|
+
// MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/',
|
|
231
|
+
|
|
232
|
+
// Connection indicators (
|
|
233
|
+
// CONNECTION_INDICATOR_AUTO_HIDE_ENABLED,
|
|
234
|
+
// CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT,
|
|
235
|
+
// CONNECTION_INDICATOR_DISABLED) got moved to config.js.
|
|
236
|
+
|
|
237
|
+
// Please use disableModeratorIndicator from config.js
|
|
238
|
+
// DISABLE_FOCUS_INDICATOR: false,
|
|
239
|
+
|
|
240
|
+
// Please use defaultLocalDisplayName from config.js
|
|
241
|
+
// DEFAULT_LOCAL_DISPLAY_NAME: 'me',
|
|
242
|
+
|
|
243
|
+
// Please use defaultLogoUrl from config.js
|
|
244
|
+
// DEFAULT_LOGO_URL: 'images/watermark.svg',
|
|
245
|
+
|
|
246
|
+
// Please use defaultRemoteDisplayName from config.js
|
|
247
|
+
// DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
|
|
248
|
+
|
|
249
|
+
// Moved to config.js as `toolbarConfig.initialTimeout`.
|
|
250
|
+
// INITIAL_TOOLBAR_TIMEOUT: 20000,
|
|
251
|
+
|
|
252
|
+
// Please use `liveStreaming.helpLink` from config.js
|
|
253
|
+
// Documentation reference for the live streaming feature.
|
|
254
|
+
// LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live',
|
|
255
|
+
|
|
256
|
+
// Moved to config.js as `toolbarConfig.alwaysVisible`.
|
|
257
|
+
// TOOLBAR_ALWAYS_VISIBLE: false,
|
|
258
|
+
|
|
259
|
+
// This config was moved to config.js as `toolbarButtons`.
|
|
260
|
+
// TOOLBAR_BUTTONS: [],
|
|
261
|
+
|
|
262
|
+
// Moved to config.js as `toolbarConfig.timeout`.
|
|
263
|
+
// TOOLBAR_TIMEOUT: 4000,
|
|
264
|
+
|
|
265
|
+
// Allow all above example options to include a trailing comma and
|
|
266
|
+
// prevent fear when commenting out the last value.
|
|
267
|
+
// eslint-disable-next-line sort-keys
|
|
268
|
+
makeJsonParserHappy: 'even if last key had a trailing comma'
|
|
269
|
+
|
|
270
|
+
// No configuration value should follow this line.
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
/* eslint-enable no-unused-vars, no-var, max-len */
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
{{ $ENABLE_COLIBRI_WEBSOCKET := .Env.ENABLE_COLIBRI_WEBSOCKET | default "1" | toBool }}
|
|
2
|
+
{{ $COLIBRI_WEBSOCKET_PORT := .Env.COLIBRI_WEBSOCKET_PORT | default "9090" }}
|
|
3
|
+
{{ $ENABLE_JAAS_COMPONENTS := .Env.ENABLE_JAAS_COMPONENTS | default "0" | toBool }}
|
|
4
|
+
{{ $ENABLE_OCTO := .Env.ENABLE_OCTO | default "0" | toBool -}}
|
|
5
|
+
{{ $ENABLE_XMPP_WEBSOCKET := .Env.ENABLE_XMPP_WEBSOCKET | default "1" | toBool }}
|
|
6
|
+
{{ $ENABLE_SUBDOMAINS := .Env.ENABLE_SUBDOMAINS | default "true" | toBool -}}
|
|
7
|
+
{{ $XMPP_DOMAIN := .Env.XMPP_DOMAIN | default "meet.jitsi" -}}
|
|
8
|
+
{{ $XMPP_BOSH_URL_BASE := .Env.XMPP_BOSH_URL_BASE | default "http://xmpp.meet.jitsi:5280" -}}
|
|
9
|
+
|
|
10
|
+
server_name _;
|
|
11
|
+
|
|
12
|
+
charset utf8;
|
|
13
|
+
|
|
14
|
+
client_max_body_size 0;
|
|
15
|
+
|
|
16
|
+
root /usr/share/jitsi-meet;
|
|
17
|
+
|
|
18
|
+
# ssi on with javascript for multidomain variables in config.js
|
|
19
|
+
ssi on;
|
|
20
|
+
ssi_types application/x-javascript application/javascript;
|
|
21
|
+
|
|
22
|
+
index index.html index.htm;
|
|
23
|
+
error_page 404 /static/404.html;
|
|
24
|
+
|
|
25
|
+
# Security headers
|
|
26
|
+
add_header X-Content-Type-Options nosniff;
|
|
27
|
+
add_header X-XSS-Protection "1; mode=block";
|
|
28
|
+
|
|
29
|
+
set $prefix "";
|
|
30
|
+
|
|
31
|
+
{{ if .Env.DEPLOYMENTINFO_SHARD }}
|
|
32
|
+
add_header X-Jitsi-Shard {{ .Env.DEPLOYMENTINFO_SHARD }};
|
|
33
|
+
{{ end }}
|
|
34
|
+
|
|
35
|
+
# Opt out of FLoC (deprecated)
|
|
36
|
+
add_header Permissions-Policy "interest-cohort=()";
|
|
37
|
+
|
|
38
|
+
location = /config.js {
|
|
39
|
+
alias /config/config.js;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
location = /interface_config.js {
|
|
43
|
+
alias /config/interface_config.js;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
location = /external_api.js {
|
|
47
|
+
alias /usr/share/jitsi-meet/libs/external_api.min.js;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
{{ if $ENABLE_JAAS_COMPONENTS }}
|
|
51
|
+
location = /_api/room-info {
|
|
52
|
+
proxy_pass {{ $XMPP_BOSH_URL_BASE }}/room-info?prefix=$prefix&$args;
|
|
53
|
+
proxy_http_version 1.1;
|
|
54
|
+
proxy_set_header X-Forwarded-For $remote_addr;
|
|
55
|
+
proxy_set_header Host $http_host;
|
|
56
|
+
}
|
|
57
|
+
{{ end }}
|
|
58
|
+
|
|
59
|
+
# ensure all static content can always be found first
|
|
60
|
+
location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$ {
|
|
61
|
+
add_header 'Access-Control-Allow-Origin' '*';
|
|
62
|
+
alias /usr/share/jitsi-meet/$1/$2;
|
|
63
|
+
|
|
64
|
+
# cache all versioned files
|
|
65
|
+
if ($arg_v) {
|
|
66
|
+
expires 1y;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
{{ if $ENABLE_COLIBRI_WEBSOCKET }}
|
|
71
|
+
# colibri (JVB) websockets
|
|
72
|
+
location ~ ^/colibri-ws/([a-zA-Z0-9-\._]+)/(.*) {
|
|
73
|
+
tcp_nodelay on;
|
|
74
|
+
|
|
75
|
+
proxy_http_version 1.1;
|
|
76
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
77
|
+
proxy_set_header Connection $connection_upgrade;
|
|
78
|
+
|
|
79
|
+
proxy_pass http://$1:{{ $COLIBRI_WEBSOCKET_PORT }}/colibri-ws/$1/$2$is_args$args;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
{{ if $ENABLE_OCTO }}
|
|
83
|
+
# colibri (JVB) Relay to Relay websockets
|
|
84
|
+
location ~ ^/colibri-relay-ws/([a-zA-Z0-9-\._]+)/(.*) {
|
|
85
|
+
tcp_nodelay on;
|
|
86
|
+
|
|
87
|
+
proxy_http_version 1.1;
|
|
88
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
89
|
+
proxy_set_header Connection $connection_upgrade;
|
|
90
|
+
|
|
91
|
+
proxy_pass http://$1:{{ $COLIBRI_WEBSOCKET_PORT }}/colibri-relay-ws/$1/$2$is_args$args;
|
|
92
|
+
}
|
|
93
|
+
{{ end }}
|
|
94
|
+
{{ end }}
|
|
95
|
+
|
|
96
|
+
# BOSH
|
|
97
|
+
location = /http-bind {
|
|
98
|
+
proxy_set_header X-Forwarded-For $remote_addr;
|
|
99
|
+
proxy_set_header Host {{ $XMPP_DOMAIN }};
|
|
100
|
+
|
|
101
|
+
proxy_pass {{ $XMPP_BOSH_URL_BASE }}/http-bind?prefix=$prefix&$args;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
{{ if $ENABLE_XMPP_WEBSOCKET }}
|
|
105
|
+
# xmpp websockets
|
|
106
|
+
location = /xmpp-websocket {
|
|
107
|
+
tcp_nodelay on;
|
|
108
|
+
|
|
109
|
+
proxy_http_version 1.1;
|
|
110
|
+
proxy_set_header Connection $connection_upgrade;
|
|
111
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
112
|
+
proxy_set_header Host {{ $XMPP_DOMAIN }};
|
|
113
|
+
proxy_set_header X-Forwarded-For $remote_addr;
|
|
114
|
+
|
|
115
|
+
proxy_pass {{ $XMPP_BOSH_URL_BASE }}/xmpp-websocket?prefix=$prefix&$args;
|
|
116
|
+
}
|
|
117
|
+
{{ end }}
|
|
118
|
+
|
|
119
|
+
{{ if .Env.ETHERPAD_URL_BASE }}
|
|
120
|
+
# Etherpad-lite
|
|
121
|
+
location ^~ /etherpad/ {
|
|
122
|
+
proxy_buffering off;
|
|
123
|
+
proxy_cache_bypass $http_upgrade;
|
|
124
|
+
|
|
125
|
+
proxy_http_version 1.1;
|
|
126
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
127
|
+
proxy_set_header Connection "upgrade";
|
|
128
|
+
proxy_set_header X-Forwarded-For $remote_addr;
|
|
129
|
+
|
|
130
|
+
proxy_pass {{ .Env.ETHERPAD_URL_BASE }}/;
|
|
131
|
+
}
|
|
132
|
+
{{ end }}
|
|
133
|
+
|
|
134
|
+
location ~ ^/([^/?&:'"]+)$ {
|
|
135
|
+
try_files $uri @root_path;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
location @root_path {
|
|
139
|
+
rewrite ^/(.*)$ / break;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
{{ if $ENABLE_SUBDOMAINS }}
|
|
143
|
+
# Matches /(TENANT)/pwa-worker.js or /(TENANT)/manifest.json to rewrite to / and look for file
|
|
144
|
+
location ~ ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ {
|
|
145
|
+
set $subdomain "$1.";
|
|
146
|
+
set $subdir "$1/";
|
|
147
|
+
rewrite ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ /$2;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
location ~ ^/([^/?&:'"]+)/config.js$ {
|
|
151
|
+
set $subdomain "$1.";
|
|
152
|
+
set $subdir "$1/";
|
|
153
|
+
|
|
154
|
+
alias /config/config.js;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
# BOSH for subdomains
|
|
158
|
+
location ~ ^/([^/?&:'"]+)/http-bind {
|
|
159
|
+
set $subdomain "$1.";
|
|
160
|
+
set $subdir "$1/";
|
|
161
|
+
set $prefix "$1";
|
|
162
|
+
|
|
163
|
+
rewrite ^/(.*)$ /http-bind;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
{{ if $ENABLE_XMPP_WEBSOCKET }}
|
|
167
|
+
# websockets for subdomains
|
|
168
|
+
location ~ ^/([^/?&:'"]+)/xmpp-websocket {
|
|
169
|
+
set $subdomain "$1.";
|
|
170
|
+
set $subdir "$1/";
|
|
171
|
+
set $prefix "$1";
|
|
172
|
+
|
|
173
|
+
rewrite ^/(.*)$ /xmpp-websocket;
|
|
174
|
+
}
|
|
175
|
+
{{ end }}
|
|
176
|
+
|
|
177
|
+
{{ if $ENABLE_JAAS_COMPONENTS }}
|
|
178
|
+
location ~ ^/([^/?&:'"]+)/_api/room-info {
|
|
179
|
+
set $subdomain "$1.";
|
|
180
|
+
set $subdir "$1/";
|
|
181
|
+
set $prefix "$1";
|
|
182
|
+
|
|
183
|
+
rewrite ^/(.*)$ /_api/room-info;
|
|
184
|
+
}
|
|
185
|
+
{{ end }}
|
|
186
|
+
|
|
187
|
+
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
|
|
188
|
+
location ~ ^/([^/?&:'"]+)/(.*)$ {
|
|
189
|
+
set $subdomain "$1.";
|
|
190
|
+
set $subdir "$1/";
|
|
191
|
+
rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
|
|
192
|
+
}
|
|
193
|
+
{{ end }}
|