Deployment of Jitsi Meet server with Nginx webserver does not work

Hello,

It is my first time installing and configuring Jitsi using the doc here (github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md).
The installation has been done on a VM with 4 vcpu and 8 GB of RAM.
After installation, the webpage is accessible but when a user tries to create a meeting, he gets the message “You have been disconnected”.

Attached are the logs.

Javascript Firefox:

(TIME) index.html loaded: 237 test:22:17
2020-04-22T11:37:40.486Z [modules/browser/BrowserCapabilities.js] This appears to be firefox, ver: 75.0 Logger.js:154:22
2020-04-22T11:37:41.771Z [index.web] (TIME) document ready: 9189 Logger.js:154:22
2020-04-22T11:37:41.990Z [features/base/lastn] There is no active conference, not updating last N Logger.js:154:22
2020-04-22T11:37:41.993Z [modules/UI/videolayout/VideoLayout.js] : Missed avatar update - no small video yet for undefined Logger.js:154:22
2020-04-22T11:37:42.030Z [features/base/media] Start muted: Logger.js:154:22
2020-04-22T11:37:42.039Z [features/base/media] Start audio only set to false Logger.js:154:22
2020-04-22T11:37:42.050Z [features/analytics] <ne/</<>: Loaded 0 analytics handlers Logger.js:154:22
2020-04-22T11:37:42.053Z [modules/statistics/AnalyticsAdapter.js] : Disposing of analytics adapter. Logger.js:154:22
2020-04-22T11:37:42.054Z [features/analytics] <ne/<>: Error: “No analytics handlers created!”
ne functions.js:100
Logger.js:154:22
2020-04-22T11:37:42.326Z [features/base/devices] setAudioOutputDevice: undefined[default] Logger.js:154:22
2020-04-22T11:37:42.338Z [features/base/devices] <O/</</<>: Failed to set audio output device. Default audio output device will be used instead Error: Audio output device change is not supported Logger.js:154:22
2020-04-22T11:37:42.345Z [modules/xmpp/xmpp.js] <_initStrophePlugins>: P2P STUN servers:

Array [ {…} ]
Logger.js:154:22
2020-04-22T11:37:42.360Z [modules/xmpp/xmpp.js] : (TIME) Strophe connecting: 9778 Logger.js:154:22
2020-04-22T11:37:42.370Z [modules/RTC/RTCUtils.js] : Using the new gUM flow Logger.js:154:22
2020-04-22T11:37:42.373Z [modules/RTC/RTCUtils.js] <newObtainAudioAndVideoPermissions/i<>: Got media constraints:

Object { video: {…}, audio: {…} }
Logger.js:154:22
2020-04-22T11:37:42.377Z [features/base/tracks] <E/</<>: Failed to create local tracks

Array [ “audio”, “video” ]
TypeError: “navigator.mediaDevices is undefined”
_newGetUserMediaWithConstraints RTCUtils.js:985
_newGetUserMediaWithConstraints RTCUtils.js:984
i RTCUtils.js:1358
Logger.js:154:22
2020-04-22T11:37:42.381Z [modules/RTC/RTCUtils.js] : Using the new gUM flow Logger.js:154:22
2020-04-22T11:37:42.382Z [modules/RTC/RTCUtils.js] <newObtainAudioAndVideoPermissions/i<>: Got media constraints:

Object { video: false, audio: {…} }
Logger.js:154:22
2020-04-22T11:37:42.385Z [features/base/tracks] <E/</<>: Failed to create local tracks

Array [ “audio” ]
TypeError: “navigator.mediaDevices is undefined”
_newGetUserMediaWithConstraints RTCUtils.js:985
_newGetUserMediaWithConstraints RTCUtils.js:984
i RTCUtils.js:1358
Logger.js:154:22
2020-04-22T11:37:42.388Z [modules/RTC/RTCUtils.js] : Using the new gUM flow Logger.js:154:22
2020-04-22T11:37:42.390Z [modules/RTC/RTCUtils.js] <newObtainAudioAndVideoPermissions/i<>: Got media constraints:

Object { video: {…}, audio: false }
Logger.js:154:22
2020-04-22T11:37:42.392Z [features/base/tracks] <E/</<>: Failed to create local tracks

Array [ “video” ]
TypeError: “navigator.mediaDevices is undefined”
_newGetUserMediaWithConstraints RTCUtils.js:985
_newGetUserMediaWithConstraints RTCUtils.js:984
i RTCUtils.js:1358
Logger.js:154:22
XML Parsing Error: mismatched tag. Expected: . Location: http://MY_DOMAIN/http-bind?room=test Line Number 4, Column 3: http-bind:4:3
2020-04-22T11:37:43.187Z [JitsiMeetJS.js] : UnhandledError: null Script: null Line: null Column: null StackTrace: Error: “Strophe: request id 1.1 error 404 happened”
log strophe.util.js:89
error strophe.umd.js:1392
_onRequestStateChange strophe.umd.js:5017
Logger.js:154:22
2020-04-22T11:37:43.193Z [modules/xmpp/strophe.util.js] <t.a/r.Strophe.log>: Strophe: request id 1.1 error 404 happened Logger.js:154:22
2020-04-22T11:37:43.195Z [modules/xmpp/strophe.util.js] <t.a/r.Strophe.log>: Strophe: request errored, status: 404, number of errors: 1 Logger.js:154:22
2020-04-22T11:37:43.198Z [modules/xmpp/xmpp.js] : (TIME) Strophe disconnecting: 10617 Logger.js:154:22
2020-04-22T11:37:43.204Z [modules/xmpp/xmpp.js] : (TIME) Strophe disconnected: 10624 Logger.js:154:22
2020-04-22T11:37:43.207Z [modules/xmpp/xmpp.js] : XMPP connection dropped! Logger.js:154:22
2020-04-22T11:37:43.212Z [modules/statistics/statistics.js] <S.sendAnalyticsAndLog>: {“type”:“operational”,“action”:“connection.failed”,“attributes”:{“error_type”:“connection.droppedError”,“error_message”:“connection-dropped-error”,“suspend_time”:0,“time_since_last_success”:null}} Logger.js:154:22
2020-04-22T11:37:43.213Z [connection.js] CONNECTION FAILED: connection.droppedError

2020-04-22T12:23:59.573Z [modules/statistics/AnalyticsAdapter.js] : Disposing of analytics adapter. Logger.js:154:22
2020-04-22T12:23:59.575Z [features/analytics] <ne/<>: Error: “No analytics handlers created!”
ne functions.js:100
Logger.js:154:22
2020-04-22T12:23:59.670Z [features/base/storage] : redux state persisted. d8ff3668718ceeb7b7a783c8dd015768 -> f8a7db8c06f502be5cbfeb524c8254ef Logger.js:154:22
(TIME) index.html loaded: 244 test:22:17
2020-04-22T12:24:00.527Z [modules/browser/BrowserCapabilities.js] This appears to be firefox, ver: 75.0 Logger.js:154:22
2020-04-22T12:24:01.397Z [index.web] (TIME) document ready: 1840 Logger.js:154:22
2020-04-22T12:24:01.676Z [features/base/lastn] There is no active conference, not updating last N Logger.js:154:22
2020-04-22T12:24:01.679Z [modules/UI/videolayout/VideoLayout.js] : Missed avatar update - no small video yet for undefined Logger.js:154:22
2020-04-22T12:24:01.716Z [features/base/media] Start muted: Logger.js:154:22
2020-04-22T12:24:01.724Z [features/base/media] Start audio only set to false Logger.js:154:22
2020-04-22T12:24:01.737Z [features/analytics] <ne/</<>: Loaded 0 analytics handlers Logger.js:154:22
2020-04-22T12:24:01.741Z [modules/statistics/AnalyticsAdapter.js] : Disposing of analytics adapter. Logger.js:154:22
2020-04-22T12:24:01.743Z [features/analytics] <ne/<>: Error: “No analytics handlers created!”
ne functions.js:100
Logger.js:154:22
2020-04-22T12:24:02.147Z [features/base/devices] setAudioOutputDevice: undefined[default] Logger.js:154:22
2020-04-22T12:24:02.160Z [features/base/devices] <O/</</<>: Failed to set audio output device. Default audio output device will be used instead Error: Audio output device change is not supported Logger.js:154:22
2020-04-22T12:24:02.167Z [modules/xmpp/xmpp.js] <_initStrophePlugins>: P2P STUN servers:

Array [ {…} ]
Logger.js:154:22
2020-04-22T12:24:02.180Z [modules/xmpp/xmpp.js] : (TIME) Strophe connecting: 2622 Logger.js:154:22
2020-04-22T12:24:02.192Z [modules/RTC/RTCUtils.js] : Using the new gUM flow Logger.js:154:22
2020-04-22T12:24:02.195Z [modules/RTC/RTCUtils.js] <newObtainAudioAndVideoPermissions/i<>: Got media constraints:

Object { video: {…}, audio: {…} }
Logger.js:154:22
2020-04-22T12:24:02.201Z [features/base/tracks] <E/</<>: Failed to create local tracks

Array [ “audio”, “video” ]
TypeError: “navigator.mediaDevices is undefined”
_newGetUserMediaWithConstraints RTCUtils.js:985
_newGetUserMediaWithConstraints RTCUtils.js:984
i RTCUtils.js:1358
Logger.js:154:22
2020-04-22T12:24:02.206Z [modules/RTC/RTCUtils.js] : Using the new gUM flow Logger.js:154:22
2020-04-22T12:24:02.207Z [modules/RTC/RTCUtils.js] <newObtainAudioAndVideoPermissions/i<>: Got media constraints:

Object { video: false, audio: {…} }
Logger.js:154:22
2020-04-22T12:24:02.211Z [features/base/tracks] <E/</<>: Failed to create local tracks

Array [ “audio” ]
TypeError: “navigator.mediaDevices is undefined”
_newGetUserMediaWithConstraints RTCUtils.js:985
_newGetUserMediaWithConstraints RTCUtils.js:984
i RTCUtils.js:1358
Logger.js:154:22
2020-04-22T12:24:02.214Z [modules/RTC/RTCUtils.js] : Using the new gUM flow Logger.js:154:22
2020-04-22T12:24:02.216Z [modules/RTC/RTCUtils.js] <newObtainAudioAndVideoPermissions/i<>: Got media constraints:

Object { video: {…}, audio: false }
Logger.js:154:22
2020-04-22T12:24:02.220Z [features/base/tracks] <E/</<>: Failed to create local tracks

Array [ “video” ]
TypeError: “navigator.mediaDevices is undefined”
_newGetUserMediaWithConstraints RTCUtils.js:985
_newGetUserMediaWithConstraints RTCUtils.js:984
i RTCUtils.js:1358
Logger.js:154:22
XML Parsing Error: mismatched tag. Expected: . Location: http://MY_DOMAIN/http-bind?room=test Line Number 4, Column 3: http-bind:4:3
2020-04-22T12:24:03.169Z [JitsiMeetJS.js] : UnhandledError: null Script: null Line: null Column: null StackTrace: Error: “Strophe: request id 1.1 error 404 happened”
log strophe.util.js:89
error strophe.umd.js:1392
_onRequestStateChange strophe.umd.js:5017
Logger.js:154:22
2020-04-22T12:24:03.171Z [modules/xmpp/strophe.util.js] <t.a/r.Strophe.log>: Strophe: request id 1.1 error 404 happened Logger.js:154:22
2020-04-22T12:24:03.173Z [modules/xmpp/strophe.util.js] <t.a/r.Strophe.log>: Strophe: request errored, status: 404, number of errors: 1 Logger.js:154:22
2020-04-22T12:24:03.175Z [modules/xmpp/xmpp.js] : (TIME) Strophe disconnecting: 3618 Logger.js:154:22
2020-04-22T12:24:03.178Z [modules/xmpp/xmpp.js] : (TIME) Strophe disconnected: 3621 Logger.js:154:22
2020-04-22T12:24:03.179Z [modules/xmpp/xmpp.js] : XMPP connection dropped! Logger.js:154:22
2020-04-22T12:24:03.182Z [modules/statistics/statistics.js] <S.sendAnalyticsAndLog>: {“type”:“operational”,“action”:“connection.failed”,“attributes”:{“error_type”:“connection.droppedError”,“error_message”:“connection-dropped-error”,“suspend_time”:0,“time_since_last_success”:null}} Logger.js:154:22
2020-04-22T12:24:03.184Z [connection.js] CONNECTION FAILED: connection.droppedError Logger.js:154:22
2020-04-22T12:24:03.203Z [features/overlay] : The conference will be reloaded after 27 seconds. Logger.js:154:22
2020-04-22T12:24:03.214Z [features/base/connection] <p/</</<>: connection.droppedError Logger.js:154:22
2020-04-22T12:24:03.575Z [features/base/storage] : redux state persisted. f8a7db8c06f502be5cbfeb524c8254ef -> 21a9be1687d3bd6fcbff45d206da6e21

/var/log/jitsi/jicofo.log file:

reply received from MY_DOMAIN: XMPPError: item-not-found - cancel
Jicofo 2020-04-22 06:28:16.773 INFO: [41] org.jitsi.jicofo.health.Health.log() Performed a successful health check in PT0.009S. Sticky failure: false
Jicofo 2020-04-22 06:28:26.768 INFO: [41] org.jitsi.jicofo.health.Health.log() Performed a successful health check in PT0.004S. Sticky failure: false
Jicofo 2020-04-22 06:28:28.399 INFO: [71] org.jitsi.impl.protocol.xmpp.OpSetSubscriptionImpl.log() Subscribing to sharedStatsNode node at MY_DOMAIN

/var/log/jitsi/jvb.log
2020-04-15 16:42:07.330 WARNING: [23] [hostname=localhost id=shard] MucClient.lambda$getConnectAndLoginCallable$7#643: [MucClient id=shard hostname=localhost] error connecting
org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: ‘localhost:5222’ failed because: localhost/127.0.0.1 exception: java.net.ConnectException: Connection refused (Connection refused), localhost/0:0:0:0:0:0:0:1 exception: java.net.ConnectException: Connection refused (Connection refused)
at org.jivesoftware.smack.SmackException$ConnectionException.from(SmackException.java:278)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:619)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:902)
at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:383)
at org.jitsi.xmpp.mucclient.MucClient.lambda$getConnectAndLoginCallable$7(MucClient.java:638)
at org.jitsi.retry.RetryStrategy$TaskRunner.run(RetryStrategy.java:193)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
2020-04-15 16:42:08.616 INFO: [21] org.ice4j.ice.harvest.MappingCandidateHarvesters.initialize: Initialized mapping harvesters (delay=6378ms). stunDiscoveryFailed=true
2020-04-15 16:42:08.621 INFO: [18] org.ice4j.ice.harvest.AbstractUdpListener.: Initialized AbstractUdpListener with address 192.168.12.154:10000/udp. Receive buffer size 10485760 (asked for 10485760)
2020-04-15 16:42:08.625 INFO: [18] org.ice4j.ice.harvest.SinglePortUdpHarvester.: Initialized SinglePortUdpHarvester with address 192.168.12.154:10000/udp
SCTP JNI load: Linux OS detected
SCTP lib loaded

/var/log/prosody/prosody.log

2020-04-15 16:42:02.328 WARNING: [23] [hostname=localhost id=shard] MucClient.lambda$getConnectAndLoginCallable$7#643: [MucClient id=shard hostname=localhost] error connecting
org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: ‘localhost:5222’ failed because: localhost/127.0.0.1 exception: java.net.ConnectException: Connection refused (Connection refused), localhost/0:0:0:0:0:0:0:1 exception: java.net.ConnectException: Connection refused (Connection refused)
at org.jivesoftware.smack.SmackException$ConnectionException.from(SmackException.java:278)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPConnection.java:619)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:902)
at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:383)
at org.jitsi.xmpp.mucclient.MucClient.lambda$getConnectAndLoginCallable$7(MucClient.java:638)
at org.jitsi.retry.RetryStrategy$TaskRunner.run(RetryStrategy.java:193)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

/var/log/prosody/prosody.err

Apr 22 15:45:16 portmanager error Error binding encrypted port for https: No key present in SSL/TLS configuration for https port 5281

/>

The server has also be allowed to be access from the internet behind a NAT where all requests goes to a redirection server which then forwards to the actual server.

The firewall on the server is disabled. The following ports are opened on the firewall :

80/tcp
443/tcp
4444 for Nginx
ports 10000-20000/udp

Grateful if you can help and inform me what are the things I missed about configuration or ports that need to be opened?

Thanks