fa9aca784d
We are currently running an all in one jitsi meet service at meetpad.opendev.org due to connectivity issues for colibri websockets to the jvb servers. Before we open these up we need to configure the http server for websockets on the jvbs to do tls as they are on different hosts. Note it isn't entirely clear yet if a randomly generated keystore is sufficient for the needs of the jvb colibri websocket system. If not we may need to convert an LE provisioned cert and key pair into a keystore. Change-Id: Ifbca19f1c112e30ee45975112863fc808db39fc9
172 lines
4.4 KiB
Plaintext
172 lines
4.4 KiB
Plaintext
# Unchanged copy of
|
|
# https://github.com/jitsi/docker-jitsi-meet/blob/stable-7648-4/web/rootfs/defaults/meet.conf
|
|
# Licensed under the ASL v2.
|
|
|
|
{{ $ENABLE_COLIBRI_WEBSOCKET := .Env.ENABLE_COLIBRI_WEBSOCKET | default "1" | toBool }}
|
|
{{ $ENABLE_JAAS_COMPONENTS := .Env.ENABLE_JAAS_COMPONENTS | default "0" | toBool }}
|
|
{{ $ENABLE_XMPP_WEBSOCKET := .Env.ENABLE_XMPP_WEBSOCKET | default "1" | toBool }}
|
|
{{ $ENABLE_SUBDOMAINS := .Env.ENABLE_SUBDOMAINS | default "true" | toBool -}}
|
|
{{ $XMPP_DOMAIN := .Env.XMPP_DOMAIN | default "meet.jitsi" -}}
|
|
{{ $XMPP_BOSH_URL_BASE := .Env.XMPP_BOSH_URL_BASE | default "http://xmpp.meet.jitsi:5280" -}}
|
|
|
|
server_name _;
|
|
|
|
client_max_body_size 0;
|
|
|
|
root /usr/share/jitsi-meet;
|
|
|
|
# ssi on with javascript for multidomain variables in config.js
|
|
ssi on;
|
|
ssi_types application/x-javascript application/javascript;
|
|
|
|
index index.html index.htm;
|
|
error_page 404 /static/404.html;
|
|
|
|
# Security headers
|
|
add_header X-Content-Type-Options nosniff;
|
|
add_header X-XSS-Protection "1; mode=block";
|
|
|
|
{{ if .Env.DEPLOYMENTINFO_SHARD }}
|
|
add_header X-Jitsi-Shard {{ .Env.DEPLOYMENTINFO_SHARD }};
|
|
{{ end }}
|
|
|
|
# Opt out of FLoC (deprecated)
|
|
add_header Permissions-Policy "interest-cohort=()";
|
|
|
|
location = /config.js {
|
|
alias /config/config.js;
|
|
}
|
|
|
|
location = /interface_config.js {
|
|
alias /config/interface_config.js;
|
|
}
|
|
|
|
location = /external_api.js {
|
|
alias /usr/share/jitsi-meet/libs/external_api.min.js;
|
|
}
|
|
|
|
{{ if $ENABLE_JAAS_COMPONENTS }}
|
|
location = /_api/room-info {
|
|
proxy_pass {{ $XMPP_BOSH_URL_BASE }}/room-info?prefix=$prefix&$args;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header X-Forwarded-For $remote_addr;
|
|
proxy_set_header Host $http_host;
|
|
}
|
|
{{ end }}
|
|
|
|
# ensure all static content can always be found first
|
|
location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$ {
|
|
add_header 'Access-Control-Allow-Origin' '*';
|
|
alias /usr/share/jitsi-meet/$1/$2;
|
|
|
|
# cache all versioned files
|
|
if ($arg_v) {
|
|
expires 1y;
|
|
}
|
|
}
|
|
|
|
{{ if $ENABLE_COLIBRI_WEBSOCKET }}
|
|
# colibri (JVB) websockets
|
|
location ~ ^/colibri-ws/([a-zA-Z0-9-\._]+)/(.*) {
|
|
tcp_nodelay on;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection $connection_upgrade;
|
|
|
|
proxy_pass https://$1:9090/colibri-ws/$1/$2$is_args$args;
|
|
}
|
|
{{ end }}
|
|
|
|
# BOSH
|
|
location = /http-bind {
|
|
proxy_set_header X-Forwarded-For $remote_addr;
|
|
proxy_set_header Host {{ $XMPP_DOMAIN }};
|
|
|
|
proxy_pass {{ $XMPP_BOSH_URL_BASE }}/http-bind;
|
|
}
|
|
|
|
{{ if $ENABLE_XMPP_WEBSOCKET }}
|
|
# xmpp websockets
|
|
location = /xmpp-websocket {
|
|
tcp_nodelay on;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Connection $connection_upgrade;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Host {{ $XMPP_DOMAIN }};
|
|
proxy_set_header X-Forwarded-For $remote_addr;
|
|
|
|
proxy_pass {{ $XMPP_BOSH_URL_BASE }}/xmpp-websocket;
|
|
}
|
|
{{ end }}
|
|
|
|
{{ if .Env.ETHERPAD_URL_BASE }}
|
|
# Etherpad-lite
|
|
location ^~ /etherpad/ {
|
|
proxy_buffering off;
|
|
proxy_cache_bypass $http_upgrade;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header X-Forwarded-For $remote_addr;
|
|
|
|
proxy_pass {{ .Env.ETHERPAD_URL_BASE }}/;
|
|
}
|
|
{{ end }}
|
|
|
|
location ~ ^/([^/?&:'"]+)$ {
|
|
try_files $uri @root_path;
|
|
}
|
|
|
|
location @root_path {
|
|
rewrite ^/(.*)$ / break;
|
|
}
|
|
|
|
{{ if $ENABLE_SUBDOMAINS }}
|
|
location ~ ^/([^/?&:'"]+)/config.js$ {
|
|
set $subdomain "$1.";
|
|
set $subdir "$1/";
|
|
|
|
alias /config/config.js;
|
|
}
|
|
|
|
# BOSH for subdomains
|
|
location ~ ^/([^/?&:'"]+)/http-bind {
|
|
set $subdomain "$1.";
|
|
set $subdir "$1/";
|
|
set $prefix "$1";
|
|
|
|
rewrite ^/(.*)$ /http-bind;
|
|
}
|
|
|
|
{{ if $ENABLE_XMPP_WEBSOCKET }}
|
|
# websockets for subdomains
|
|
location ~ ^/([^/?&:'"]+)/xmpp-websocket {
|
|
set $subdomain "$1.";
|
|
set $subdir "$1/";
|
|
set $prefix "$1";
|
|
|
|
rewrite ^/(.*)$ /xmpp-websocket;
|
|
}
|
|
{{ end }}
|
|
|
|
{{ if $ENABLE_JAAS_COMPONENTS }}
|
|
location ~ ^/([^/?&:'"]+)/_api/room-info {
|
|
set $subdomain "$1.";
|
|
set $subdir "$1/";
|
|
set $prefix "$1";
|
|
|
|
rewrite ^/(.*)$ /_api/room-info;
|
|
}
|
|
{{ end }}
|
|
|
|
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
|
|
location ~ ^/([^/?&:'"]+)/(.*)$ {
|
|
set $subdomain "$1.";
|
|
set $subdir "$1/";
|
|
rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
|
|
}
|
|
{{ end }}
|