jitsi / docker-jitsi-meet

Jitsi Meet on Docker
https://hub.docker.com/u/jitsi/
Apache License 2.0
3.06k stars 1.36k forks source link

You have been disconnected - Jitsi Docker Installation #938

Closed belascoain closed 3 years ago

belascoain commented 3 years ago

Hi

I've follow the installation manual for Jitsi over a docker.

My firewall has open the ports (80, 443, 4443, 10000) and my CentOS firewall too.

I try to access to my Jitsi URL, and when I write a room name, I've got an error:

You have been disconnected. You may want to check your network connection

Any idea?

Best regards

hm-kurig commented 3 years ago

I have the same problem sice update my docker. In the browser I get the error: "Ihre Verbindung ist getrennt worden" / connection lost ubuntu 18, dedicated server see: -> http://et0.de:8111/ 8111:80 8222:443

Please help

fvlasie commented 3 years ago

I have this problem too.

j05u3 commented 3 years ago

Hi, I had a similar problem, and my chrome console was showing this: image

What I did to fix it was:

  1. Restore the .env to the original (env.example)
  2. Change only the PUBLIC_URL parameter, in my case I was using a virtual machine in Google Cloud so I set: PUBLIC_URL=https://{external.ip.of.myvm}:8443
hm-kurig commented 3 years ago

@j05u3 Thanks for your post. I tryes it with PUBLIC_URL=https://et0.de:8443 but it doesn´t help. Do I need to point to another port? My containers have no port 8443 aligned. http://et0.de:8111/ 8111:80 8222:443 grafik

saghul commented 3 years ago

Folks, please attach JS console logs or there is no way for us to help you.

@j05u3 Your problem is the XMPP WS connection fails. Do you have a reverse proxy in front of the Docker setup? Did you set PUBLIC_URL correctly?

hm-kurig commented 3 years ago

@saghul thanks for your message

I configured my .env to: PUBLIC_URL=https://meet.et0.de (without a port)

http://et0.de:8111/ = meet.et0.de 8111:80 8222:443

My reverse proxy is managed by PLESK, which is using my port 8443

How can I switch on the JS console logs?

saghul commented 3 years ago

You may need to configure Plesk to enable WS proxying for the /xmpp-websocket and /colibri-ws routes.

You can check the JS console logs with Ctrl + Alt + i

hm-kurig commented 3 years ago

I am wondering, because I did not change any configuration - just updating the docker container.

grafik

saghul commented 3 years ago

I suspect you're running into the issue mentioned here: https://github.com/jitsi/docker-jitsi-meet/blob/master/CHANGELOG.md#stable-5142-3

hm-kurig commented 3 years ago

Would you recommend to downgrade to stable-5142-3? How can I do this?

saghul commented 3 years ago

I'd recommend fixing it :-) As I mentioned above, you need to proxy those 2 routes differently, they are WS endpoints.

fvlasie commented 3 years ago

Fetch failed; returning offline page instead. TypeError: NetworkError when attempting to fetch resource. 2 pwa-worker.js:73:25

Web Console from FireFox ^

I am running on a LAN. I have tried setting DOCKER_IP_ADDRESS but it does not seem to make any difference. (BTW, this is my first time using Docker so I might be doing something wrong.)

fvlasie commented 3 years ago

Logger.js:154 2021-02-05T19:39:57.928Z [modules/browser/BrowserCapabilities.js] <new a>:  This appears to be chrome, ver: 86.0.4240.23
Logger.js:154 2021-02-05T19:39:58.532Z [modules/UI/videolayout/VideoLayout.js] <Object.changeUserAvatar>:  Missed avatar update - no small video yet for undefined
o @ Logger.js:154
changeUserAvatar @ VideoLayout.js:485
k.refreshAvatarDisplay @ UI.js:385
Qt @ middleware.js:427
(anonymous) @ middleware.js:136
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
dispatch @ redux.js:636
(anonymous) @ middleware.js:303
(anonymous) @ middleware.js:62
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:72
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:48
(anonymous) @ middleware.js:25
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:17
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
dispatch @ redux.js:636
(anonymous) @ actions.js:29
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
(anonymous) @ BaseApp.js:87
Promise.then (async)
componentDidMount @ BaseApp.js:87
componentDidMount @ AbstractApp.js:42
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ds @ react-dom.production.min.js:204
Vs @ react-dom.production.min.js:263
Ws @ react-dom.production.min.js:263
(anonymous) @ react-dom.production.min.js:272
ys @ react-dom.production.min.js:208
el @ react-dom.production.min.js:272
render @ react-dom.production.min.js:273
Rs.renderEntryPoint @ index.web.js:71
(anonymous) @ MarriedCountriesTakeLot:25
Show 93 more frames
Logger.js:154 2021-02-05T19:39:58.552Z [features/base/config] Extending config with: {"startWithAudioMuted":true,"startWithVideoMuted":true}
Logger.js:154 2021-02-05T19:39:58.558Z [modules/RTC/RTCUtils.js] <X.init>:  Disable AP: false
Logger.js:154 2021-02-05T19:39:58.564Z [modules/statistics/AnalyticsAdapter.js] <Object.dispose>:  Disposing of analytics adapter.
o @ Logger.js:154
dispose @ AnalyticsAdapter.js:116
v @ functions.js:141
(anonymous) @ middleware.js:95
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
dispatch @ redux.js:636
(anonymous) @ actions.js:138
async function (async)
(anonymous) @ actions.js:111
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
_openURL @ AbstractApp.js:113
(anonymous) @ AbstractApp.js:47
Promise.then (async)
componentDidMount @ AbstractApp.js:44
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ds @ react-dom.production.min.js:204
Vs @ react-dom.production.min.js:263
Ws @ react-dom.production.min.js:263
(anonymous) @ react-dom.production.min.js:272
ys @ react-dom.production.min.js:208
el @ react-dom.production.min.js:272
render @ react-dom.production.min.js:273
Rs.renderEntryPoint @ index.web.js:71
(anonymous) @ MarriedCountriesTakeLot:25
Show 53 more frames
Logger.js:154 2021-02-05T19:39:58.565Z [features/analytics] Initialized 0 analytics handlers
Logger.js:154 2021-02-05T19:39:58.566Z [features/base/media] Start muted: audio, video
Logger.js:154 2021-02-05T19:39:58.570Z [features/base/media] Start audio only set to false
Logger.js:154 2021-02-05T19:39:58.686Z [index.web] <HTMLDocument.<anonymous>>:  (TIME) document ready:   906.9999999774154
Logger.js:154 2021-02-05T19:39:58.711Z [modules/RTC/RTCUtils.js] list of media devices has changed: (11) [InputDeviceInfo, InputDeviceInfo, InputDeviceInfo, InputDeviceInfo, InputDeviceInfo, InputDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo]
Logger.js:154 2021-02-05T19:39:58.833Z [modules/RTC/RTCUtils.js] Audio output device set to default
An SSL certificate error occurred when fetching the script.
Logger.js:154 2021-02-05T19:39:58.978Z [modules/xmpp/xmpp.js] <I._initStrophePlugins>:  P2P STUN servers:  [{…}]
Logger.js:154 2021-02-05T19:39:58.997Z [modules/xmpp/xmpp.js] <I.connectionHandler>:  (TIME) Strophe connecting:     1217.754999990575
Logger.js:154 2021-02-05T19:39:58.999Z [modules/RTC/RTCUtils.js] <X.newObtainAudioAndVideoPermissions>:  Using the new gUM flow
Logger.js:154 2021-02-05T19:39:59.002Z [modules/RTC/RTCUtils.js] <X.<anonymous>>:  Got media constraints:  {"video":false,"audio":{"optional":[{},{"echoCancellation":true},{"googEchoCancellation":true},{"googAutoGainControl":true},{"googNoiseSuppression":true},{"googHighpassFilter":true},{"googNoiseSuppression2":true},{"googEchoCancellation2":true},{"googAutoGainControl2":true}]}}
MarriedCountriesTakeLot:39 DOMException: Failed to register a ServiceWorker for scope ('https://192.168.2.172:8443/') with script ('https://192.168.2.172:8443/pwa-worker.js'): An SSL certificate error occurred when fetching the script.
strophe.umd.js:5463 WebSocket connection to 'wss://localhost:8443/xmpp-websocket?room=marriedcountriestakelot' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
_connect @ strophe.umd.js:5463
connect @ strophe.umd.js:2368
_interceptConnectArgs @ strophe.stream-management.js:224
connect @ XmppConnection.js:242
_connect @ xmpp.js:414
connect @ xmpp.js:486
c.connect @ JitsiConnection.js:61
e @ connection.js:47
(anonymous) @ connection.js:178
d @ connection.js:103
h @ connection.js:208
W @ conference.js:185
createInitialLocalTracksAndConnect @ conference.js:654
init @ conference.js:776
Logger.js:154 2021-02-05T19:39:59.057Z [JitsiMeetJS.js] <Object.getGlobalOnErrorHandler>:  UnhandledError: Strophe: Websocket error [object Event] Script: null Line: null Column: null StackTrace:  Error: Strophe: Websocket error [object Event]
    at Object.r.Strophe.log (https://192.168.2.172:8443/libs/lib-jitsi-meet.min.js?v=4628:17:16531)
    at Object.error (https://192.168.2.172:8443/libs/lib-jitsi-meet.min.js?v=4628:1:23431)
    at N.Websocket._onError (https://192.168.2.172:8443/libs/lib-jitsi-meet.min.js?v=4628:1:62905)
o @ Logger.js:154
getGlobalOnErrorHandler @ JitsiMeetJS.js:613
window.onerror @ middleware.js:110
callErrorHandler @ GlobalOnErrorHandler.js:61
r.Strophe.log @ strophe.util.js:89
error @ strophe.umd.js:1392
_onError @ strophe.umd.js:5730
error (async)
_connect @ strophe.umd.js:5465
connect @ strophe.umd.js:2368
_interceptConnectArgs @ strophe.stream-management.js:224
connect @ XmppConnection.js:242
_connect @ xmpp.js:414
connect @ xmpp.js:486
c.connect @ JitsiConnection.js:61
e @ connection.js:47
(anonymous) @ connection.js:178
d @ connection.js:103
h @ connection.js:208
W @ conference.js:185
createInitialLocalTracksAndConnect @ conference.js:654
init @ conference.js:776
async function (async)
init @ conference.js:741
(anonymous) @ actions.web.js:31
Promise.then (async)
(anonymous) @ actions.web.js:30
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
_start @ Conference.js:250
componentDidMount @ Conference.js:133
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ms @ react-dom.production.min.js:206
(anonymous) @ react-dom.production.min.js:114
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
ba @ react-dom.production.min.js:114
ga @ react-dom.production.min.js:113
ds @ react-dom.production.min.js:204
enqueueSetState @ react-dom.production.min.js:127
_.setState @ react.production.min.js:13
(anonymous) @ BaseApp.js:241
_navigate @ BaseApp.js:240
(anonymous) @ middleware.js:149
Promise.then (async)
(anonymous) @ middleware.js:149
(anonymous) @ middleware.js:169
(anonymous) @ middleware.js:26
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:147
(anonymous) @ middleware.js:35
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:197
(anonymous) @ middleware.js:45
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:446
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:96
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
dispatch @ redux.js:636
(anonymous) @ actions.js:138
async function (async)
(anonymous) @ actions.js:111
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
_openURL @ AbstractApp.js:113
(anonymous) @ AbstractApp.js:47
Promise.then (async)
componentDidMount @ AbstractApp.js:44
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ds @ react-dom.production.min.js:204
Vs @ react-dom.production.min.js:263
Ws @ react-dom.production.min.js:263
(anonymous) @ react-dom.production.min.js:272
ys @ react-dom.production.min.js:208
el @ react-dom.production.min.js:272
render @ react-dom.production.min.js:273
Rs.renderEntryPoint @ index.web.js:71
(anonymous) @ MarriedCountriesTakeLot:25
Show 204 more frames
Logger.js:154 2021-02-05T19:39:59.058Z [modules/xmpp/strophe.util.js] <Object.r.Strophe.log>:  Strophe: Websocket error [object Event]
o @ Logger.js:154
r.Strophe.log @ strophe.util.js:90
error @ strophe.umd.js:1392
_onError @ strophe.umd.js:5730
error (async)
_connect @ strophe.umd.js:5465
connect @ strophe.umd.js:2368
_interceptConnectArgs @ strophe.stream-management.js:224
connect @ XmppConnection.js:242
_connect @ xmpp.js:414
connect @ xmpp.js:486
c.connect @ JitsiConnection.js:61
e @ connection.js:47
(anonymous) @ connection.js:178
d @ connection.js:103
h @ connection.js:208
W @ conference.js:185
createInitialLocalTracksAndConnect @ conference.js:654
init @ conference.js:776
async function (async)
init @ conference.js:741
(anonymous) @ actions.web.js:31
Promise.then (async)
(anonymous) @ actions.web.js:30
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
_start @ Conference.js:250
componentDidMount @ Conference.js:133
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ms @ react-dom.production.min.js:206
(anonymous) @ react-dom.production.min.js:114
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
ba @ react-dom.production.min.js:114
ga @ react-dom.production.min.js:113
ds @ react-dom.production.min.js:204
enqueueSetState @ react-dom.production.min.js:127
_.setState @ react.production.min.js:13
(anonymous) @ BaseApp.js:241
_navigate @ BaseApp.js:240
(anonymous) @ middleware.js:149
Promise.then (async)
(anonymous) @ middleware.js:149
(anonymous) @ middleware.js:169
(anonymous) @ middleware.js:26
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:147
(anonymous) @ middleware.js:35
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:197
(anonymous) @ middleware.js:45
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:446
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:96
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
dispatch @ redux.js:636
(anonymous) @ actions.js:138
async function (async)
(anonymous) @ actions.js:111
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
_openURL @ AbstractApp.js:113
(anonymous) @ AbstractApp.js:47
Promise.then (async)
componentDidMount @ AbstractApp.js:44
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ds @ react-dom.production.min.js:204
Vs @ react-dom.production.min.js:263
Ws @ react-dom.production.min.js:263
(anonymous) @ react-dom.production.min.js:272
ys @ react-dom.production.min.js:208
el @ react-dom.production.min.js:272
render @ react-dom.production.min.js:273
Rs.renderEntryPoint @ index.web.js:71
(anonymous) @ MarriedCountriesTakeLot:25
Show 201 more frames
Logger.js:154 2021-02-05T19:39:59.059Z [modules/xmpp/xmpp.js] <I.connectionHandler>:  (TIME) Strophe connfail[The WebSocket connection could not be established or was disconnected.]:   1279.5249999908265
Logger.js:154 2021-02-05T19:39:59.059Z [modules/xmpp/xmpp.js] <I.connectionHandler>:  (TIME) Strophe disconnected:   1280.2149999770336
Logger.js:154 2021-02-05T19:39:59.060Z [modules/statistics/statistics.js] <Function.b.sendAnalyticsAndLog>:  {"type":"operational","action":"connection.failed","attributes":{"error_type":"connection.otherError","error_message":"The WebSocket connection could not be established or was disconnected.","suspend_time":0,"time_since_last_success":null}}
Logger.js:154 2021-02-05T19:39:59.061Z [connection.js] <a.d>:  CONNECTION FAILED: connection.otherError
o @ Logger.js:154
d @ connection.js:166
a.emit @ events.js:157
connectionHandler @ xmpp.js:333
_stropheConnectionCb @ XmppConnection.js:278
_changeConnectStatus @ strophe.umd.js:3011
_doDisconnect @ strophe.umd.js:3052
_interceptDoDisconnect @ strophe.stream-management.js:218
_disconnect @ strophe.umd.js:5617
_onError @ strophe.umd.js:5734
error (async)
_connect @ strophe.umd.js:5465
connect @ strophe.umd.js:2368
_interceptConnectArgs @ strophe.stream-management.js:224
connect @ XmppConnection.js:242
_connect @ xmpp.js:414
connect @ xmpp.js:486
c.connect @ JitsiConnection.js:61
e @ connection.js:47
(anonymous) @ connection.js:178
d @ connection.js:103
h @ connection.js:208
W @ conference.js:185
createInitialLocalTracksAndConnect @ conference.js:654
init @ conference.js:776
async function (async)
init @ conference.js:741
(anonymous) @ actions.web.js:31
Promise.then (async)
(anonymous) @ actions.web.js:30
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
_start @ Conference.js:250
componentDidMount @ Conference.js:133
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ms @ react-dom.production.min.js:206
(anonymous) @ react-dom.production.min.js:114
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
ba @ react-dom.production.min.js:114
ga @ react-dom.production.min.js:113
ds @ react-dom.production.min.js:204
enqueueSetState @ react-dom.production.min.js:127
_.setState @ react.production.min.js:13
(anonymous) @ BaseApp.js:241
_navigate @ BaseApp.js:240
(anonymous) @ middleware.js:149
Promise.then (async)
(anonymous) @ middleware.js:149
(anonymous) @ middleware.js:169
(anonymous) @ middleware.js:26
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:147
(anonymous) @ middleware.js:35
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:197
(anonymous) @ middleware.js:45
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:446
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:96
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
dispatch @ redux.js:636
(anonymous) @ actions.js:138
async function (async)
(anonymous) @ actions.js:111
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
_openURL @ AbstractApp.js:113
(anonymous) @ AbstractApp.js:47
Promise.then (async)
componentDidMount @ AbstractApp.js:44
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ds @ react-dom.production.min.js:204
Vs @ react-dom.production.min.js:263
Ws @ react-dom.production.min.js:263
(anonymous) @ react-dom.production.min.js:272
ys @ react-dom.production.min.js:208
el @ react-dom.production.min.js:272
render @ react-dom.production.min.js:273
Rs.renderEntryPoint @ index.web.js:71
(anonymous) @ MarriedCountriesTakeLot:25
Show 207 more frames
Logger.js:154 2021-02-05T19:39:59.066Z [features/overlay] <Object.componentDidMount>:  The conference will be reloaded after 11 seconds.
Logger.js:154 2021-02-05T19:39:59.072Z [features/base/connection] connection.otherError
o @ Logger.js:154
(anonymous) @ actions.web.js:35
Promise.catch (async)
(anonymous) @ actions.web.js:33
Promise.then (async)
(anonymous) @ actions.web.js:30
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
_start @ Conference.js:250
componentDidMount @ Conference.js:133
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ms @ react-dom.production.min.js:206
(anonymous) @ react-dom.production.min.js:114
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
ba @ react-dom.production.min.js:114
ga @ react-dom.production.min.js:113
ds @ react-dom.production.min.js:204
enqueueSetState @ react-dom.production.min.js:127
_.setState @ react.production.min.js:13
(anonymous) @ BaseApp.js:241
_navigate @ BaseApp.js:240
(anonymous) @ middleware.js:149
Promise.then (async)
(anonymous) @ middleware.js:149
(anonymous) @ middleware.js:169
(anonymous) @ middleware.js:26
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:147
(anonymous) @ middleware.js:35
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:197
(anonymous) @ middleware.js:45
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:446
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:96
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
dispatch @ redux.js:636
(anonymous) @ actions.js:138
async function (async)
(anonymous) @ actions.js:111
(anonymous) @ index.js:11
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:32
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:33
(anonymous) @ middleware.any.js:22
(anonymous) @ middleware.js:67
(anonymous) @ middleware.js:43
(anonymous) @ middleware.js:61
(anonymous) @ middleware.js:79
(anonymous) @ middleware.js:71
(anonymous) @ middleware.js:77
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:38
(anonymous) @ middleware.js:33
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:93
(anonymous) @ middleware.js:77
(anonymous) @ middleware.web.js:21
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:111
(anonymous) @ middleware.js:16
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:33
(anonymous) @ middleware.js:176
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:26
(anonymous) @ middleware.web.js:20
(anonymous) @ middleware.js:42
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:60
(anonymous) @ middleware.js:44
(anonymous) @ middleware.js:49
(anonymous) @ middleware.js:28
(anonymous) @ middleware.js:12
(anonymous) @ middleware.js:39
(anonymous) @ middleware.js:31
(anonymous) @ middleware.web.js:22
(anonymous) @ middleware.any.js:100
(anonymous) @ middleware.js:106
(anonymous) @ middleware.js:19
(anonymous) @ middleware.js:29
(anonymous) @ middleware.js:91
(anonymous) @ middleware.js:101
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:15
(anonymous) @ middleware.js:23
(anonymous) @ middleware.js:20
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:74
(anonymous) @ middleware.js:40
(anonymous) @ middleware.js:158
_openURL @ AbstractApp.js:113
(anonymous) @ AbstractApp.js:47
Promise.then (async)
componentDidMount @ AbstractApp.js:44
js @ react-dom.production.min.js:238
t.unstable_runWithPriority @ scheduler.production.min.js:20
pa @ react-dom.production.min.js:113
Es @ react-dom.production.min.js:230
ds @ react-dom.production.min.js:204
Vs @ react-dom.production.min.js:263
Ws @ react-dom.production.min.js:263
(anonymous) @ react-dom.production.min.js:272
ys @ react-dom.production.min.js:208
el @ react-dom.production.min.js:272
render @ react-dom.production.min.js:273
Rs.renderEntryPoint @ index.web.js:71
(anonymous) @ MarriedCountriesTakeLot:25
Show 184 more frames
Logger.js:154 2021-02-05T19:39:59.134Z [modules/RTC/RTCUtils.js] onUserMediaSuccess
Logger.js:154 2021-02-05T19:40:00.494Z [features/base/redux] <Object.persistState>:  redux state persisted. cfc1b0d891ec94af49db3efc4c60bd61 -> c3d8a6f1cb24a327d7e10a51bfc8142a```
gabriel-lopez commented 3 years ago

You may need to configure Plesk to enable WS proxying for the /xmpp-websocket and /colibri-ws routes.

You can check the JS console logs with Ctrl + Alt + i

Can you please add more information about that in documention ?

Is is possible to update traefik examples files ?

Thank you

saghul commented 3 years ago

Yes, I will add mention about the need to proxy those routes, but I don't know how to do it for Plesk or Traefik.

gabriel-lopez commented 3 years ago

Yes, I will add mention about the need to proxy those routes, but I don't know how to do it for Plesk or Traefik.

Okay, thank you.

/xmpp-websocket and /colibri-ws, need to be routed to prosody container ?

Thank you

bgrozev commented 3 years ago

/colibri-ws needs to route to jitsi-videobridge

saghul commented 3 years ago

/colibri-ws needs to route to jitsi-videobridge

In the Docker setup you can route both to the web container, since it already know how to route each.

mindrunner commented 3 years ago

I added the following to my nginx reverse proxy:

 location /xmpp-websocket {
   proxy_pass http://meet.my.domain;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

location /colibri-ws {
   proxy_pass http://meet.my.domain;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

Now I am getting a HTTP 403 on the ws-connections:

nginx-proxy_1  | meet.my.domain.de xxx.xxx.xxx.xxx - - [10/Feb/2021:10:50:49 +0100] "GET /xmpp-websocket?room=test HTTP/1.1" 403 284 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) JitsiMeet/2.4.2 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36"
CarstenHouweling commented 3 years ago

I'm getting status 301 when routing either to the web container or to the jvb container directly...

saghul commented 3 years ago

Do you have ENABLE_HTTP_REDIRECT set?

CarstenHouweling commented 3 years ago

Do you have ENABLE_HTTP_REDIRECT set?

I do now but nothing seems to have changed. (I don't want to hog this issue either)

https://edo-test.devoorkant.nl/jitsi

saghul commented 3 years ago

I'd suggest you don't deploy to a subfolder, we don't support that very well.

CarstenHouweling commented 3 years ago

Are you saying I can only host it on edo-test.devoorkant.nl/ and not on edo-test.devoorkant.nl/jitsi/ ? I'm only routing stuff with NGINX.. How would I handle this then? I can't have my app and jitsi on /

saghul commented 3 years ago

There are some problems, I can remember which, but let me put it this way: we never deploy Jitsi that way and won't notice if it breaks. You can use a subdomain like jitsi.edo-test.devoorkant.nl and have Jitsi at the root there, can't you?

mindrunner commented 3 years ago

Now I am getting a HTTP 403 on the ws-connections:

Any chance to figure out what might be my issue here?

saghul commented 3 years ago

Who replies with a 403 the Jitsi Nginx or the JVB?

mindrunner commented 3 years ago

The jitsi-web container loggs this:

web_1      | 172.21.0.8 - - [24/Feb/2021:21:15:50 +0100] "GET /xmpp-websocket?room=insufficienttripsreplyopposite HTTP/1.1" 403 284 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xx.xx.xx Safari/537.36"

JVB only sais:

jvb_1      | INFO: Running expire()
jvb_1      | Feb 24, 2021 9:14:55 PM org.jitsi.utils.logging2.LoggerImpl log
jvb_1      | INFO: Performed a successful health check in PT0S. Sticky failure: false
jvb_1      | Feb 24, 2021 9:15:05 PM org.jitsi.utils.logging2.LoggerImpl log
jvb_1      | INFO: Performed a successful health check in PT0S. Sticky failure: false
jvb_1      | Feb 24, 2021 9:15:15 PM org.jitsi.utils.logging2.LoggerImpl log
jvb_1      | INFO: Performed a successful health check in PT0S. Sticky failure: false
jvb_1      | Feb 24, 2021 9:15:25 PM org.jitsi.utils.logging2.LoggerImpl log
jvb_1      | INFO: Performed a successful health check in PT0S. Sticky failure: false
jvb_1      | Feb 24, 2021 9:15:35 PM org.jitsi.utils.logging2.LoggerImpl log
jvb_1      | INFO: Performed a successful health check in PT0S. Sticky failure: false
jvb_1      | Feb 24, 2021 9:15:45 PM org.jitsi.utils.logging2.LoggerImpl log
jvb_1      | INFO: Performed a successful health check in PT0S. Sticky failure: false

So, I guess, it is the nginx, but not entirely sure.

imperative commented 3 years ago

I am having the same problem, 403 error from accessing "GET /xmpp-websocket?" and "You have been disconnected" errors. Not sure why this is closed, this an active problem with current stable version of the docker-jitsi-meet, which shows up in the default installation and makes the setup completley unusable when websockets are used.

saghul commented 3 years ago

I am having the same problem, 403 error from accessing "GET /xmpp-websocket?" and "You have been disconnected" errors.

Not sure why this is closed, this an active problem with current stable version of the docker-jitsi-meet, which shows up in the default installation and makes the setup completley unusable when websockets are used.

It's closed because nobody has been able to provide steps to actually reproduce it.

I haven't been able to reproduce this behavior on a default install, ever.

mindrunner commented 3 years ago

I am able to provide steps to reproduce. However, this involves third party containers for ssl-termination. Would that help? Or rather be rejected because it seems rather like an nginx config issue than a jitsi one?

saghul commented 3 years ago

If you are using a reverse proxy in front you are not really using the default install.

Mentioning that upfront saves time.

Please provide repro steps and I'll see what I can do.

imperative commented 3 years ago

In my case I am not using any (additional, besides the default nginx) reverse proxy, I am simply using the basic default install.

I have been able to identify the minimal possible steps to make it work in my case:

in .env, the line "PUBLIC_URL=https://jitsi.redacted.com:443" must not have the port specified. This is very confusing since the default config line in the sample .env has an example with port specified. If I remove the port ("PUBLIC_URL=https://jitsi.redacted.com"), it seems to work normally (no error in the web interface).

However, for a full picture, it seems that this depends on the HTTPS port.

If the the HTTPS_PORT=443, then the PUBLIC_URL line MAY NOT have port specified (that combination produces unusable installation and "you have been disconnected" errors).

If the HTTPS_PORT is some other value than 443, then PUBLIC_URL line seemingly MUST include a port, otherwise the installation is similarly unusable.

I am not sure what the reason is, but do you think there is a good way to solve this? Is there something better we can do than maybe just add a comment in the sample .env?

saghul commented 3 years ago

Why would you specify the port when it's the default? If the example is confusing we can simplify the example I don't expect many public deployments on ports other than 443.

imperative commented 3 years ago

Why would you specify the port when it's the default?

Because the config file had the port in the option and a title "this option needs to be specified". Also because something like "https://jitsi.redacted.com:443" is a perfectly valid url, there is nothing wrong with it.

If a config option actually cares about whether there is a port or not (which it seems to do in that case), and if it fails in very obscure non-obvious ways (like error 403 for some reason) when that requirement is not met, it should be at least described to the admin, anything else is just asking for trouble. Who knows how many of these "you have been disconnected" reports in the issues were simply due to people not knowing about this quirk.

But I think it is also interesting, why does it care about the port on the url? What makes it fail?

saghul commented 3 years ago

I'm not sure.

mindrunner commented 3 years ago

Please provide repro steps and I'll see what I can do.

This is my config for a system wide docker-letsencrypt setup:

docker-compose.yml:

version: '3'

services:

  nginx-proxy:
    image: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - htpasswd:/etc/nginx/htpasswd
      - conf:/etc/nginx/conf.d
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - certs:/etc/nginx/certs:ro
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
    environment:
      - "TZ=Europe/Berlin"
    restart: always

  docker-gen:
    image: jwilder/docker-gen
    command: -notify-sighup letsencrypt-docker_nginx-proxy_1 -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
    depends_on:
      - nginx-proxy
    volumes:
      - htpasswd:/etc/nginx/htpasswd
      - conf:/etc/nginx/conf.d
      - vhost:/etc/nginx/vhost.d
      - certs:/etc/nginx/certs:ro
      - ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.docker_gen"
    environment:
      - "TZ=Europe/Berlin"
    restart: always

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion:dev
    depends_on:
      - nginx-proxy
      - docker-gen
    volumes:
      - conf:/etc/nginx/conf.d
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - certs:/etc/nginx/certs
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt_user_data:/app/letsencrypt_user_data:ro
    environment:
      - "TZ=Europe/Berlin"
    restart: always

volumes:
  htpasswd:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /mnt/data/docker-data/nginx/htpasswd/
  conf:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /mnt/data/docker-data/nginx/conf.d/
  vhost:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /mnt/data/docker-data/nginx/vhost.d/
  html:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /mnt/data/docker-data/nginx/html/
  certs:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /mnt/data/docker-data/nginx/certs/

networks:
  default:
    external:
      name: nginx-proxy

nginx.tmpl

{{ define "upstream" }}
        {{ if .Address }}
                {{/* If we got the containers from swarm and this container's port is published to host, use host IP:PORT */}}
                {{ if and .Container.Node.ID .Address.HostPort }}
                        # {{ .Container.Node.Name }}/{{ .Container.Name }}
                        server {{ .Container.Node.Address.IP }}:{{ .Address.HostPort }};
                {{/* If there is no swarm node or the port is not published on host, use container's IP:PORT */}}
                {{ else if .Address.IP }}
                        # {{ .Container.Name }}
                        server {{ .Address.IP }}:{{ .Address.Port }};
                {{ else }}
                        # {{ .Container.Name }}
                        server {{ .Container.Name }}:{{ .Address.Port }};
                {{ end }}
        {{ else }}
                # {{ .Container.Name }}
                server {{ .Container.IP }} down;
        {{ end }}
{{ end }}

# If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the
# scheme used to connect to this server
map $http_x_forwarded_proto $proxy_x_forwarded_proto {
  default $http_x_forwarded_proto;
  ''      $scheme;
}

# If we receive Upgrade, set Connection to "upgrade"; otherwise, delete any
# Connection header that may have been passed to this server
map $http_upgrade $proxy_connection {
  default upgrade;
  '' close;
}

gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

log_format vhost '$host $remote_addr - $remote_user [$time_local] '
                 '"$request" $status $body_bytes_sent '
                 '"$http_referer" "$http_user_agent"';

access_log off;

{{ if (exists "/etc/nginx/proxy.conf") }}
include /etc/nginx/proxy.conf;
{{ else }}
# HTTP 1.1 support
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
{{ end }}

server {
        server_name _; # This is just an invalid value which will never trigger on a real hostname.
        listen 80;
        access_log /var/log/nginx/access.log vhost;
        return 503;
}

{{ if (and (exists "/etc/nginx/certs/default.crt") (exists "/etc/nginx/certs/default.key")) }}
server {
        server_name _; # This is just an invalid value which will never trigger on a real hostname.
        listen 443 ssl http2;
        access_log /var/log/nginx/access.log vhost;
        return 503;

        ssl_certificate /etc/nginx/certs/default.crt;
        ssl_certificate_key /etc/nginx/certs/default.key;
}
{{ end }}

{{ range $host, $containers := groupByMulti $ "Env.VIRTUAL_HOST" "," }}

upstream {{ $host }} {
{{ range $container := $containers }}
        {{ $addrLen := len $container.Addresses }}
        {{/* If only 1 port exposed, use that */}}
        {{ if eq $addrLen 1 }}
                {{ $address := index $container.Addresses 0 }}
                {{ template "upstream" (dict "Container" $container "Address" $address) }}
        {{/* If more than one port exposed, use the one matching VIRTUAL_PORT env var, falling back to standard web port 80 */}}
        {{ else }}
                {{ $port := coalesce $container.Env.VIRTUAL_PORT "80" }}
                {{ $address := where $container.Addresses "Port" $port | first }}
                {{ template "upstream" (dict "Container" $container "Address" $address) }}
        {{ end }}
{{ end }}
}

{{ $default_host := or ($.Env.DEFAULT_HOST) "" }}
{{ $default_server := index (dict $host "" $default_host "default_server") $host }}

{{/* Get the VIRTUAL_PROTO defined by containers w/ the same vhost, falling back to "http" */}}
{{ $proto := or (first (groupByKeys $containers "Env.VIRTUAL_PROTO")) "http" }}

{{/* Get the first cert name defined by containers w/ the same vhost */}}
{{ $certName := (first (groupByKeys $containers "Env.CERT_NAME")) }}

{{/* Get the best matching cert  by name for the vhost. */}}
{{ $vhostCert := (closest (dir "/etc/nginx/certs") (printf "%s.crt" $host))}}

{{/* vhostCert is actually a filename so remove any suffixes since they are added later */}}
{{ $vhostCert := replace $vhostCert ".crt" "" -1 }}
{{ $vhostCert := replace $vhostCert ".key" "" -1 }}

{{/* Use the cert specifid on the container or fallback to the best vhost match */}}
{{ $cert := (coalesce $certName $vhostCert) }}

{{ if (and (ne $cert "") (exists (printf "/etc/nginx/certs/%s.crt" $cert)) (exists (printf "/etc/nginx/certs/%s.key" $cert))) }}

server {
        server_name {{ $host }};
        listen 80 {{ $default_server }};
        access_log /var/log/nginx/access.log vhost;
        return 301 https://$host$request_uri;
}

server {
        server_name {{ $host }};
        listen 443 ssl http2 {{ $default_server }};
        access_log /var/log/nginx/access.log vhost;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;

        ssl_prefer_server_ciphers on;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;

        ssl_certificate /etc/nginx/certs/{{ (printf "%s.crt" $cert) }};
        ssl_certificate_key /etc/nginx/certs/{{ (printf "%s.key" $cert) }};

        {{ if (exists (printf "/etc/nginx/certs/%s.dhparam.pem" $cert)) }}
        ssl_dhparam {{ printf "/etc/nginx/certs/%s.dhparam.pem" $cert }};
        {{ end }}

        add_header Strict-Transport-Security "max-age=31536000";

        {{ if (exists (printf "/etc/nginx/vhost.d/%s" $host)) }}
        include {{ printf "/etc/nginx/vhost.d/%s" $host }};
        {{ else if (exists "/etc/nginx/vhost.d/default") }}
        include /etc/nginx/vhost.d/default;
        {{ end }}

        location / {
                proxy_pass {{ trim $proto }}://{{ trim $host }};
                {{ if (exists (printf "/etc/nginx/htpasswd/%s" $host)) }}
                auth_basic      "Restricted {{ $host }}";
                auth_basic_user_file    {{ (printf "/etc/nginx/htpasswd/%s" $host) }};
                {{ end }}
                {{ if (exists (printf "/etc/nginx/vhost.d/%s_location" $host)) }}
                include {{ printf "/etc/nginx/vhost.d/%s_location" $host}};
                {{ else if (exists "/etc/nginx/vhost.d/default_location") }}
                include /etc/nginx/vhost.d/default_location;
                {{ end }}
        }
}
{{ else }}

server {
        server_name {{ $host }};
        listen 80 {{ $default_server }};
        access_log /var/log/nginx/access.log vhost;

        {{ if (exists (printf "/etc/nginx/vhost.d/%s" $host)) }}
        include {{ printf "/etc/nginx/vhost.d/%s" $host }};
        {{ else if (exists "/etc/nginx/vhost.d/default") }}
        include /etc/nginx/vhost.d/default;
        {{ end }}

        location / {
                proxy_pass {{ trim $proto }}://{{ trim $host }};
                {{ if (exists (printf "/etc/nginx/htpasswd/%s" $host)) }}
                auth_basic      "Restricted {{ $host }}";
                auth_basic_user_file    {{ (printf "/etc/nginx/htpasswd/%s" $host) }};
                {{ end }}
                {{ if (exists (printf "/etc/nginx/vhost.d/%s_location" $host)) }}
                include {{ printf "/etc/nginx/vhost.d/%s_location" $host}};
                {{ else if (exists "/etc/nginx/vhost.d/default_location") }}
                include /etc/nginx/vhost.d/default_location;
                {{ end }}
        }
}

{{ if (and (exists "/etc/nginx/certs/default.crt") (exists "/etc/nginx/certs/default.key")) }}
server {
        server_name {{ $host }};
        listen 443 ssl http2 {{ $default_server }};
        access_log /var/log/nginx/access.log vhost;
        return 503;

        ssl_certificate /etc/nginx/certs/default.crt;
        ssl_certificate_key /etc/nginx/certs/default.key;
}
{{ end }}

{{ end }}
{{ end }}

Then, for the application itself, I am using this compose file:

version: '3'

services:
    web:
        image: jitsi/web:stable-5076
        restart: ${RESTART_POLICY}
        expose:
          - 80
        volumes:
            - ${CONFIG}/web:/config:Z
            - ${CONFIG}/web/letsencrypt:/etc/letsencrypt:Z
            - ${CONFIG}/transcripts:/usr/share/jitsi-meet/transcripts:Z
        environment:
            - "VIRTUAL_HOST=my-jitsi-server.example.com"
            - "VIRTUAL_NETWORK=nginx-proxy"
            - "VIRTUAL_PORT=80"
            - "LETSENCRYPT_HOST=my-jitsi-server.example.com"
            - "LETSENCRYPT_EMAIL=xxx@xxx.com"
            - ENABLE_LETSENCRYPT
            - ENABLE_HTTP_REDIRECT
            - ENABLE_HSTS
            - ENABLE_XMPP_WEBSOCKET
            - DISABLE_HTTPS
            - LETSENCRYPT_DOMAIN
            - LETSENCRYPT_EMAIL
            - LETSENCRYPT_USE_STAGING
            - PUBLIC_URL
            - TZ
            - AMPLITUDE_ID
            - ANALYTICS_SCRIPT_URLS
            - ANALYTICS_WHITELISTED_EVENTS
            - BRIDGE_CHANNEL
            - CALLSTATS_CUSTOM_SCRIPT_URL
            - CALLSTATS_ID
            - CALLSTATS_SECRET
            - CHROME_EXTENSION_BANNER_JSON
            - CONFCODE_URL
            - CONFIG_EXTERNAL_CONNECT
            - DEPLOYMENTINFO_ENVIRONMENT
            - DEPLOYMENTINFO_ENVIRONMENT_TYPE
            - DEPLOYMENTINFO_USERREGION
            - DIALIN_NUMBERS_URL
            - DIALOUT_AUTH_URL
            - DIALOUT_CODES_URL
            - DROPBOX_APPKEY
            - DROPBOX_REDIRECT_URI
            - DYNAMIC_BRANDING_URL
            - ENABLE_AUDIO_PROCESSING
            - ENABLE_AUTH
            - ENABLE_CALENDAR
            - ENABLE_FILE_RECORDING_SERVICE
            - ENABLE_FILE_RECORDING_SERVICE_SHARING
            - ENABLE_GUESTS
            - ENABLE_IPV6
            - ENABLE_LIPSYNC
            - ENABLE_NO_AUDIO_DETECTION
            - ENABLE_P2P
            - ENABLE_PREJOIN_PAGE
            - ENABLE_WELCOME_PAGE
            - ENABLE_CLOSE_PAGE
            - ENABLE_RECORDING
            - ENABLE_REMB
            - ENABLE_REQUIRE_DISPLAY_NAME
            - ENABLE_SIMULCAST
            - ENABLE_STATS_ID
            - ENABLE_STEREO
            - ENABLE_SUBDOMAINS
            - ENABLE_TALK_WHILE_MUTED
            - ENABLE_TCC
            - ENABLE_TRANSCRIPTIONS
            - ETHERPAD_PUBLIC_URL
            - ETHERPAD_URL_BASE
            - GOOGLE_ANALYTICS_ID
            - GOOGLE_API_APP_CLIENT_ID
            - INVITE_SERVICE_URL
            - JICOFO_AUTH_USER
            - MATOMO_ENDPOINT
            - MATOMO_SITE_ID
            - MICROSOFT_API_APP_CLIENT_ID
            - NGINX_RESOLVER
            - NGINX_WORKER_PROCESSES
            - NGINX_WORKER_CONNECTIONS
            - PEOPLE_SEARCH_URL
            - RESOLUTION
            - RESOLUTION_MIN
            - RESOLUTION_WIDTH
            - RESOLUTION_WIDTH_MIN
            - START_AUDIO_ONLY
            - START_AUDIO_MUTED
            - DISABLE_AUDIO_LEVELS
            - ENABLE_NOISY_MIC_DETECTION
            - START_BITRATE
            - DESKTOP_SHARING_FRAMERATE_MIN
            - DESKTOP_SHARING_FRAMERATE_MAX
            - START_VIDEO_MUTED
            - TESTING_CAP_SCREENSHARE_BITRATE
            - TESTING_OCTO_PROBABILITY
            - XMPP_AUTH_DOMAIN
            - XMPP_BOSH_URL_BASE
            - XMPP_DOMAIN
            - XMPP_GUEST_DOMAIN
            - XMPP_MUC_DOMAIN
            - XMPP_RECORDER_DOMAIN
            - TOKEN_AUTH_URL
        networks:
          proxy-tier:
                aliases:
                    - ${XMPP_DOMAIN}

    # XMPP server
    prosody:
        image: jitsi/prosody:stable-5076
        restart: ${RESTART_POLICY}
        expose:
            - '5222'
            - '5347'
            - '5280'
        volumes:
            - ${CONFIG}/prosody/config:/config:Z
            - ${CONFIG}/prosody/prosody-plugins-custom:/prosody-plugins-custom:Z
        environment:
            - AUTH_TYPE
            - ENABLE_AUTH
            - ENABLE_GUESTS
            - GLOBAL_MODULES
            - GLOBAL_CONFIG
            - LDAP_URL
            - LDAP_BASE
            - LDAP_BINDDN
            - LDAP_BINDPW
            - LDAP_FILTER
            - LDAP_AUTH_METHOD
            - LDAP_VERSION
            - LDAP_USE_TLS
            - LDAP_TLS_CIPHERS
            - LDAP_TLS_CHECK_PEER
            - LDAP_TLS_CACERT_FILE
            - LDAP_TLS_CACERT_DIR
            - LDAP_START_TLS
            - XMPP_DOMAIN
            - XMPP_AUTH_DOMAIN
            - XMPP_GUEST_DOMAIN
            - XMPP_MUC_DOMAIN
            - XMPP_INTERNAL_MUC_DOMAIN
            - XMPP_MODULES
            - XMPP_MUC_MODULES
            - XMPP_INTERNAL_MUC_MODULES
            - XMPP_RECORDER_DOMAIN
            - JICOFO_COMPONENT_SECRET
            - JICOFO_AUTH_USER
            - JICOFO_AUTH_PASSWORD
            - JVB_AUTH_USER
            - JVB_AUTH_PASSWORD
            - JIGASI_XMPP_USER
            - JIGASI_XMPP_PASSWORD
            - JIBRI_XMPP_USER
            - JIBRI_XMPP_PASSWORD
            - JIBRI_RECORDER_USER
            - JIBRI_RECORDER_PASSWORD
            - JWT_APP_ID
            - JWT_APP_SECRET
            - JWT_ACCEPTED_ISSUERS
            - JWT_ACCEPTED_AUDIENCES
            - JWT_ASAP_KEYSERVER
            - JWT_ALLOW_EMPTY
            - JWT_AUTH_TYPE
            - JWT_TOKEN_AUTH_MODULE
            - LOG_LEVEL
            - TZ
        networks:
          proxy-tier:
                aliases:
                    - ${XMPP_SERVER}

    # Focus component
    jicofo:
        image: jitsi/jicofo:stable-5076
        restart: ${RESTART_POLICY}
        volumes:
            - ${CONFIG}/jicofo:/config:Z
        environment:
            - AUTH_TYPE
            - BRIDGE_AVG_PARTICIPANT_STRESS
            - BRIDGE_STRESS_THRESHOLD
            - ENABLE_AUTH
            - ENABLE_AUTO_OWNER
            - ENABLE_CODEC_VP8
            - ENABLE_CODEC_VP9
            - ENABLE_CODEC_H264
            - ENABLE_RECORDING
            - ENABLE_SCTP
            - JICOFO_COMPONENT_SECRET
            - JICOFO_AUTH_USER
            - JICOFO_AUTH_PASSWORD
            - JICOFO_ENABLE_BRIDGE_HEALTH_CHECKS
            - JICOFO_CONF_INITIAL_PARTICIPANT_WAIT_TIMEOUT
            - JICOFO_CONF_SINGLE_PARTICIPANT_TIMEOUT
            - JICOFO_ENABLE_HEALTH_CHECKS
            - JICOFO_SHORT_ID
            - JICOFO_RESERVATION_ENABLED
            - JICOFO_RESERVATION_REST_BASE_URL
            - JIBRI_BREWERY_MUC
            - JIBRI_REQUEST_RETRIES
            - JIBRI_PENDING_TIMEOUT
            - JIGASI_BREWERY_MUC
            - JIGASI_SIP_URI
            - JVB_BREWERY_MUC
            - MAX_BRIDGE_PARTICIPANTS
            - OCTO_BRIDGE_SELECTION_STRATEGY
            - TZ
            - XMPP_DOMAIN
            - XMPP_AUTH_DOMAIN
            - XMPP_INTERNAL_MUC_DOMAIN
            - XMPP_MUC_DOMAIN
            - XMPP_SERVER
        depends_on:
            - prosody
        networks:
          - proxy-tier

    # Video bridge
    jvb:
        image: jitsi/jvb:stable-5076
        restart: ${RESTART_POLICY}
        ports:
            - '${JVB_PORT}:${JVB_PORT}/udp'
            - '${JVB_TCP_MAPPED_PORT}:${JVB_TCP_PORT}'
        volumes:
            - ${CONFIG}/jvb:/config:Z
        environment:
            - DOCKER_HOST_ADDRESS
            - XMPP_AUTH_DOMAIN
            - XMPP_INTERNAL_MUC_DOMAIN
            - XMPP_SERVER
            - JVB_AUTH_USER
            - JVB_AUTH_PASSWORD
            - JVB_BREWERY_MUC
            - JVB_PORT
            - JVB_TCP_HARVESTER_DISABLED
            - JVB_TCP_PORT
            - JVB_TCP_MAPPED_PORT
            - JVB_STUN_SERVERS
            - JVB_ENABLE_APIS
            - JVB_WS_DOMAIN
            - JVB_WS_SERVER_ID
            - PUBLIC_URL
            - TZ
        depends_on:
            - prosody
        networks:
          proxy-tier:
            aliases:
              - jvb.meet.jitsi

networks:
  proxy-tier:
    external:
      name: nginx-proxy

Jistsi config itself is prtetty much default I guess.

Let me know if you need any help with setting it up! :)

(stable-5076 works, latest fails)