@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,162 @@
1
+ admins = {
2
+ "jigasi@auth.<%= jitsi_domain %>",
3
+ "jibri@auth.<%= jitsi_domain %>",
4
+ "focus@auth.<%= jitsi_domain %>",
5
+ "jvb@auth.<%= jitsi_domain %>"
6
+ }
7
+
8
+ unlimited_jids = {
9
+ "focus@auth.<%= jitsi_domain %>",
10
+ "jvb@auth.<%= jitsi_domain %>"
11
+ }
12
+
13
+ plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/", "/prosody-plugins-custom" }
14
+
15
+ muc_mapper_domain_base = "<%= jitsi_domain %>";
16
+ muc_mapper_domain_prefix = "muc";
17
+ http_default_host = "<%= jitsi_domain %>"
18
+ consider_bosh_secure = true;
19
+ consider_websocket_secure = true;
20
+
21
+ VirtualHost "<%= jitsi_domain %>"
22
+ authentication = "internal_hashed"
23
+ ssl = {
24
+ key = "<%= certs_dir %>/<%= jitsi_domain %>_ecc/<%= jitsi_domain %>.key";
25
+ certificate = "<%= certs_dir %>/<%= jitsi_domain %>_ecc/<%= jitsi_domain %>.cer";
26
+ }
27
+ modules_enabled = {
28
+ "bosh";
29
+ "websocket";
30
+ "smacks"; -- XEP-0198: Stream Management
31
+ "pubsub";
32
+ "ping";
33
+ "speakerstats";
34
+ "conference_duration";
35
+ "room_metadata";
36
+ "end_conference";
37
+ "muc_lobby_rooms";
38
+ "muc_breakout_rooms";
39
+ "av_moderation";
40
+ "turncredentials";
41
+ }
42
+ main_muc = "muc.<%= jitsi_domain %>"
43
+ lobby_muc = "lobby.<%= jitsi_domain %>"
44
+ breakout_rooms_muc = "breakout.<%= jitsi_domain %>"
45
+ speakerstats_component = "speakerstats.<%= jitsi_domain %>"
46
+ conference_duration_component = "conferenceduration.<%= jitsi_domain %>"
47
+ end_conference_component = "endconference.<%= jitsi_domain %>"
48
+ av_moderation_component = "avmoderation.<%= jitsi_domain %>"
49
+ turncredentials_secret = "<%= turn_sercret %>"
50
+ c2s_require_encryption = false
51
+
52
+
53
+ VirtualHost "guest.<%= jitsi_domain %>"
54
+ authentication = "anonymous"
55
+ ssl = {
56
+ key = "/usr/share/acme/certs/jit.drumee.io_ecc/jit.drumee.io.key";
57
+ certificate = "/usr/share/acme/certs/jit.drumee.io_ecc/jit.drumee.io.cer";
58
+ }
59
+ modules_enabled = {
60
+ "bosh";
61
+ "websocket";
62
+ "smacks"; -- XEP-0198: Stream Management
63
+ "pubsub";
64
+ "ping";
65
+ "speakerstats";
66
+ "conference_duration";
67
+ "room_metadata";
68
+ "end_conference";
69
+ "muc_lobby_rooms";
70
+ "muc_breakout_rooms";
71
+ "av_moderation";
72
+ "turncredentials";
73
+ }
74
+ main_muc = "muc.jit.drumee.io"
75
+ lobby_muc = "lobby.jit.drumee.io"
76
+ breakout_rooms_muc = "breakout.jit.drumee.io"
77
+ speakerstats_component = "speakerstats.jit.drumee.io"
78
+ conference_duration_component = "conferenceduration.jit.drumee.io"
79
+ end_conference_component = "endconference.jit.drumee.io"
80
+ av_moderation_component = "avmoderation.jit.drumee.io"
81
+ turncredentials_secret = "<%= turn_sercret %>"
82
+ c2s_require_encryption = false
83
+
84
+
85
+ VirtualHost "auth.<%= jitsi_domain %>"
86
+ ssl = {
87
+ key = "<%= certs_dir %>/<%= jitsi_domain %>_ecc/<%= jitsi_domain %>.key";
88
+ certificate = "<%= certs_dir %>/<%= jitsi_domain %>_ecc/fullchain.cer";
89
+ }
90
+ modules_enabled = {
91
+ "limits_exception";
92
+ }
93
+ authentication = "internal_hashed"
94
+
95
+
96
+
97
+ Component "internal-muc.<%= jitsi_domain %>" "muc"
98
+ storage = "memory"
99
+ modules_enabled = {
100
+ "ping";
101
+ }
102
+ restrict_room_creation = true
103
+ muc_room_locking = false
104
+ muc_room_default_public_jids = true
105
+
106
+ Component "muc.<%= jitsi_domain %>" "muc"
107
+ restrict_room_creation = true
108
+ storage = "memory"
109
+ modules_enabled = {
110
+ "muc_meeting_id";
111
+ "polls";
112
+ "muc_domain_mapper";
113
+ "muc_password_whitelist";
114
+ }
115
+
116
+ -- The size of the cache that saves state for IP addresses
117
+ rate_limit_cache_size = 10000;
118
+ muc_room_cache_size = 1000
119
+ muc_room_locking = false
120
+ muc_room_default_public_jids = true
121
+ muc_password_whitelist = {
122
+ "focus@<no value>"
123
+ }
124
+
125
+ Component "focus.<%= jitsi_domain %>" "client_proxy"
126
+ target_address = "focus@auth.<%= jitsi_domain %>"
127
+
128
+ Component "speakerstats.<%= jitsi_domain %>" "speakerstats_component"
129
+ muc_component = "muc.<%= jitsi_domain %>"
130
+
131
+ Component "conferenceduration.<%= jitsi_domain %>" "conference_duration_component"
132
+ muc_component = "muc.<%= jitsi_domain %>"
133
+
134
+
135
+ Component "endconference.<%= jitsi_domain %>" "end_conference"
136
+ muc_component = "muc.<%= jitsi_domain %>"
137
+
138
+
139
+ Component "lobby.<%= jitsi_domain %>" "muc"
140
+ storage = "memory"
141
+ restrict_room_creation = true
142
+ muc_room_locking = false
143
+ muc_room_default_public_jids = true
144
+ modules_enabled = {
145
+ }
146
+
147
+
148
+ Component "breakout.<%= jitsi_domain %>" "muc"
149
+ storage = "memory"
150
+ restrict_room_creation = true
151
+ muc_room_locking = false
152
+ muc_room_default_public_jids = true
153
+ modules_enabled = {
154
+ "muc_meeting_id";
155
+ "muc_domain_mapper";
156
+ "polls";
157
+ }
158
+
159
+
160
+ Component "metadata.<%= jitsi_domain %>" "room_metadata_component"
161
+ muc_component = "muc.<%= jitsi_domain %>"
162
+ breakout_rooms_component = "breakout.<%= jitsi_domain %>"
@@ -0,0 +1,406 @@
1
+ {{ $ENABLE_AUTH := .Env.ENABLE_AUTH | default "0" | toBool -}}
2
+ {{ $AUTH_TYPE := .Env.AUTH_TYPE | default "internal" -}}
3
+ {{ $PROSODY_AUTH_TYPE := .Env.PROSODY_AUTH_TYPE | default $AUTH_TYPE -}}
4
+ {{ $ENABLE_GUEST_DOMAIN := and $ENABLE_AUTH (.Env.ENABLE_GUESTS | default "0" | toBool) -}}
5
+ {{ $ENABLE_RECORDING := .Env.ENABLE_RECORDING | default "0" | toBool -}}
6
+ {{ $JIBRI_XMPP_USER := .Env.JIBRI_XMPP_USER | default "jibri" -}}
7
+ {{ $JIGASI_XMPP_USER := .Env.JIGASI_XMPP_USER | default "jigasi" -}}
8
+ {{ $JVB_AUTH_USER := .Env.JVB_AUTH_USER | default "jvb" -}}
9
+ {{ $JWT_ASAP_KEYSERVER := .Env.JWT_ASAP_KEYSERVER | default "" -}}
10
+ {{ $JWT_ALLOW_EMPTY := .Env.JWT_ALLOW_EMPTY | default "0" | toBool -}}
11
+ {{ $JWT_AUTH_TYPE := .Env.JWT_AUTH_TYPE | default "token" -}}
12
+ {{ $JWT_ENABLE_DOMAIN_VERIFICATION := .Env.JWT_ENABLE_DOMAIN_VERIFICATION | default "false" | toBool -}}
13
+ {{ $MATRIX_UVS_ISSUER := .Env.MATRIX_UVS_ISSUER | default "issuer" -}}
14
+ {{ $MATRIX_UVS_SYNC_POWER_LEVELS := .Env.MATRIX_UVS_SYNC_POWER_LEVELS | default "0" | toBool -}}
15
+ {{ $JWT_TOKEN_AUTH_MODULE := .Env.JWT_TOKEN_AUTH_MODULE | default "token_verification" -}}
16
+ {{ $ENABLE_LOBBY := .Env.ENABLE_LOBBY | default "true" | toBool -}}
17
+ {{ $ENABLE_AV_MODERATION := .Env.ENABLE_AV_MODERATION | default "true" | toBool -}}
18
+ {{ $ENABLE_BREAKOUT_ROOMS := .Env.ENABLE_BREAKOUT_ROOMS | default "true" | toBool -}}
19
+ {{ $ENABLE_END_CONFERENCE := .Env.ENABLE_END_CONFERENCE | default "true" | toBool -}}
20
+ {{ $ENABLE_XMPP_WEBSOCKET := .Env.ENABLE_XMPP_WEBSOCKET | default "1" | toBool -}}
21
+ {{ $ENABLE_JAAS_COMPONENTS := .Env.ENABLE_JAAS_COMPONENTS | default "0" | toBool -}}
22
+ {{ $ENABLE_RATE_LIMITS := .Env.PROSODY_ENABLE_RATE_LIMITS | default "0" | toBool -}}
23
+ {{ $PUBLIC_URL := .Env.PUBLIC_URL | default "https://localhost:8443" -}}
24
+ {{ $PUBLIC_URL_DOMAIN := $PUBLIC_URL | trimPrefix "https://" | trimSuffix "/" -}}
25
+ {{ $TURN_HOST := .Env.TURN_HOST | default "" -}}
26
+ {{ $TURN_HOSTS := splitList "," $TURN_HOST -}}
27
+ {{ $TURN_PORT := .Env.TURN_PORT | default "443" -}}
28
+ {{ $TURN_TRANSPORT := .Env.TURN_TRANSPORT | default "tcp" -}}
29
+ {{ $TURN_TRANSPORTS := splitList "," $TURN_TRANSPORT -}}
30
+ {{ $TURNS_HOST := .Env.TURNS_HOST | default "" -}}
31
+ {{ $TURNS_HOSTS := splitList "," $TURNS_HOST -}}
32
+ {{ $TURNS_PORT := .Env.TURNS_PORT | default "443" -}}
33
+ {{ $XMPP_AUTH_DOMAIN := .Env.XMPP_AUTH_DOMAIN | default "auth.meet.jitsi" -}}
34
+ {{ $XMPP_DOMAIN := .Env.XMPP_DOMAIN | default "meet.jitsi" -}}
35
+ {{ $XMPP_GUEST_DOMAIN := .Env.XMPP_GUEST_DOMAIN | default "guest.meet.jitsi" -}}
36
+ {{ $XMPP_INTERNAL_MUC_DOMAIN := .Env.XMPP_INTERNAL_MUC_DOMAIN | default "internal-muc.meet.jitsi" -}}
37
+ {{ $XMPP_MUC_DOMAIN := .Env.XMPP_MUC_DOMAIN | default "muc.meet.jitsi" -}}
38
+ {{ $XMPP_MUC_DOMAIN_PREFIX := (split "." $XMPP_MUC_DOMAIN)._0 -}}
39
+ {{ $XMPP_RECORDER_DOMAIN := .Env.XMPP_RECORDER_DOMAIN | default "recorder.meet.jitsi" -}}
40
+ {{ $JIBRI_RECORDER_USER := .Env.JIBRI_RECORDER_USER | default "recorder" -}}
41
+ {{ $JIGASI_TRANSCRIBER_USER := .Env.JIGASI_TRANSCRIBER_USER | default "transcriber" -}}
42
+ {{ $DISABLE_POLLS := .Env.DISABLE_POLLS | default "false" | toBool -}}
43
+ {{ $ENABLE_SUBDOMAINS := .Env.ENABLE_SUBDOMAINS | default "true" | toBool -}}
44
+ {{ $PROSODY_RESERVATION_ENABLED := .Env.PROSODY_RESERVATION_ENABLED | default "false" | toBool -}}
45
+ {{ $PROSODY_RESERVATION_REST_BASE_URL := .Env.PROSODY_RESERVATION_REST_BASE_URL | default "" -}}
46
+ {{ $RATE_LIMIT_LOGIN_RATE := .Env.PROSODY_RATE_LIMIT_LOGIN_RATE | default "3" -}}
47
+ {{ $RATE_LIMIT_SESSION_RATE := .Env.PROSODY_RATE_LIMIT_SESSION_RATE | default "200" -}}
48
+ {{ $RATE_LIMIT_TIMEOUT := .Env.PROSODY_RATE_LIMIT_TIMEOUT | default "60" -}}
49
+ {{ $RATE_LIMIT_ALLOW_RANGES := .Env.PROSODY_RATE_LIMIT_ALLOW_RANGES | default "10.0.0.0/8" -}}
50
+ {{ $RATE_LIMIT_CACHE_SIZE := .Env.PROSODY_RATE_LIMIT_CACHE_SIZE | default "10000" -}}
51
+ {{ $ENV := .Env -}}
52
+
53
+ admins = {
54
+ {{ if .Env.JIGASI_XMPP_PASSWORD }}
55
+ "{{ $JIGASI_XMPP_USER }}@{{ $XMPP_AUTH_DOMAIN }}",
56
+ {{ end }}
57
+
58
+ {{ if .Env.JIBRI_XMPP_PASSWORD }}
59
+ "{{ $JIBRI_XMPP_USER }}@{{ $XMPP_AUTH_DOMAIN }}",
60
+ {{ end }}
61
+
62
+ "focus@{{ $XMPP_AUTH_DOMAIN }}",
63
+ "{{ $JVB_AUTH_USER }}@{{ $XMPP_AUTH_DOMAIN }}"
64
+ }
65
+
66
+ unlimited_jids = {
67
+ "focus@{{ $XMPP_AUTH_DOMAIN }}",
68
+ "{{ $JVB_AUTH_USER }}@{{ $XMPP_AUTH_DOMAIN }}"
69
+ }
70
+
71
+ plugin_paths = { "/prosody-plugins/", "/prosody-plugins-custom" }
72
+
73
+ muc_mapper_domain_base = "{{ $XMPP_DOMAIN }}";
74
+ muc_mapper_domain_prefix = "{{ $XMPP_MUC_DOMAIN_PREFIX }}";
75
+
76
+ http_default_host = "{{ $XMPP_DOMAIN }}"
77
+
78
+ {{ if .Env.TURN_CREDENTIALS -}}
79
+ external_service_secret = "{{.Env.TURN_CREDENTIALS}}";
80
+ {{- end }}
81
+
82
+ {{ if or .Env.TURN_HOST .Env.TURNS_HOST -}}
83
+ external_services = {
84
+ {{ if $TURN_HOST -}}
85
+ {{- range $idx1, $host := $TURN_HOSTS -}}
86
+ {{- range $idx2, $transport := $TURN_TRANSPORTS -}}
87
+ {{- if or $idx1 $idx2 -}},{{- end }}
88
+ { type = "turn", host = "{{ $host }}", port = {{ $TURN_PORT }}, transport = "{{ $transport }}", secret = true, ttl = 86400, algorithm = "turn" }
89
+ {{- end -}}
90
+ {{- end -}}
91
+ {{- end -}}
92
+
93
+ {{- if $TURNS_HOST -}}
94
+ {{- range $idx, $host := $TURNS_HOSTS -}}
95
+ {{- if or $TURN_HOST $idx -}},{{- end }}
96
+ { type = "turns", host = "{{ $host }}", port = {{ $TURNS_PORT }}, transport = "tcp", secret = true, ttl = 86400, algorithm = "turn" }
97
+ {{- end }}
98
+ {{- end }}
99
+ };
100
+ {{- end }}
101
+
102
+ {{ if and $ENABLE_AUTH (or (eq $PROSODY_AUTH_TYPE "jwt") (eq $PROSODY_AUTH_TYPE "hybrid_matrix_token")) .Env.JWT_ACCEPTED_ISSUERS }}
103
+ asap_accepted_issuers = { "{{ join "\",\"" (splitList "," .Env.JWT_ACCEPTED_ISSUERS) }}" }
104
+ {{ end }}
105
+
106
+ {{ if and $ENABLE_AUTH (or (eq $PROSODY_AUTH_TYPE "jwt") (eq $PROSODY_AUTH_TYPE "hybrid_matrix_token")) .Env.JWT_ACCEPTED_AUDIENCES }}
107
+ asap_accepted_audiences = { "{{ join "\",\"" (splitList "," .Env.JWT_ACCEPTED_AUDIENCES) }}" }
108
+ {{ end }}
109
+
110
+ consider_bosh_secure = true;
111
+ consider_websocket_secure = true;
112
+
113
+ {{ if $ENABLE_JAAS_COMPONENTS }}
114
+ VirtualHost "jigasi.meet.jitsi"
115
+ modules_enabled = {
116
+ "ping";
117
+ "bosh";
118
+ "muc_password_check";
119
+ }
120
+ authentication = "token"
121
+ app_id = "jitsi";
122
+ asap_key_server = "https://jaas-public-keys.jitsi.net/jitsi-components/prod-8x8"
123
+ asap_accepted_issuers = { "jaas-components" }
124
+ asap_accepted_audiences = { "jigasi.{{ $PUBLIC_URL_DOMAIN }}" }
125
+ {{ end }}
126
+
127
+ VirtualHost "{{ $XMPP_DOMAIN }}"
128
+ {{ if $ENABLE_AUTH }}
129
+ {{ if eq $PROSODY_AUTH_TYPE "jwt" }}
130
+ authentication = "{{ $JWT_AUTH_TYPE }}"
131
+ app_id = "{{ .Env.JWT_APP_ID }}"
132
+ app_secret = "{{ .Env.JWT_APP_SECRET }}"
133
+ allow_empty_token = {{ $JWT_ALLOW_EMPTY }}
134
+ {{ if $JWT_ASAP_KEYSERVER }}
135
+ asap_key_server = "{{ .Env.JWT_ASAP_KEYSERVER }}"
136
+ {{ end }}
137
+ enable_domain_verification = {{ $JWT_ENABLE_DOMAIN_VERIFICATION }}
138
+ {{ else if eq $PROSODY_AUTH_TYPE "ldap" }}
139
+ authentication = "cyrus"
140
+ cyrus_application_name = "xmpp"
141
+ allow_unencrypted_plain_auth = true
142
+ {{ else if eq $PROSODY_AUTH_TYPE "matrix" }}
143
+ authentication = "matrix_user_verification"
144
+ app_id = "{{ $MATRIX_UVS_ISSUER }}"
145
+ uvs_base_url = "{{ .Env.MATRIX_UVS_URL }}"
146
+ {{ if .Env.MATRIX_UVS_AUTH_TOKEN }}
147
+ uvs_auth_token = "{{ .Env.MATRIX_UVS_AUTH_TOKEN }}"
148
+ {{ end }}
149
+ {{ if $MATRIX_UVS_SYNC_POWER_LEVELS }}
150
+ uvs_sync_power_levels = true
151
+ {{ end }}
152
+ {{ else if eq $PROSODY_AUTH_TYPE "hybrid_matrix_token" }}
153
+ authentication = "hybrid_matrix_token"
154
+ app_id = "{{ .Env.JWT_APP_ID }}"
155
+ app_secret = "{{ .Env.JWT_APP_SECRET }}"
156
+ allow_empty_token = {{ $JWT_ALLOW_EMPTY }}
157
+ enable_domain_verification = {{ $JWT_ENABLE_DOMAIN_VERIFICATION }}
158
+
159
+ uvs_base_url = "{{ .Env.MATRIX_UVS_URL }}"
160
+ {{ if .Env.MATRIX_UVS_ISSUER }}
161
+ uvs_issuer = "{{ .Env.MATRIX_UVS_ISSUER }}"
162
+ {{ end }}
163
+ {{ if .Env.MATRIX_UVS_AUTH_TOKEN }}
164
+ uvs_auth_token = "{{ .Env.MATRIX_UVS_AUTH_TOKEN }}"
165
+ {{ end }}
166
+ {{ else if eq $PROSODY_AUTH_TYPE "internal" }}
167
+ authentication = "internal_hashed"
168
+ {{ end }}
169
+ {{ else }}
170
+ authentication = "jitsi-anonymous"
171
+ {{ end }}
172
+ ssl = {
173
+ key = "/config/certs/{{ $XMPP_DOMAIN }}.key";
174
+ certificate = "/config/certs/{{ $XMPP_DOMAIN }}.crt";
175
+ }
176
+ modules_enabled = {
177
+ "bosh";
178
+ {{ if $ENABLE_XMPP_WEBSOCKET }}
179
+ "websocket";
180
+ "smacks"; -- XEP-0198: Stream Management
181
+ {{ end }}
182
+ "pubsub";
183
+ "ping";
184
+ "speakerstats";
185
+ "conference_duration";
186
+ "room_metadata";
187
+ {{ if $ENABLE_END_CONFERENCE }}
188
+ "end_conference";
189
+ {{ end }}
190
+ {{ if or .Env.TURN_HOST .Env.TURNS_HOST }}
191
+ "external_services";
192
+ {{ end }}
193
+ {{ if $ENABLE_LOBBY }}
194
+ "muc_lobby_rooms";
195
+ {{ end }}
196
+ {{ if $ENABLE_BREAKOUT_ROOMS }}
197
+ "muc_breakout_rooms";
198
+ {{ end }}
199
+ {{ if $ENABLE_AV_MODERATION }}
200
+ "av_moderation";
201
+ {{ end }}
202
+ {{ if .Env.XMPP_MODULES }}
203
+ "{{ join "\";\n\"" (splitList "," .Env.XMPP_MODULES) }}";
204
+ {{ end }}
205
+ {{ if and $ENABLE_AUTH (eq $PROSODY_AUTH_TYPE "ldap") }}
206
+ "auth_cyrus";
207
+ {{end}}
208
+ {{ if $PROSODY_RESERVATION_ENABLED }}
209
+ "reservations";
210
+ {{ end }}
211
+ }
212
+
213
+ main_muc = "{{ $XMPP_MUC_DOMAIN }}"
214
+
215
+ {{ if $ENABLE_LOBBY }}
216
+ lobby_muc = "lobby.{{ $XMPP_DOMAIN }}"
217
+ {{ if $ENABLE_RECORDING }}
218
+ muc_lobby_whitelist = { "{{ $XMPP_RECORDER_DOMAIN }}" }
219
+ {{ end }}
220
+ {{ end }}
221
+
222
+ {{ if $PROSODY_RESERVATION_ENABLED }}
223
+ reservations_api_prefix = "{{ $PROSODY_RESERVATION_REST_BASE_URL }}"
224
+ {{ end }}
225
+
226
+ {{ if $ENABLE_BREAKOUT_ROOMS }}
227
+ breakout_rooms_muc = "breakout.{{ $XMPP_DOMAIN }}"
228
+ {{ end }}
229
+
230
+ speakerstats_component = "speakerstats.{{ $XMPP_DOMAIN }}"
231
+ conference_duration_component = "conferenceduration.{{ $XMPP_DOMAIN }}"
232
+
233
+ {{ if $ENABLE_END_CONFERENCE }}
234
+ end_conference_component = "endconference.{{ $XMPP_DOMAIN }}"
235
+ {{ end }}
236
+
237
+ {{ if $ENABLE_AV_MODERATION }}
238
+ av_moderation_component = "avmoderation.{{ $XMPP_DOMAIN }}"
239
+ {{ end }}
240
+
241
+ c2s_require_encryption = false
242
+
243
+ {{ if $ENABLE_GUEST_DOMAIN }}
244
+ VirtualHost "{{ $XMPP_GUEST_DOMAIN }}"
245
+ authentication = "jitsi-anonymous"
246
+
247
+ c2s_require_encryption = false
248
+ {{ end }}
249
+
250
+ VirtualHost "{{ $XMPP_AUTH_DOMAIN }}"
251
+ ssl = {
252
+ key = "/config/certs/{{ $XMPP_AUTH_DOMAIN }}.key";
253
+ certificate = "/config/certs/{{ $XMPP_AUTH_DOMAIN }}.crt";
254
+ }
255
+ modules_enabled = {
256
+ "limits_exception";
257
+ }
258
+ authentication = "internal_hashed"
259
+
260
+ {{ if $ENABLE_RECORDING }}
261
+ VirtualHost "{{ $XMPP_RECORDER_DOMAIN }}"
262
+ modules_enabled = {
263
+ "ping";
264
+ }
265
+ authentication = "internal_hashed"
266
+ {{ end }}
267
+
268
+ Component "{{ $XMPP_INTERNAL_MUC_DOMAIN }}" "muc"
269
+ storage = "memory"
270
+ modules_enabled = {
271
+ "ping";
272
+ {{ if .Env.XMPP_INTERNAL_MUC_MODULES -}}
273
+ "{{ join "\";\n\"" (splitList "," .Env.XMPP_INTERNAL_MUC_MODULES) }}";
274
+ {{ end -}}
275
+ }
276
+ restrict_room_creation = true
277
+ muc_room_locking = false
278
+ muc_room_default_public_jids = true
279
+
280
+ Component "{{ $XMPP_MUC_DOMAIN }}" "muc"
281
+ restrict_room_creation = true
282
+ storage = "memory"
283
+ modules_enabled = {
284
+ "muc_meeting_id";
285
+ {{ if .Env.XMPP_MUC_MODULES -}}
286
+ "{{ join "\";\n\"" (splitList "," .Env.XMPP_MUC_MODULES) }}";
287
+ {{ end -}}
288
+ {{ if and $ENABLE_AUTH (or (eq $PROSODY_AUTH_TYPE "jwt") (eq $PROSODY_AUTH_TYPE "hybrid_matrix_token")) -}}
289
+ "{{ $JWT_TOKEN_AUTH_MODULE }}";
290
+ {{ end }}
291
+ {{ if and $ENABLE_AUTH (eq $PROSODY_AUTH_TYPE "matrix") $MATRIX_UVS_SYNC_POWER_LEVELS -}}
292
+ "matrix_power_sync";
293
+ {{ end -}}
294
+ {{ if and $ENABLE_AUTH (eq $PROSODY_AUTH_TYPE "hybrid_matrix_token") $MATRIX_UVS_SYNC_POWER_LEVELS -}}
295
+ "matrix_affiliation";
296
+ {{ end -}}
297
+ {{ if not $DISABLE_POLLS -}}
298
+ "polls";
299
+ {{ end -}}
300
+ {{ if $ENABLE_SUBDOMAINS -}}
301
+ "muc_domain_mapper";
302
+ {{ end -}}
303
+ {{ if $ENABLE_RATE_LIMITS -}}
304
+ "muc_rate_limit";
305
+ "rate_limit";
306
+ {{ end -}}
307
+ {{ if .Env.MAX_PARTICIPANTS }}
308
+ "muc_max_occupants";
309
+ {{ end }}
310
+ "muc_password_whitelist";
311
+ }
312
+
313
+ {{ if $ENABLE_RATE_LIMITS -}}
314
+ -- Max allowed join/login rate in events per second.
315
+ rate_limit_login_rate = {{ $RATE_LIMIT_LOGIN_RATE }};
316
+ -- The rate to which sessions from IPs exceeding the join rate will be limited, in bytes per second.
317
+ rate_limit_session_rate = {{ $RATE_LIMIT_SESSION_RATE }};
318
+ -- The time in seconds, after which the limit for an IP address is lifted.
319
+ rate_limit_timeout = {{ $RATE_LIMIT_TIMEOUT }};
320
+ -- List of regular expressions for IP addresses that are not limited by this module.
321
+ rate_limit_whitelist = {
322
+ "127.0.0.1";
323
+ {{ range $index, $cidr := (splitList "," $RATE_LIMIT_ALLOW_RANGES) -}}
324
+ "{{ $cidr }}";
325
+ {{ end -}}
326
+ };
327
+
328
+ rate_limit_whitelist_jids = {
329
+ "{{ $JIBRI_RECORDER_USER }}@{{ $XMPP_RECORDER_DOMAIN }}",
330
+ "{{ $JIGASI_TRANSCRIBER_USER }}@{{ $XMPP_RECORDER_DOMAIN }}"
331
+ }
332
+ {{ end -}}
333
+
334
+ -- The size of the cache that saves state for IP addresses
335
+ rate_limit_cache_size = {{ $RATE_LIMIT_CACHE_SIZE }};
336
+
337
+ muc_room_cache_size = 1000
338
+ muc_room_locking = false
339
+ muc_room_default_public_jids = true
340
+ {{ if .Env.XMPP_MUC_CONFIGURATION -}}
341
+ {{ join "\n" (splitList "," .Env.XMPP_MUC_CONFIGURATION) }}
342
+ {{ end -}}
343
+ {{ if .Env.MAX_PARTICIPANTS }}
344
+ muc_access_whitelist = { "focus@{{ .Env.XMPP_AUTH_DOMAIN }}" }
345
+ muc_max_occupants = "{{ .Env.MAX_PARTICIPANTS }}"
346
+ {{ end }}
347
+ muc_password_whitelist = {
348
+ "focus@{{ .Env.XMPP_AUTH_DOMAIN }}"
349
+ }
350
+
351
+ Component "focus.{{ $XMPP_DOMAIN }}" "client_proxy"
352
+ target_address = "focus@{{ $XMPP_AUTH_DOMAIN }}"
353
+
354
+ Component "speakerstats.{{ $XMPP_DOMAIN }}" "speakerstats_component"
355
+ muc_component = "{{ $XMPP_MUC_DOMAIN }}"
356
+
357
+ Component "conferenceduration.{{ $XMPP_DOMAIN }}" "conference_duration_component"
358
+ muc_component = "{{ $XMPP_MUC_DOMAIN }}"
359
+
360
+ {{ if $ENABLE_END_CONFERENCE }}
361
+ Component "endconference.{{ $XMPP_DOMAIN }}" "end_conference"
362
+ muc_component = "{{ $XMPP_MUC_DOMAIN }}"
363
+ {{ end }}
364
+
365
+ {{ if $ENABLE_AV_MODERATION }}
366
+ Component "avmoderation.{{ $XMPP_DOMAIN }}" "av_moderation_component"
367
+ muc_component = "{{ $XMPP_MUC_DOMAIN }}"
368
+ {{ end }}
369
+
370
+ {{ if $ENABLE_LOBBY }}
371
+ Component "lobby.{{ $XMPP_DOMAIN }}" "muc"
372
+ storage = "memory"
373
+ restrict_room_creation = true
374
+ muc_room_locking = false
375
+ muc_room_default_public_jids = true
376
+ modules_enabled = {
377
+ {{ if $ENABLE_RATE_LIMITS -}}
378
+ "muc_rate_limit";
379
+ {{ end -}}
380
+ }
381
+
382
+ {{ end }}
383
+
384
+ {{ if $ENABLE_BREAKOUT_ROOMS }}
385
+ Component "breakout.{{ $XMPP_DOMAIN }}" "muc"
386
+ storage = "memory"
387
+ restrict_room_creation = true
388
+ muc_room_locking = false
389
+ muc_room_default_public_jids = true
390
+ modules_enabled = {
391
+ "muc_meeting_id";
392
+ {{ if $ENABLE_SUBDOMAINS -}}
393
+ "muc_domain_mapper";
394
+ {{ end -}}
395
+ {{ if not $DISABLE_POLLS -}}
396
+ "polls";
397
+ {{ end -}}
398
+ {{ if $ENABLE_RATE_LIMITS -}}
399
+ "muc_rate_limit";
400
+ {{ end -}}
401
+ }
402
+ {{ end }}
403
+
404
+ Component "metadata.{{ $XMPP_DOMAIN }}" "room_metadata_component"
405
+ muc_component = "{{ $XMPP_MUC_DOMAIN }}"
406
+ breakout_rooms_component = "breakout.{{ $XMPP_DOMAIN }}"
@@ -0,0 +1,10 @@
1
+ # -------------------------------------------------------------
2
+ # ! DO NOT EDIT !
3
+ # Config file automatically generated by <infra-setup>
4
+ # Date : <%= date %>
5
+ # -------------------------------------------------------------
6
+
7
+ export JICOFO_PASSWORD=<%= jicofo_password %>
8
+ export JVB_PASSWORD=<%= jvb_password %>
9
+ export APP_ID=<%= app_id %>
10
+ export APP_PASSWORD=<%= app_password %>