@drumee/setup-infra 1.0.27 → 1.0.29
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/bin/init-private +40 -0
- package/bin/set-jitsi-conf +14 -0
- package/index.js +2 -1
- package/package.json +1 -1
- package/template.js +453 -0
- package/templates/etc/bind/named.conf.private +21 -0
- package/templates/etc/bind/named.conf.public +21 -0
- package/templates/etc/drumee/conf.d/conference.json.tpl +9 -0
- package/templates/etc/drumee/dnsapi.sh.tpl +28 -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 +153 -0
- package/templates/etc/drumee/infrastructure/routes/private.conf.tpl +1 -1
- package/templates/etc/drumee/infrastructure/routes/public.conf.tpl +1 -1
- package/templates/etc/jitsi/jicofo/jicofo.conf.tpl +46 -0
- package/templates/etc/jitsi/jicofo/sip-cmmunicator.properties +3 -0
- package/templates/etc/jitsi/meet.conf.tpl +132 -0
- package/templates/etc/jitsi/ssl.conf.tpl +25 -0
- package/templates/etc/jitsi/videobridge/jvb.conf +67 -0
- package/templates/etc/jitsi/web/config.js.tpl +208 -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/sites-enabled/jitsi.conf.tpl +28 -0
- package/templates/etc/nginx/sites-enabled/localhost.conf +31 -0
- package/templates/etc/nginx/sites-enabled/pivate.jitsi.conf.tpl +28 -0
- package/templates/etc/nginx/sites-enabled/private.conf.tpl +40 -0
- package/templates/etc/nginx/sites-enabled/public.conf.tpl +40 -0
- package/templates/etc/nginx/sites-enabled/public.jitsi.conf.tpl +28 -0
- package/templates/etc/prosody/conf.d/vhost.cfg.lua.tpl +162 -0
- package/templates/etc/turnserver.conf.tpl +46 -0
- package/templates/var/lib/bind/prvate.tpl +70 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# -------------------------------------------------------------
|
|
2
|
+
# ! DO NOT EDIT !
|
|
3
|
+
# Config file automatically generated by <setup-infra>
|
|
4
|
+
# Date : <%= date %>
|
|
5
|
+
# -------------------------------------------------------------
|
|
6
|
+
|
|
7
|
+
location / {
|
|
8
|
+
index /-/;
|
|
9
|
+
|
|
10
|
+
location ~ (.+)$ {
|
|
11
|
+
add_header Cache-Control max-age=31536000;
|
|
12
|
+
fastcgi_hide_header Set-Cookie;
|
|
13
|
+
add_header Access-Control-Allow-Origin <%= domain %>;
|
|
14
|
+
rewrite /(.+)$ <%= public_ui_root %>/svc/media.raw?p=/$1&d=inline;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# -------------------------------------------------------------
|
|
2
|
+
# ! DO NOT EDIT !
|
|
3
|
+
# Config file automatically generated by <setup-infra>
|
|
4
|
+
# Date : <%= date %>
|
|
5
|
+
# -------------------------------------------------------------
|
|
6
|
+
|
|
7
|
+
location / {
|
|
8
|
+
location ~ (.+)\.(.+)$ {
|
|
9
|
+
#expires 7d;
|
|
10
|
+
add_header Cache-Control max-age=31536000;
|
|
11
|
+
#add_header Vary "Accept-Encoding";
|
|
12
|
+
fastcgi_hide_header Set-Cookie;
|
|
13
|
+
add_header Access-Control-Allow-Origin <%= domain %>;
|
|
14
|
+
rewrite /(.+)$ <%= public_ui_root %>/service/?service=media.raw&p=$1&d=inline;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# -------------------------------------------------------------
|
|
2
|
+
# ! DO NOT EDIT !
|
|
3
|
+
# Config file automatically generated by <setup-infra>
|
|
4
|
+
# Date : <%= date %>
|
|
5
|
+
# -------------------------------------------------------------
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
location <%= location %>app/ {
|
|
9
|
+
alias <%= drumee_root %>/runtime/ui/<%= endpoint_name %>/app/;
|
|
10
|
+
add_header Cache-Control max-age=31536000;
|
|
11
|
+
add_header Access-Control-Allow-Origin <%= domain %>;
|
|
12
|
+
fastcgi_hide_header Set-Cookie;
|
|
13
|
+
break;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
# Frontend application assets
|
|
17
|
+
location <%= location %>api/ {
|
|
18
|
+
alias <%= drumee_root %>/runtime/ui/<%= endpoint_name %>/api/;
|
|
19
|
+
add_header Cache-Control max-age=31536000;
|
|
20
|
+
add_header Access-Control-Allow-Origin <%= domain %>;
|
|
21
|
+
fastcgi_hide_header Set-Cookie;
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
# Frontend application assets
|
|
26
|
+
location
|
|
27
|
+
plugins/ {
|
|
28
|
+
alias <%= drumee_root %>/runtime/ui/<%= endpoint_name %>/plugins/;
|
|
29
|
+
add_header Cache-Control max-age=31536000;
|
|
30
|
+
add_header Access-Control-Allow-Origin <%= domain %>;
|
|
31
|
+
fastcgi_hide_header Set-Cookie;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# Frontend application templates
|
|
37
|
+
location <%= location %>bb-templates/ {
|
|
38
|
+
alias <%= drumee_root %>/runtime/ui/<%= endpoint_name %>/bb-templates/;
|
|
39
|
+
add_header Cache-Control max-age=31536000;
|
|
40
|
+
add_header Access-Control-Allow-Origin *;
|
|
41
|
+
fastcgi_hide_header Set-Cookie;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
location <%= location %> {
|
|
47
|
+
fastcgi_hide_header Set-Cookie;
|
|
48
|
+
add_header Cache-Control max-age=31536000;
|
|
49
|
+
|
|
50
|
+
location ~ /(svc|vdo|service)/ {
|
|
51
|
+
proxy_pass http://127.0.0.1:<%= restPort %>;
|
|
52
|
+
proxy_http_version 1.1;
|
|
53
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
54
|
+
proxy_set_header Connection 'upgrade';
|
|
55
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
56
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
57
|
+
proxy_set_header X-Connecting-IP $remote_addr;
|
|
58
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
59
|
+
proxy_set_header Host $host;
|
|
60
|
+
proxy_set_header X-Forwarded-Port $server_port; # The port Nginx is listening on
|
|
61
|
+
proxy_set_header X-Original-Port $http_host;
|
|
62
|
+
add_header Vary "Accept-Encoding";
|
|
63
|
+
fastcgi_hide_header Set-Cookie;
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
location ~ /(ws|websocket)/ {
|
|
68
|
+
proxy_pass http://127.0.0.1:<%= pushPort %>;
|
|
69
|
+
proxy_http_version 1.1;
|
|
70
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
71
|
+
proxy_set_header Connection 'upgrade';
|
|
72
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
73
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
74
|
+
proxy_set_header X-Connecting-IP $remote_addr;
|
|
75
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
76
|
+
proxy_set_header Host $host;
|
|
77
|
+
proxy_set_header X-Forwarded-Port $server_port; # The port Nginx is listening on
|
|
78
|
+
proxy_set_header X-Original-Port $http_host;
|
|
79
|
+
add_header Vary "Accept-Encoding";
|
|
80
|
+
fastcgi_hide_header Set-Cookie;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
#------------ parts/apis ------------
|
|
85
|
+
location ~ /file/(.+)/(.*)$ {
|
|
86
|
+
fastcgi_hide_header Set-Cookie;
|
|
87
|
+
rewrite /file/(.+)/(.+)/(.+)\.(.*)$ /-/svc/media.$1?nid=$2&hub_id=$3 last;
|
|
88
|
+
rewrite /file/(.+)/(.+)/(.+)/(.*)$ /-/svc/media.$1?nid=$2&hub_id=$3 last;
|
|
89
|
+
rewrite /file/(.+)/(.+)/(.+)$ /-/svc/media.$1?nid=$2&hub_id=$3 last;
|
|
90
|
+
rewrite /file/(.+)/(.+)\.(.+)$ /-/svc/media.$1?nid=$2 last;
|
|
91
|
+
rewrite /file/(.+)/(.+)$ /-/svc/media.$1?nid=$2 last;
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
location ~ /doc/(.+)/(.*)$ {
|
|
97
|
+
add_header Cache-Control max-age=31536000;
|
|
98
|
+
fastcgi_hide_header Set-Cookie;
|
|
99
|
+
rewrite /doc/(.+)/(.+)/(.+)\.(.*)$ /-/svc/media.read?page=$1&nid=$2&hub_id=$3 last;
|
|
100
|
+
rewrite /doc/(.+)/(.+)/(.+)$ /-/svc/media.read?page=$1&nid=$2&hub_id=$3 last;
|
|
101
|
+
rewrite /doc/(.+)/(.+)\.(.+)$ /-/svc/media.read?page=$1&nid=$2 last;
|
|
102
|
+
rewrite /doc/(.+)/(.+)$ /-/svc/media.read?page=$1&nid=$2 last;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
location ~ /letc/(.+)$ {
|
|
107
|
+
add_header Cache-Control max-age=31536000;
|
|
108
|
+
fastcgi_hide_header Set-Cookie;
|
|
109
|
+
rewrite /letc/(.+)\@(.+)$ /-/svc/block.content?hashtag=$1&owner=$2 last;
|
|
110
|
+
rewrite /letc/(.+)/(.+)$ /-/svc/block.content?hashtag=$1&owner=$2 last;
|
|
111
|
+
rewrite /letc/(.+)$ /-/svc/block.content?hashtag=$1 last;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
location ~ /avatar/(.+)$ {
|
|
117
|
+
add_header Pragma public;
|
|
118
|
+
add_header Cache-Control max-age=31536000;
|
|
119
|
+
fastcgi_hide_header Set-Cookie;
|
|
120
|
+
add_header Access-Control-Allow-Origin <%= domain %>;
|
|
121
|
+
rewrite /avatar/(.+)$ /-/svc/yp.avatar?id=$1 last;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
location ~ (.+)\.(.+)$ {
|
|
126
|
+
fastcgi_hide_header Set-Cookie;
|
|
127
|
+
add_header Cache-Control max-age=31536000;
|
|
128
|
+
add_header Access-Control-Allow-Origin <%= domain %>;
|
|
129
|
+
rewrite /<%= endpoint_name %>/(.+)$ /-/svc/media.raw&p=$1&d=inline;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
#------------ parts/index ------------
|
|
135
|
+
location ~ (/|)$ {
|
|
136
|
+
proxy_pass http://127.0.0.1:<%= pushPort %>;
|
|
137
|
+
proxy_http_version 1.1;
|
|
138
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
139
|
+
proxy_set_header Connection 'upgrade';
|
|
140
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
141
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
142
|
+
proxy_set_header X-Connecting-IP $remote_addr;
|
|
143
|
+
proxy_set_header Host $host;
|
|
144
|
+
proxy_set_header X-Forwarded-Port $server_port; # The port Nginx is listening on
|
|
145
|
+
proxy_set_header X-Original-Port $http_host;
|
|
146
|
+
proxy_set_header Referer $http_referer;
|
|
147
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
148
|
+
add_header Access-Control-Allow-Credentials true;
|
|
149
|
+
add_header Vary "Accept-Encoding";
|
|
150
|
+
fastcgi_hide_header Set-Cookie;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
}
|
|
@@ -24,7 +24,7 @@ location <%= location %>api/ {
|
|
|
24
24
|
|
|
25
25
|
# Frontend application assets
|
|
26
26
|
location <%= location %>plugins/ {
|
|
27
|
-
alias <%=
|
|
27
|
+
alias <%= ui_plugins_home %>/;
|
|
28
28
|
add_header Cache-Control max-age=31536000;
|
|
29
29
|
add_header Access-Control-Allow-Origin <%= private_domain %>;
|
|
30
30
|
fastcgi_hide_header Set-Cookie;
|
|
@@ -24,7 +24,7 @@ location <%= location %>api/ {
|
|
|
24
24
|
|
|
25
25
|
# Frontend application assets
|
|
26
26
|
location <%= location %>plugins/ {
|
|
27
|
-
alias <%=
|
|
27
|
+
alias <%= ui_plugins_home %>/;
|
|
28
28
|
add_header Cache-Control max-age=31536000;
|
|
29
29
|
add_header Access-Control-Allow-Origin <%= public_domain %>;
|
|
30
30
|
fastcgi_hide_header Set-Cookie;
|
|
@@ -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,132 @@
|
|
|
1
|
+
server_name _;
|
|
2
|
+
|
|
3
|
+
charset utf8;
|
|
4
|
+
|
|
5
|
+
client_max_body_size 0;
|
|
6
|
+
|
|
7
|
+
# Disable direct access to jitsi UI
|
|
8
|
+
# root /usr/share/jitsi-meet;
|
|
9
|
+
root <%= static_dir %>;
|
|
10
|
+
|
|
11
|
+
# ssi on with javascript for multidomain variables in config.js
|
|
12
|
+
ssi on;
|
|
13
|
+
ssi_types application/x-javascript application/javascript;
|
|
14
|
+
|
|
15
|
+
index index.html index.htm;
|
|
16
|
+
error_page 404 /static/404.html;
|
|
17
|
+
|
|
18
|
+
# Security headers
|
|
19
|
+
add_header X-Content-Type-Options nosniff;
|
|
20
|
+
add_header X-XSS-Protection "1; mode=block";
|
|
21
|
+
|
|
22
|
+
set $prefix "";
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# Opt out of FLoC (deprecated)
|
|
26
|
+
add_header Permissions-Policy "interest-cohort=()";
|
|
27
|
+
|
|
28
|
+
location = /config.js {
|
|
29
|
+
alias /etc/jitsi/web/config.js;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
location = /interface_config.js {
|
|
33
|
+
alias /etc/jitsi/web/interface_config.js;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
location = /external_api.js {
|
|
37
|
+
alias /usr/share/jitsi-meet/libs/external_api.min.js;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# ensure all static content can always be found first
|
|
43
|
+
location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$ {
|
|
44
|
+
add_header 'Access-Control-Allow-Origin' '*';
|
|
45
|
+
alias /usr/share/jitsi-meet/$1/$2;
|
|
46
|
+
|
|
47
|
+
# cache all versioned files
|
|
48
|
+
if ($arg_v) {
|
|
49
|
+
expires 1y;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# colibri (JVB) websockets
|
|
55
|
+
location ~ ^/colibri-ws/([a-zA-Z0-9-\._]+)/(.*) {
|
|
56
|
+
tcp_nodelay on;
|
|
57
|
+
proxy_http_version 1.1;
|
|
58
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
59
|
+
proxy_set_header Connection $connection_upgrade;
|
|
60
|
+
proxy_pass http://$1:9090/colibri-ws/$1/$2$is_args$args;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# BOSH
|
|
65
|
+
location = /http-bind {
|
|
66
|
+
proxy_set_header X-Forwarded-For $remote_addr;
|
|
67
|
+
proxy_set_header Host <%= jitsi_domain %>;
|
|
68
|
+
proxy_pass http://127.0.0.1:5280/http-bind?prefix=$prefix&$args;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# xmpp websockets
|
|
73
|
+
location = /xmpp-websocket {
|
|
74
|
+
proxy_pass http://localhost:5280/xmpp-websocket;
|
|
75
|
+
proxy_http_version 1.1;
|
|
76
|
+
proxy_set_header Connection "upgrade";
|
|
77
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
78
|
+
proxy_set_header Host <%= jitsi_domain %>;
|
|
79
|
+
proxy_set_header X-Forwarded-For $remote_addr;
|
|
80
|
+
tcp_nodelay on;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
location ~ ^/([^/?&:'"]+)$ {
|
|
85
|
+
try_files $uri @root_path;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
location @root_path {
|
|
89
|
+
rewrite ^/(.*)$ / break;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# Matches /(TENANT)/pwa-worker.js or /(TENANT)/manifest.json to rewrite to / and look for file
|
|
94
|
+
location ~ ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ {
|
|
95
|
+
set $subdomain "$1.";
|
|
96
|
+
set $subdir "$1/";
|
|
97
|
+
rewrite ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ /$2;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
location ~ ^/([^/?&:'"]+)/config.js$ {
|
|
101
|
+
set $subdomain "$1.";
|
|
102
|
+
set $subdir "$1/";
|
|
103
|
+
|
|
104
|
+
alias /etc/jitsi/web/config.js;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
# BOSH for subdomains
|
|
108
|
+
location ~ ^/([^/?&:'"]+)/http-bind {
|
|
109
|
+
set $subdomain "$1.";
|
|
110
|
+
set $subdir "$1/";
|
|
111
|
+
set $prefix "$1";
|
|
112
|
+
|
|
113
|
+
rewrite ^/(.*)$ /http-bind;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
# websockets for subdomains
|
|
118
|
+
location ~ ^/([^/?&:'"]+)/xmpp-websocket {
|
|
119
|
+
set $subdomain "$1.";
|
|
120
|
+
set $subdir "$1/";
|
|
121
|
+
set $prefix "$1";
|
|
122
|
+
|
|
123
|
+
rewrite ^/(.*)$ /xmpp-websocket;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
|
|
128
|
+
location ~ ^/([^/?&:'"]+)/(.*)$ {
|
|
129
|
+
set $subdomain "$1.";
|
|
130
|
+
set $subdir "$1/";
|
|
131
|
+
rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
|
|
132
|
+
}
|
|
@@ -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,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,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 = '';
|