Two users in the same room can't see each other

Hi, I have a self-hosted setup on a Vultr (Ubuntu 18.04) instance using the external API and JWT. My user’s can connect and are authenticated but 2 people in the same room can’t see each other regardless of using a browser or iOS app.

The logs (see below) suggest an authentication error as described here:

However I’ve checked the passwords and they match. I’m stumped as what to do next. Does anyone have any suggestions?

(I can’t find any evidence of being behind a NAT - I think Vultr is similar to Digital Ocean in that regard)

chrome://webrtc-internals/ (Doesn’t give any more info - due to being accessed by the API I assume)

Caller origin: https://jitsi.mydomain.com

Caller process id: 675

Audio Constraints

{advanced: [{deviceId: {exact: [“undefined”]}}, {echoCancellation: {exact: true}}, {googEchoCancellation: {exact: true}}, {googAutoGainControl: {exact: true}}, {googNoiseSuppression: {exact: true}}, {googHighpassFilter: {exact: true}}, {googExperimentalNoiseSuppression: {exact: true}}, {googExperimentalEchoCancellation: {exact: true}}, {googExperimentalAutoGainControl: {exact: true}}]}

Video Constraints

/var/log/jitsi/jvb.log

2020-04-14 01:01:45.252 INFO: [32] [hostname=localhost id=shard] MucClient.lambda$getConnectAndLoginCallable$7#648: Logging in.
2020-04-14 01:01:45.252 SEVERE: [32] RetryStrategy$TaskRunner.run#198: org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:292)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1100)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:1000)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1016)
at java.lang.Thread.run(Thread.java:748)
2020-04-14 01:01:45.295 INFO: [26] VideobridgeExpireThread.expire#144: Running expire()
2020-04-14 01:01:49.174 INFO: [27] Videobridge.createConference#326: create_conf, id=eb7c62288199f8e0 gid=null logging=false
2020-04-14 01:01:49.179 INFO: [27] Health.doRun#294: Performed a successful health check in 5ms. Sticky failure: false
2020-04-14 01:01:50.253 INFO: [32] [hostname=localhost id=shard] MucClient.lambda$getConnectAndLoginCallable$7#648: Logging in.
2020-04-14 01:01:50.254 SEVERE: [32] RetryStrategy$TaskRunner.run#198: org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:292)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1100)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:1000)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1016)
at java.lang.Thread.run(Thread.java:748)
2020-04-14 01:01:55.255 INFO: [32] [hostname=localhost id=shard] MucClient.lambda$getConnectAndLoginCallable$7#648: Logging in.
2020-04-14 01:01:55.256 SEVERE: [32] RetryStrategy$TaskRunner.run#198: org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:292)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1100)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:1000)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1016)
at java.lang.Thread.run(Thread.java:748)
2020-04-14 01:01:59.187 INFO: [27] Videobridge.createConference#326: create_conf, id=a70ff9ac2d856710 gid=null logging=false
2020-04-14 01:01:59.206 INFO: [27] Health.doRun#294: Performed a successful health check in 19ms. Sticky failure: false

/var/log/jitsi/jicofo.log

Jicofo 2020-04-14 01:04:23.194 SEVERE: [70] org.jitsi.impl.protocol.xmpp.XmppProtocolProvider.doConnect().315 Failed to connect/login: SASLError using SCRAM-SHA-1: not-authorized
org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:292)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1100)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:1000)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1016)
at java.lang.Thread.run(Thread.java:748)
Jicofo 2020-04-14 01:04:28.257 SEVERE: [70] org.jitsi.impl.protocol.xmpp.XmppProtocolProvider.doConnect().315 Failed to connect/login: SASLError using SCRAM-SHA-1: not-authorized
org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:292)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1100)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:1000)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1016)
at java.lang.Thread.run(Thread.java:748)
Jicofo 2020-04-14 01:04:33.314 SEVERE: [70] org.jitsi.impl.protocol.xmpp.XmppProtocolProvider.doConnect().315 Failed to connect/login: SASLError using SCRAM-SHA-1: not-authorized
org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: not-authorized
at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:292)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1100)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:1000)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1016)
at java.lang.Thread.run(Thread.java:748)

/var/log/prosody/prosody.log

Apr 14 01:16:06 conference.jitsi.mydomain.com:muc_domain_mapper warn Session filters applied
Apr 14 01:16:06 c2s564ff6f75240 info Client connected
Apr 14 01:16:06 c2s564ff6f75240 info Stream encrypted (TLSv1.2 with ECDHE-RSA-AES256-GCM-SHA384)
Apr 14 01:16:06 c2s564ff6f75240 info Client disconnected: connection closed
Apr 14 01:16:11 conference.jitsi.mydomain.com:muc_domain_mapper warn Session filters applied
Apr 14 01:16:11 c2s564ff6db8860 info Client connected
Apr 14 01:16:11 c2s564ff6db8860 info Stream encrypted (TLSv1.2 with ECDHE-RSA-AES256-GCM-SHA384)
Apr 14 01:16:11 c2s564ff6db8860 info Client disconnected: connection closed
Apr 14 01:16:16 conference.jitsi.mydomain.com:muc_domain_mapper warn Session filters applied
Apr 14 01:16:16 c2s564ff6f68220 info Client connected
Apr 14 01:16:16 c2s564ff6f68220 info Stream encrypted (TLSv1.2 with ECDHE-RSA-AES256-GCM-SHA384)
Apr 14 01:16:16 c2s564ff6f68220 info Client disconnected: connection closed

Prosody setup:
Prosody trunk nightly build 747 (2017-02-19, 428d4abee723)

Prosody directories

Data directory: /var/lib/prosody
Config directory: /etc/prosody
Source directory: /usr/lib/prosody
Plugin directories:
/usr/share/jitsi-meet/prosody-plugins/
/usr/lib/prosody/modules/

Lua environment

Lua version: Lua 5.1

Lua module search paths:
/usr/lib/prosody/?.lua
/usr/local/share/lua/5.1/?.lua
/usr/local/share/lua/5.1/?/init.lua
/usr/local/lib/lua/5.1/?.lua
/usr/local/lib/lua/5.1/?/init.lua
/usr/share/lua/5.1/?.lua
/usr/share/lua/5.1/?/init.lua
/root/.luarocks/share/lua/5.1/?.lua
/root/.luarocks/share/lua/5.1/?/init.lua

Lua C module search paths:
/usr/lib/prosody/?.so
/usr/local/lib/lua/5.1/?.so
/usr/lib/x86_64-linux-gnu/lua/5.1/?.so
/usr/lib/lua/5.1/?.so
/usr/local/lib/lua/5.1/loadall.so
/root/.luarocks/lib/lua/5.1/?.so

LuaRocks: Installed (2.4.2)

Lua module versions

lfs: LuaFileSystem 1.6.3
libevent: 2.1.8-stable
luaevent: 0.4.4
lxp: LuaExpat 1.3.0
socket: LuaSocket 3.0-rc1
ssl: 0.9

Browser console Normal except for this error on disconnecting a call.
2020-04-14T01:12:35.125Z [JitsiMeetJS.js] <Object.getGlobalOnErrorHandler>: UnhandledError: null Script: null Line: null Column: null StackTrace: Error: Strophe: request id 10.1 error 0 happened
at Object.i.Strophe.log (VM4374 lib-jitsi-meet.min.js:17)
at Object.error (VM4374 lib-jitsi-meet.min.js:1)
at I.Bosh._onRequestStateChange (VM4374 lib-jitsi-meet.min.js:1)

2020-04-14T01:12:35.132Z [modules/xmpp/strophe.util.js] <Object.i.Strophe.log>: Strophe: request id 10.1 error 0 happened

Okay, so I’ve updated Jitsi and the JWT plugin and authentication is now failing when people try to join a call. The same errors are showing in the logs except for the browser console:

2020-04-14T02:23:11.890Z [connection.js] <c.u>: CONNECTION FAILED: connection.passwordRequired
2020-04-14T02:23:11.915Z [features/base/connection] <APP.conference.init.catch.e>: connection.passwordRequired

All the steps I took to get the JWT authentication working are all still in place. Very puzzling…