[SOLVED] Colibri WS Failed to connect (External JVB)

Hello, when I started the conference, I can see an error in the console that

Steps.

1. I'm entering to zenget.az with JWT
2. I'm entering from another location to the same room with the same JWT to the same conference.

I can see in a console that web-socket failed to connect

VM194 room1:63 (TIME) index.html loaded:	 577
Logger.js:154 2023-02-10T15:16:24.303Z [modules/browser/BrowserCapabilities.js] <new <anonymous>>:  This appears to be chrome, ver: 109.0.0.0
Logger.js:154 2023-02-10T15:16:24.303Z [modules/statistics/LocalStatsCollector.js] <ui.connectAudioContext>:  Connecting audio context
LocalStatsCollector.js:169 The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu
ui.connectAudioContext @ LocalStatsCollector.js:169
Logger.js:154 2023-02-10T15:16:24.508Z [modules/RTC/RTCUtils.js] <zc>:  list of media devices has changed: Array(10)
Logger.js:154 2023-02-10T15:16:24.753Z [features/base/redux] <Object.persistState>:  redux state persisted. 04af1ca05346e21f2cd357c0bbf37f12 -> 3a3b76055b6cca4d2a4c6a2946705364
Logger.js:154 2023-02-10T15:16:24.815Z [features/base/media] Start muted: 
Logger.js:154 2023-02-10T15:16:24.817Z [features/base/media] Start audio only set to false
Logger.js:154 2023-02-10T15:16:24.817Z [modules/statistics/AnalyticsAdapter.js] <Object.dispose>:  Disposing of analytics adapter.
r @ Logger.js:154
Logger.js:154 2023-02-10T15:16:24.818Z [features/analytics] Initialized 0 analytics handlers
Logger.js:154 2023-02-10T15:16:24.890Z [index.web] <HTMLDocument.<anonymous>>:  (TIME) document ready:	 1207.800000000745
VM193 room1:46 Service worker registered. ServiceWorkerRegistration
lang/languages-ru.json:1          Failed to load resource: the server responded with a status of 404 (Not Found)
lang/countries-ru.json:1          Failed to load resource: the server responded with a status of 404 (Not Found)
Logger.js:154 2023-02-10T15:16:24.966Z [modules/RTC/RTCUtils.js] Audio output device set to default
lang/translation-languages-ru.json:1          Failed to load resource: the server responded with a status of 404 (Not Found)
watermark.svg:1          Failed to load resource: the server responded with a status of 404 (Not Found)
Logger.js:154 2023-02-10T15:16:25.106Z [features/base/connection] Using service URL wss://zenget.az/xmpp-websocket
Logger.js:154 2023-02-10T15:16:25.108Z [modules/xmpp/xmpp.js] <Ta._initStrophePlugins>:  P2P STUN servers:  Array(1)
Logger.js:154 2023-02-10T15:16:25.121Z [modules/xmpp/xmpp.js] <Ta.connectionHandler>:  (TIME) Strophe connecting:	 1437.8999999985099
Logger.js:154 2023-02-10T15:16:25.124Z [modules/RTC/RTCUtils.js] <Qi.<anonymous>>:  Got media constraints:  {"video":{"height":{"ideal":720,"max":720,"min":240},"facingMode":"user"},"audio":{"autoGainControl":true,"echoCancellation":true,"noiseSuppression":true}}
Logger.js:154 2023-02-10T15:16:25.877Z [modules/xmpp/XmppConnection.js] <er._maybeEnableStreamResume>:  Enabling XEP-0198 stream management
Logger.js:154 2023-02-10T15:16:25.878Z [modules/xmpp/XmppConnection.js] <er._maybeStartWSKeepAlive>:  WebSocket keep alive interval: 60000ms
Logger.js:154 2023-02-10T15:16:25.879Z [modules/xmpp/strophe.ping.js] <Qs.startInterval>:  XMPP pings will be sent every 10000 ms
Logger.js:154 2023-02-10T15:16:25.879Z [modules/xmpp/xmpp.js] <Ta.connectionHandler>:  (TIME) Strophe connected:	 2196.60000000149
Logger.js:154 2023-02-10T15:16:25.879Z [modules/xmpp/xmpp.js] <Ta.connectionHandler>:  My Jabber ID: 845e8712-5846-408a-8bcb-7f36b8bf7555@vs1.zenget.az/RCRXvl1A
Logger.js:154 2023-02-10T15:16:26.594Z [modules/RTC/RTCUtils.js] onUserMediaSuccess
Logger.js:154 2023-02-10T15:16:26.604Z [modules/xmpp/xmpp.js] <Ta.createRoom>:  JID 845e8712-5846-408a-8bcb-7f36b8bf7555@vs1.zenget.az/RCRXvl1A using MUC nickname 845e8712
Logger.js:154 2023-02-10T15:16:26.605Z [modules/xmpp/ChatRoom.js] <new Lr>:  Joining MUC as room1@conference.vs1.zenget.az/845e8712
Logger.js:154 2023-02-10T15:16:26.605Z [modules/xmpp/moderator.js] <new Dr>:  Using xmpp for conference requests.
Logger.js:154 2023-02-10T15:16:26.609Z [modules/statistics/AvgRTPStatsReporter.js] <new ou>:  Avg RTP stats will be calculated every 15 samples
Logger.js:154 2023-02-10T15:16:26.609Z [JitsiConference.js] <new ih>:  backToP2PDelay: 5
Logger.js:154 2023-02-10T15:16:26.610Z [JitsiConference.js] <new ih>:  End-to-End Encryption is supported
Logger.js:154 2023-02-10T15:16:26.624Z [JitsiConference.js] <ih._doReplaceTrack>:  _doReplaceTrack - no JVB JingleSession
Logger.js:154 2023-02-10T15:16:26.624Z [JitsiConference.js] <ih._doReplaceTrack>:  _doReplaceTrack - no P2P JingleSession
Logger.js:154 2023-02-10T15:16:26.626Z [features/base/tracks] Adding video track - unmuted
Logger.js:154 2023-02-10T15:16:26.670Z [modules/xmpp/moderator.js] Sending conference request over XMPP to focus.vs1.zenget.az
Logger.js:154 2023-02-10T15:16:26.676Z [features/base/tracks] Replace audio track - unmuted
Logger.js:154 2023-02-10T15:16:26.695Z [JitsiConference.js] <ih._doReplaceTrack>:  _doReplaceTrack - no JVB JingleSession
Logger.js:154 2023-02-10T15:16:26.695Z [JitsiConference.js] <ih._doReplaceTrack>:  _doReplaceTrack - no P2P JingleSession
Logger.js:154 2023-02-10T15:16:26.713Z [conference.js] Initialized with 2 local tracks
Logger.js:154 2023-02-10T15:16:26.738Z [features/base/redux] <Object.persistState>:  redux state persisted. 3a3b76055b6cca4d2a4c6a2946705364 -> fb060bdd8fc61a1f9973812cbb294d7d
Logger.js:154 2023-02-10T15:16:26.815Z [modules/xmpp/moderator.js] <Dr._handleError>:  Session expired! - removing
Logger.js:154 2023-02-10T15:16:26.815Z [modules/xmpp/moderator.js] <Dr._handleError>:  Invalid session, will retry after 1000 ms.
Logger.js:154 2023-02-10T15:16:26.830Z [modules/RTC/RTCUtils.js] <Qi.<anonymous>>:  Got media constraints:  {"video":false,"audio":{"autoGainControl":true,"deviceId":"default","echoCancellation":true,"noiseSuppression":true}}
Logger.js:154 2023-02-10T15:16:26.849Z [modules/RTC/RTCUtils.js] onUserMediaSuccess
TrackVADEmitter.js:112 [Deprecation] The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
_initializeAudioContext @ TrackVADEmitter.js:112
Logger.js:154 2023-02-10T15:16:28.485Z [modules/xmpp/moderator.js] Sending conference request over XMPP to focus.vs1.zenget.az
Logger.js:154 2023-02-10T15:16:28.598Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Adding focus JID: focus@auth.vs1.zenget.az
Logger.js:154 2023-02-10T15:16:28.598Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Authentication enabled: true
Logger.js:154 2023-02-10T15:16:28.599Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  External authentication enabled: false
Logger.js:154 2023-02-10T15:16:28.599Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Received sessionId: 8267b81b-241f-4c0a-9bda-6ae402f802d8
Logger.js:154 2023-02-10T15:16:28.605Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Sip gateway enabled: true
Logger.js:154 2023-02-10T15:16:28.605Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Conference-request successful, ready to join the MUC.
Logger.js:154 2023-02-10T15:16:28.745Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  (TIME) MUC join started:	 5063.300000000745
Logger.js:154 2023-02-10T15:16:28.749Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  entered room1@conference.vs1.zenget.az/focus {isReplaceParticipant: 0, affiliation: 'owner', role: 'moderator', jid: 'focus@auth.vs1.zenget.az/focus', isFocus: true, …}
Logger.js:154 2023-02-10T15:16:28.749Z [modules/UI/UI.js] <Zue.initEtherpad>:  Etherpad is enabled
Logger.js:154 2023-02-10T15:16:28.757Z [modules/version/ComponentsVersions.js] Got focus version: 1.1.build.git
Logger.js:154 2023-02-10T15:16:28.762Z [JitsiConference.js] <ih._updateProperties>:  Audio unmute permissions set by Jicofo to false
Logger.js:154 2023-02-10T15:16:28.765Z [JitsiConference.js] <ih._updateProperties>:  Video unmute permissions set by Jicofo to false
Logger.js:154 2023-02-10T15:16:28.765Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  Jicofo supports restart by terminate: true
Logger.js:154 2023-02-10T15:16:28.770Z [conference.js] <r.<anonymous>>:  My role changed, new role: none
Logger.js:154 2023-02-10T15:16:28.789Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  (TIME) MUC joined:	 5106.89999999851
Logger.js:154 2023-02-10T15:16:28.893Z [conference.js] <r.<anonymous>>:  My role changed, new role: moderator
Logger.js:154 2023-02-10T15:16:29.047Z [modules/xmpp/ChatRoom.js] <Lr.onMessage>:  Subject is changed to 
Logger.js:154 2023-02-10T15:16:36.524Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  entered room1@conference.vs1.zenget.az/25ebd2e3 {isReplaceParticipant: 0, affiliation: 'none', role: 'participant', jid: '25ebd2e3-c68f-4184-9ce6-619344310bd6@vs1.zenget.az/AoTOITjs', isFocus: false, …}
Logger.js:154 2023-02-10T15:16:36.582Z [conference.js] <r.<anonymous>>:  USER 25ebd2e3 connected: Ui {_jid: 'room1@conference.vs1.zenget.az/25ebd2e3', _id: '25ebd2e3', _conference: ih, _displayName: undefined, _supportsDTMF: false, …}
Logger.js:154 2023-02-10T15:16:37.881Z [modules/xmpp/strophe.jingle.js] <aa.onJingle>:  Found a JSON-encoded element in session-initiate, translating to standard Jingle.
Logger.js:154 2023-02-10T15:16:37.881Z [modules/xmpp/strophe.jingle.js] <aa.onJingle>:  (TIME) received session-initiate:	 14198.5
Logger.js:154 2023-02-10T15:16:37.886Z [modules/RTC/TraceablePeerConnection.js] <new Qd>:  Using RTCRtpTransceiver#setCodecPreferences for codec selection
Logger.js:154 2023-02-10T15:16:37.886Z [modules/RTC/TraceablePeerConnection.js] <new Qd>:  Create new TPC[id=1,type=JVB]
Logger.js:154 2023-02-10T15:16:37.889Z [JitsiConference.js] <ih._acceptJvbIncomingCall>:  Starting CallStats for JVB connection...
Logger.js:154 2023-02-10T15:16:37.889Z [modules/statistics/RTPStatsCollector.js] <bi.start>:  Using RTCRtpSynchronizationSource for remote audio levels
Logger.js:154 2023-02-10T15:16:37.890Z [modules/RTC/TraceablePeerConnection.js] <Qd.addTrack>:  TPC[id=1,type=JVB] adding LocalTrack[1,audio]
Logger.js:154 2023-02-10T15:16:37.893Z [modules/RTC/TraceablePeerConnection.js] <Qd.addTrack>:  TPC[id=1,type=JVB] adding LocalTrack[2,video]
Logger.js:154 2023-02-10T15:16:37.936Z [modules/xmpp/JingleSessionPC.js] <sa.sendSessionAccept>:  JingleSessionPC[session=JVB,initiator=false,sid=41p1kero0nnta] Sending session-accept
Logger.js:154 2023-02-10T15:16:37.940Z [modules/xmpp/JingleSessionPC.js] <peerconnection.oniceconnectionstatechange>:  (TIME) ICE checking JVB:	 14258
Logger.js:154 2023-02-10T15:16:38.037Z [modules/xmpp/JingleSessionPC.js] <sa.setSenderVideoConstraint>:  JingleSessionPC[session=JVB,initiator=false,sid=41p1kero0nnta] setSenderVideoConstraint: 2160, sourceName: 845e8712-v0
Logger.js:154 2023-02-10T15:16:38.038Z [modules/RTC/TraceablePeerConnection.js] <Qd.setSenderVideoConstraints>:  TPC[id=1,type=JVB] Setting degradation preference [preference=maintain-framerate,track=LocalTrack[2,video]
Logger.js:154 2023-02-10T15:16:38.039Z [modules/RTC/TraceablePeerConnection.js] <Qd.setSenderVideoConstraints>:  TPC[id=1,type=JVB] setting max height=2160,encodings=[{"active":true,"adaptivePtime":false,"networkPriority":"low","priority":"low","maxBitrate":200000},{"active":true,"adaptivePtime":false,"networkPriority":"low","priority":"low","maxBitrate":700000},{"active":true,"adaptivePtime":false,"networkPriority":"low","priority":"low","maxBitrate":2500000}]
Logger.js:154 2023-02-10T15:16:38.166Z [modules/xmpp/strophe.jingle.js] <aa.onJingle>:  Found a JSON-encoded element in source-add, translating to standard Jingle.
Logger.js:154 2023-02-10T15:16:38.172Z [modules/xmpp/JingleSessionPC.js] JingleSessionPC[session=JVB,initiator=false,sid=41p1kero0nnta] Processing addRemoteStream
Logger.js:154 2023-02-10T15:16:38.184Z [modules/xmpp/JingleSessionPC.js] <peerconnection.oniceconnectionstatechange>:  (TIME) ICE connected JVB:	 14501.5
Logger.js:154 2023-02-10T15:16:38.190Z [modules/RTC/TraceablePeerConnection.js] <Qd._remoteTrackAdded>:  TPC[id=1,type=JVB] Received track event for remote stream[id=25ebd2e3-audio-0-1,type=audio]
Logger.js:154 2023-02-10T15:16:38.191Z [modules/RTC/TraceablePeerConnection.js] <Qd._createRemoteTrack>:  TPC[id=1,type=JVB] creating remote track[endpoint=25ebd2e3,ssrc=454892425,type=audio,sourceName=25ebd2e3-a0]
Logger.js:154 2023-02-10T15:16:38.210Z [modules/RTC/TraceablePeerConnection.js] <Qd._remoteTrackAdded>:  TPC[id=1,type=JVB] Received track event for remote stream[id=25ebd2e3-video-0-1,type=video]
Logger.js:154 2023-02-10T15:16:38.210Z [modules/RTC/TraceablePeerConnection.js] <Qd._createRemoteTrack>:  TPC[id=1,type=JVB] creating remote track[endpoint=25ebd2e3,ssrc=3028597515,type=video,sourceName=25ebd2e3-v0]
Logger.js:154 2023-02-10T15:16:38.220Z [modules/connectivity/TrackStreamingStatus.ts] <new Ud>:  RtcMuteTimeout set to: 10000
JitsiRemoteTrack.js:308 (TIME) Render audio:	 14602.39999999851
JitsiRemoteTrack.js:327 (TIME) TTFM audio:	 4036.599999997765
BridgeChannel.js:87 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/8e5d127f1ea39222/845e8712?pwd=5ono0colb1g7jecgc25t4jnemt' failed: 
_initWebSocket @ BridgeChannel.js:87
Ia @ BridgeChannel.js:76
initializeBridgeChannel @ RTC.js:196
ih._setBridgeChannel @ JitsiConference.js:2334
ih._acceptJvbIncomingCall @ JitsiConference.js:2266
ih.onIncomingCall @ JitsiConference.js:2216
r.emit @ events.js:153
onJingle @ strophe.jingle.js:217
run @ strophe.umd.js:1875
(anonymous) @ strophe.umd.js:3157
forEachChild @ strophe.umd.js:830
_dataRecv @ strophe.umd.js:3146
_onMessage @ strophe.umd.js:5836
Logger.js:154 2023-02-10T15:16:38.285Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:154
e.onclose @ BridgeChannel.js:388
Logger.js:154 2023-02-10T15:16:38.334Z [modules/xmpp/JingleSessionPC.js] JingleSessionPC[session=JVB,initiator=false,sid=41p1kero0nnta] addRemoteStream - OK
JitsiRemoteTrack.js:308 (TIME) Render video:	 15409.10000000149
JitsiRemoteTrack.js:327 (TIME) TTFM video:	 4843.300000000745
BridgeChannel.js:87 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/8e5d127f1ea39222/845e8712?pwd=5ono0colb1g7jecgc25t4jnemt' failed: 
_initWebSocket @ BridgeChannel.js:87
t @ BridgeChannel.js:118
Logger.js:154 2023-02-10T15:16:39.686Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:154
e.onclose @ BridgeChannel.js:388
BridgeChannel.js:87 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/8e5d127f1ea39222/845e8712?pwd=5ono0colb1g7jecgc25t4jnemt' failed: 
_initWebSocket @ BridgeChannel.js:87
t @ BridgeChannel.js:118
Logger.js:154 2023-02-10T15:16:41.686Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:154
e.onclose @ BridgeChannel.js:388
BridgeChannel.js:87 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/8e5d127f1ea39222/845e8712?pwd=5ono0colb1g7jecgc25t4jnemt' failed: 
_initWebSocket @ BridgeChannel.js:87
t @ BridgeChannel.js:118
Logger.js:154 2023-02-10T15:16:45.646Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:154
e.onclose @ BridgeChannel.js:388
BridgeChannel.js:87 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/8e5d127f1ea39222/845e8712?pwd=5ono0colb1g7jecgc25t4jnemt' failed: 
_initWebSocket @ BridgeChannel.js:87
t @ BridgeChannel.js:118
Logger.js:154 2023-02-10T15:16:53.656Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:154
e.onclose @ BridgeChannel.js:388
room1:1 Uncaught (in promise) Error: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received

My nginx config

# This is from default file
# Default server configuration
#
server_names_hash_bucket_size 64;

types {
# nginx's default mime.types doesn't include a mapping for wasm or wav.
    application/wasm     wasm;
    audio/wav            wav;
}
upstream prosody {
    zone upstreams 64K;
    server 127.0.0.1:5280;
    keepalive 2;
}
upstream jvb1 {
    zone upstreams 64K;
    server vs1.zenget.az:9090;
    keepalive 2;
}
map $arg_vnode $prosody_node {
    default prosody;
    v1 v1;
    v2 v2;
    v3 v3;
    v4 v4;
    v5 v5;
    v6 v6;
    v7 v7;
    v8 v8;
}
server {
    if ($host = zenget.az) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;
    server_name zenget.az;

    location ^~ /.well-known/acme-challenge/ {
        default_type "text/plain";
        root         /usr/share/jitsi-meet;
    }
    location = /.well-known/acme-challenge/ {
        return 404;
    }
    location / {
        return 301 https://$host$request_uri;
    }


}
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name zenget.az;

    # Mozilla Guideline v5.4, nginx 1.17.7, OpenSSL 1.1.1d, intermediate configuration
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    add_header Strict-Transport-Security "max-age=63072000" always;
    set $prefix "";
    ssl_certificate /etc/letsencrypt/live/zenget.az/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/zenget.az/privkey.pem; # managed by Certbot

    root /usr/share/jitsi-meet;

    # ssi on with javascript for multidomain variables in config.js
    ssi on;
    ssi_types application/x-javascript application/javascript;

    index index.html index.htm;
    error_page 404 /static/404.html;

    gzip on;
    gzip_types text/plain text/css application/javascript application/json image/x-icon application/octet-stream application/wasm;
    gzip_vary on;
    gzip_proxied no-cache no-store private expired auth;
    gzip_min_length 512;

    location = /config.js {
        alias /etc/jitsi/meet/zenget.az-config.js;
    }

    location = /external_api.js {
        alias /usr/share/jitsi-meet/libs/external_api.min.js;
    }

    location = /_api/room-info {
        proxy_pass http://$prosody_node/room-info?prefix=$prefix&$args;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
    }

    # ensure all static content can always be found first
    location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$
    {
        add_header 'Access-Control-Allow-Origin' '*';
        alias /usr/share/jitsi-meet/$1/$2;

        # cache all versioned files
        if ($arg_v) {
            expires 1y;
        }
    }

    # BOSH
    location = /http-bind {
        proxy_pass http://$prosody_node/http-bind?prefix=$prefix&$args;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header Connection "";
    }

    # xmpp websockets
    location = /xmpp-websocket {
        proxy_pass http://$prosody_node/xmpp-websocket?prefix=$prefix&$args;
        #shard & region that matches config.deploymentInfo.shard/region -  See [note 1] below

        #add_header 'x-jitsi-shard' 'shard1';
        #add_header 'x-jitsi-region' 'uk-zenget-linode';
        #add_header 'Access-Control-Expose-Headers' 'X-Jitsi-Shard, X-Jitsi-Region';
        #proxy_set_header X-Forwarded-For $remote_addr;
        #proxy_set_header Host $http_host;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        tcp_nodelay on;
    }

    **# colibri (JVB) websockets for jvb1**
**    location ~ ^/colibri-ws/([0-9.]*)/(.*) {**
**        proxy_pass http://vs1.zenget.az:9090/colibri-ws/vs1/$1$is_args$args;**
**        proxy_http_version 1.1;**
**        proxy_set_header Upgrade $http_upgrade;**
**        proxy_set_header Connection "upgrade";**
**        tcp_nodelay on;**
**    }**


    # excalidraw-backend websockets

    location = /socket.io/ {
        proxy_pass http://127.0.0.1:3002/socket.io/?$args;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        tcp_nodelay on;
    }

    location ^~ /etherpad/ {
        proxy_pass http://localhost:9001/;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_buffering off;
        proxy_set_header       Host $host;
    }

    location ~ ^/([^/?&:'"]+)$ {
        try_files $uri @root_path;
    }

    location @root_path {
        rewrite ^/(.*)$ / break;
    }

    location ~ ^/([^/?&:'"]+)/config.js$
    {
        set $subdomain "$1.";
        set $subdir "$1/";

        alias /etc/jitsi/meet/zenget.az-config.js;
    }

    # BOSH for subdomains
    location ~ ^/([^/?&:'"]+)/http-bind {
        set $subdomain "$1.";
        set $subdir "$1/";
        set $prefix "$1";

        rewrite ^/(.*)$ /http-bind;
    }

    # websockets for subdomains
    location ~ ^/([^/?&:'"]+)/xmpp-websocket {
        set $subdomain "$1.";
        set $subdir "$1/";
        set $prefix "$1";

        rewrite ^/(.*)$ /xmpp-websocket;
    }

    location ~ ^/([^/?&:'"]+)/_api/room-info {
        set $subdomain "$1.";
        set $subdir "$1/";
        set $prefix "$1";

        rewrite ^/(.*)$ /_api/room-info;
    }

    # Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
    location ~ ^/([^/?&:'"]+)/(.*)$ {
        set $subdomain "$1.";
        set $subdir "$1/";
        rewrite ^/([^/?&:'"]+)/(.*)$ /$2;
    }

}

My Jvb.conf

videobridge {
    http-servers {
        public {
            port = 9090
        }
    }
    websockets {
        server-id="vs1"
        enabled=true
        domain="zenget.az:443"
        tls=true
    }
}

Port on jvb host vs1.zenget.az

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
10000                      ALLOW       Anywhere
9090                       ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
10000 (v6)                 ALLOW       Anywhere (v6)
9090 (v6)                  ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

5222                       ALLOW OUT   Anywhere
5222 (v6)                  ALLOW OUT   Anywhere (v6)

This regex won’t match the URL you are trying to open: wss://zenget.az/colibri-ws/vs1/8e5d127f1ea39222/845e8712?pwd=5ono0colb1g7jecgc25t4jnemt

Try this: location ~ ^/colibri-ws/(.*) {

Changed

    # colibri (JVB) websockets for jvb1
    location ~ ^/colibri-ws/(.*) {
        proxy_pass http://vs1.zenget.az:9090/colibri-ws/vs1/$1$is_args$args;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        tcp_nodelay on;
    }

The same

VM225 room1:63 (TIME) index.html loaded:	 1045.7000000029802
Logger.js:154 2023-02-10T15:36:51.653Z [modules/browser/BrowserCapabilities.js] <new <anonymous>>:  This appears to be chrome, ver: 109.0.0.0
Logger.js:154 2023-02-10T15:36:51.654Z [modules/statistics/LocalStatsCollector.js] <ui.connectAudioContext>:  Connecting audio context
LocalStatsCollector.js:169 The AudioContext was not allowed to start. It must be resumed (or created) after a user gesture on the page. https://goo.gl/7K7WLu
ui.connectAudioContext @ LocalStatsCollector.js:169
Logger.js:154 2023-02-10T15:36:51.879Z [modules/RTC/RTCUtils.js] <zc>:  list of media devices has changed: Array(10)
Logger.js:154 2023-02-10T15:36:52.095Z [features/base/redux] <Object.persistState>:  redux state persisted. 927c9289a990ac9e11d340909c133ec1 -> 80e78f9f4362de4c870a228293ba5520
Logger.js:154 2023-02-10T15:36:52.162Z [features/base/media] Start muted: 
Logger.js:154 2023-02-10T15:36:52.164Z [features/base/media] Start audio only set to false
Logger.js:154 2023-02-10T15:36:52.165Z [modules/statistics/AnalyticsAdapter.js] <Object.dispose>:  Disposing of analytics adapter.
r @ Logger.js:154
Logger.js:154 2023-02-10T15:36:52.165Z [features/analytics] Initialized 0 analytics handlers
Logger.js:154 2023-02-10T15:36:52.247Z [index.web] <HTMLDocument.<anonymous>>:  (TIME) document ready:	 1684
VM224 room1:46 Service worker registered. ServiceWorkerRegistration
lang/languages-ru.json:1          Failed to load resource: the server responded with a status of 404 (Not Found)
lang/countries-ru.json:1          Failed to load resource: the server responded with a status of 404 (Not Found)
lang/translation-languages-ru.json:1          Failed to load resource: the server responded with a status of 404 (Not Found)
Logger.js:154 2023-02-10T15:36:52.370Z [modules/RTC/RTCUtils.js] Audio output device set to default
watermark.svg:1          Failed to load resource: the server responded with a status of 404 (Not Found)
Logger.js:154 2023-02-10T15:36:52.456Z [features/base/connection] Using service URL wss://zenget.az/xmpp-websocket
Logger.js:154 2023-02-10T15:36:52.458Z [modules/xmpp/xmpp.js] <Ta._initStrophePlugins>:  P2P STUN servers:  Array(1)
Logger.js:154 2023-02-10T15:36:52.473Z [modules/xmpp/xmpp.js] <Ta.connectionHandler>:  (TIME) Strophe connecting:	 1908.8999999985099
Logger.js:154 2023-02-10T15:36:52.475Z [modules/RTC/RTCUtils.js] <Qi.<anonymous>>:  Got media constraints:  {"video":{"height":{"ideal":720,"max":720,"min":240},"facingMode":"user"},"audio":{"autoGainControl":true,"echoCancellation":true,"noiseSuppression":true}}
Logger.js:154 2023-02-10T15:36:53.252Z [modules/xmpp/XmppConnection.js] <er._maybeEnableStreamResume>:  Enabling XEP-0198 stream management
Logger.js:154 2023-02-10T15:36:53.253Z [modules/xmpp/XmppConnection.js] <er._maybeStartWSKeepAlive>:  WebSocket keep alive interval: 60000ms
Logger.js:154 2023-02-10T15:36:53.253Z [modules/xmpp/strophe.ping.js] <Qs.startInterval>:  XMPP pings will be sent every 10000 ms
Logger.js:154 2023-02-10T15:36:53.253Z [modules/xmpp/xmpp.js] <Ta.connectionHandler>:  (TIME) Strophe connected:	 2690.7000000029802
Logger.js:154 2023-02-10T15:36:53.254Z [modules/xmpp/xmpp.js] <Ta.connectionHandler>:  My Jabber ID: 0b068e05-e212-447a-92e6-ce45e309b85f@vs1.zenget.az/EpQpqBGH
Logger.js:154 2023-02-10T15:36:54.755Z [features/base/redux] <Object.persistState>:  redux state persisted. 80e78f9f4362de4c870a228293ba5520 -> 392863606c6680173baf5f6a79f12748
Logger.js:154 2023-02-10T15:36:54.820Z [modules/RTC/RTCUtils.js] onUserMediaSuccess
Logger.js:154 2023-02-10T15:36:54.827Z [modules/xmpp/xmpp.js] <Ta.createRoom>:  JID 0b068e05-e212-447a-92e6-ce45e309b85f@vs1.zenget.az/EpQpqBGH using MUC nickname 0b068e05
Logger.js:154 2023-02-10T15:36:54.827Z [modules/xmpp/ChatRoom.js] <new Lr>:  Joining MUC as room1@conference.vs1.zenget.az/0b068e05
Logger.js:154 2023-02-10T15:36:54.828Z [modules/xmpp/moderator.js] <new Dr>:  Using xmpp for conference requests.
Logger.js:154 2023-02-10T15:36:54.831Z [modules/statistics/AvgRTPStatsReporter.js] <new ou>:  Avg RTP stats will be calculated every 15 samples
Logger.js:154 2023-02-10T15:36:54.831Z [JitsiConference.js] <new ih>:  backToP2PDelay: 5
Logger.js:154 2023-02-10T15:36:54.832Z [JitsiConference.js] <new ih>:  End-to-End Encryption is supported
Logger.js:154 2023-02-10T15:36:54.836Z [JitsiConference.js] <ih._doReplaceTrack>:  _doReplaceTrack - no JVB JingleSession
Logger.js:154 2023-02-10T15:36:54.837Z [JitsiConference.js] <ih._doReplaceTrack>:  _doReplaceTrack - no P2P JingleSession
Logger.js:154 2023-02-10T15:36:54.841Z [features/base/tracks] Adding video track - unmuted
Logger.js:154 2023-02-10T15:36:54.879Z [modules/xmpp/moderator.js] Sending conference request over XMPP to focus.vs1.zenget.az
Logger.js:154 2023-02-10T15:36:54.886Z [features/base/tracks] Replace audio track - unmuted
Logger.js:154 2023-02-10T15:36:54.908Z [JitsiConference.js] <ih._doReplaceTrack>:  _doReplaceTrack - no JVB JingleSession
Logger.js:154 2023-02-10T15:36:54.909Z [JitsiConference.js] <ih._doReplaceTrack>:  _doReplaceTrack - no P2P JingleSession
Logger.js:154 2023-02-10T15:36:54.934Z [conference.js] Initialized with 2 local tracks
Logger.js:154 2023-02-10T15:36:55.004Z [modules/xmpp/moderator.js] <Dr._handleError>:  Session expired! - removing
Logger.js:154 2023-02-10T15:36:55.004Z [modules/xmpp/moderator.js] <Dr._handleError>:  Invalid session, will retry after 1000 ms.
Logger.js:154 2023-02-10T15:36:55.015Z [modules/RTC/RTCUtils.js] <Qi.<anonymous>>:  Got media constraints:  {"video":false,"audio":{"autoGainControl":true,"deviceId":"default","echoCancellation":true,"noiseSuppression":true}}
Logger.js:154 2023-02-10T15:36:55.036Z [modules/RTC/RTCUtils.js] onUserMediaSuccess
TrackVADEmitter.js:112 [Deprecation] The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
_initializeAudioContext @ TrackVADEmitter.js:112
Dl @ TrackVADEmitter.js:66
(anonymous) @ TrackVADEmitter.js:91
Promise.then (async)
create @ TrackVADEmitter.js:85
(anonymous) @ VADAudioAnalyser.js:162
Promise.then (async)
_trackAdded @ VADAudioAnalyser.js:161
r.emit @ events.js:158
ih._setupNewTrack @ JitsiConference.js:1455
(anonymous) @ JitsiConference.js:1347
Promise.then (async)
ih.replaceTrack @ JitsiConference.js:1342
(anonymous) @ actions.any.ts:243
(anonymous) @ actions.any.ts:7
kp @ actions.any.ts:3
(anonymous) @ actions.any.ts:238
(anonymous) @ index.js:16
(anonymous) @ middleware.js:30
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.ts:14
(anonymous) @ middleware.web.ts:23
(anonymous) @ middleware.any.ts:34
(anonymous) @ middleware.ts:60
(anonymous) @ middleware.ts:48
(anonymous) @ middleware.ts:55
(anonymous) @ middleware.ts:162
(anonymous) @ middleware.ts:52
s @ middleware.ts:55
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.ts:28
(anonymous) @ middleware.ts:155
(anonymous) @ middleware.ts:44
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.ts:50
(anonymous) @ middleware.ts:46
o @ middleware.web.ts:44
(anonymous) @ middleware.web.ts:7
(anonymous) @ middleware.web.ts:3
(anonymous) @ middleware.web.ts:19
(anonymous) @ middleware.any.ts:53
(anonymous) @ middleware.ts:62
(anonymous) @ middleware.web.ts:260
(anonymous) @ middleware.ts:39
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.ts:11
(anonymous) @ middleware.js:21
(anonymous) @ middleware.ts:18
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.ts:12
(anonymous) @ middleware.ts:74
(anonymous) @ middleware.ts:26
(anonymous) @ middleware.web.ts:90
(anonymous) @ middleware.any.ts:91
(anonymous) @ middleware.ts:27
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.web.ts:17
(anonymous) @ middleware.any.ts:18
(anonymous) @ middleware.ts:32
(anonymous) @ middleware.web.ts:15
(anonymous) @ middleware.ts:246
(anonymous) @ middleware.ts:17
(anonymous) @ middleware.ts:36
(anonymous) @ middleware.ts:39
(anonymous) @ middleware.ts:74
(anonymous) @ middleware.ts:8
(anonymous) @ middleware.ts:40
(anonymous) @ middleware.ts:20
(anonymous) @ middleware.web.js:40
(anonymous) @ middleware.any.js:105
(anonymous) @ middleware.ts:148
(anonymous) @ middleware.ts:84
(anonymous) @ middleware.web.ts:65
o @ middleware.ts:86
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.any.ts:38
(anonymous) @ middleware.ts:35
(anonymous) @ middleware.web.ts:28
(anonymous) @ middleware.ts:27
(anonymous) @ middleware.web.ts:10
(anonymous) @ middleware.web.ts:29
(anonymous) @ middleware.any.ts:109
(anonymous) @ middleware.ts:13
o @ middleware.ts:82
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
o @ middleware.web.ts:68
(anonymous) @ middleware.web.ts:7
(anonymous) @ middleware.web.ts:3
(anonymous) @ middleware.ts:9
(anonymous) @ middleware.tsx:14
(anonymous) @ middleware.ts:21
(anonymous) @ middleware.ts:141
(anonymous) @ middleware.tsx:28
(anonymous) @ middleware.tsx:7
Gpe @ middleware.tsx:3
(anonymous) @ middleware.tsx:27
(anonymous) @ middleware.ts:17
(anonymous) @ middleware.ts:56
(anonymous) @ middleware.ts:194
(anonymous) @ middleware.web.ts:19
(anonymous) @ middleware.web.ts:37
(anonymous) @ middleware.any.js:147
(anonymous) @ middleware.web.ts:161
o @ middleware.ts:42
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.web.ts:92
(anonymous) @ middleware.ts:150
(anonymous) @ conference.js:1491
_executeNext @ TaskQueue.js:52
enqueue @ TaskQueue.js:29
(anonymous) @ conference.js:1481
useAudioStream @ conference.js:1480
(anonymous) @ conference.js:1403
_setLocalAudioVideoStreams @ conference.js:1401
_createRoom @ conference.js:1384
startConference @ conference.js:728
init @ conference.js:858
Logger.js:154 2023-02-10T15:36:56.009Z [modules/xmpp/moderator.js] Sending conference request over XMPP to focus.vs1.zenget.az
Logger.js:154 2023-02-10T15:36:56.121Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Adding focus JID: focus@auth.vs1.zenget.az
Logger.js:154 2023-02-10T15:36:56.121Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Authentication enabled: true
Logger.js:154 2023-02-10T15:36:56.121Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  External authentication enabled: false
Logger.js:154 2023-02-10T15:36:56.121Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Received sessionId: 72b242d3-6318-467b-b13a-caf114b551e3
Logger.js:154 2023-02-10T15:36:56.125Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Sip gateway enabled: true
Logger.js:154 2023-02-10T15:36:56.126Z [modules/xmpp/moderator.js] <Dr._handleSuccess>:  Conference-request successful, ready to join the MUC.
Logger.js:154 2023-02-10T15:36:56.229Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  (TIME) MUC join started:	 5666.20000000298
Logger.js:154 2023-02-10T15:36:56.234Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  entered room1@conference.vs1.zenget.az/focus {isReplaceParticipant: 0, affiliation: 'owner', role: 'moderator', jid: 'focus@auth.vs1.zenget.az/focus', isFocus: true, …}
Logger.js:154 2023-02-10T15:36:56.235Z [modules/UI/UI.js] <Zue.initEtherpad>:  Etherpad is enabled
Logger.js:154 2023-02-10T15:36:56.244Z [modules/version/ComponentsVersions.js] Got focus version: 1.1.build.git
Logger.js:154 2023-02-10T15:36:56.248Z [JitsiConference.js] <ih._updateProperties>:  Audio unmute permissions set by Jicofo to false
Logger.js:154 2023-02-10T15:36:56.250Z [JitsiConference.js] <ih._updateProperties>:  Video unmute permissions set by Jicofo to false
Logger.js:154 2023-02-10T15:36:56.251Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  Jicofo supports restart by terminate: true
Logger.js:154 2023-02-10T15:36:56.263Z [conference.js] <r.<anonymous>>:  My role changed, new role: none
Logger.js:154 2023-02-10T15:36:56.273Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  (TIME) MUC joined:	 5710.39999999851
Logger.js:154 2023-02-10T15:36:56.355Z [conference.js] <r.<anonymous>>:  My role changed, new role: moderator
Logger.js:154 2023-02-10T15:36:56.454Z [modules/xmpp/ChatRoom.js] <Lr.onMessage>:  Subject is changed to 
Logger.js:154 2023-02-10T15:37:04.291Z [modules/xmpp/ChatRoom.js] <Lr.onPresence>:  entered room1@conference.vs1.zenget.az/848218f9 {isReplaceParticipant: 0, affiliation: 'none', role: 'participant', jid: '848218f9-6325-49a0-ac64-34eb479c7d51@vs1.zenget.az/9u3NgVH_', isFocus: false, …}
Logger.js:154 2023-02-10T15:37:04.354Z [conference.js] <r.<anonymous>>:  USER 848218f9 connected: Ui {_jid: 'room1@conference.vs1.zenget.az/848218f9', _id: '848218f9', _conference: ih, _displayName: undefined, _supportsDTMF: false, …}
Logger.js:154 2023-02-10T15:37:04.355Z [JitsiConference.js] <ih._maybeStartOrStopP2P>:  Will start P2P with: room1@conference.vs1.zenget.az/848218f9
Logger.js:154 2023-02-10T15:37:04.356Z [JitsiConference.js] <ih._startP2PSession>:  Created new P2P JingleSession room1@conference.vs1.zenget.az/0b068e05 room1@conference.vs1.zenget.az/848218f9
Logger.js:154 2023-02-10T15:37:04.359Z [modules/RTC/TraceablePeerConnection.js] <new Qd>:  Using RTCRtpTransceiver#setCodecPreferences for codec selection
Logger.js:154 2023-02-10T15:37:04.360Z [modules/RTC/TraceablePeerConnection.js] <new Qd>:  Create new TPC[id=1,type=P2P]
Logger.js:154 2023-02-10T15:37:04.360Z [JitsiConference.js] <ih._startP2PSession>:  Starting CallStats for P2P connection...
Logger.js:154 2023-02-10T15:37:04.371Z [modules/RTC/TraceablePeerConnection.js] <Qd.addTrack>:  TPC[id=1,type=P2P] adding LocalTrack[1,audio]
Logger.js:154 2023-02-10T15:37:04.373Z [modules/RTC/TraceablePeerConnection.js] <Qd.addTrack>:  TPC[id=1,type=P2P] adding LocalTrack[2,video]
Logger.js:154 2023-02-10T15:37:04.444Z [modules/xmpp/strophe.jingle.js] <aa.onJingle>:  Found a JSON-encoded element in session-initiate, translating to standard Jingle.
Logger.js:154 2023-02-10T15:37:04.445Z [modules/xmpp/strophe.jingle.js] <aa.onJingle>:  (TIME) received session-initiate:	 13880.89999999851
Logger.js:154 2023-02-10T15:37:04.449Z [modules/RTC/TraceablePeerConnection.js] <new Qd>:  Using RTCRtpTransceiver#setCodecPreferences for codec selection
Logger.js:154 2023-02-10T15:37:04.449Z [modules/RTC/TraceablePeerConnection.js] <new Qd>:  Create new TPC[id=2,type=JVB]
Logger.js:154 2023-02-10T15:37:04.454Z [JitsiConference.js] <ih._acceptJvbIncomingCall>:  Starting CallStats for JVB connection...
Logger.js:154 2023-02-10T15:37:04.455Z [modules/statistics/RTPStatsCollector.js] <bi.start>:  Using RTCRtpSynchronizationSource for remote audio levels
Logger.js:154 2023-02-10T15:37:04.457Z [modules/RTC/TraceablePeerConnection.js] <Qd.addTrack>:  TPC[id=2,type=JVB] adding LocalTrack[1,audio]
Logger.js:154 2023-02-10T15:37:04.458Z [modules/RTC/TraceablePeerConnection.js] <Qd.addTrack>:  TPC[id=2,type=JVB] adding LocalTrack[2,video]
Logger.js:154 2023-02-10T15:37:04.574Z [modules/xmpp/JingleSessionPC.js] <sa.sendSessionAccept>:  JingleSessionPC[session=JVB,initiator=false,sid=3qi130n27g4jh] Sending session-accept
Logger.js:154 2023-02-10T15:37:04.607Z [modules/xmpp/JingleSessionPC.js] <peerconnection.oniceconnectionstatechange>:  (TIME) ICE checking JVB:	 14043.80000000447
Logger.js:154 2023-02-10T15:37:04.705Z [modules/xmpp/JingleSessionPC.js] <sa.setSenderVideoConstraint>:  JingleSessionPC[session=JVB,initiator=false,sid=3qi130n27g4jh] setSenderVideoConstraint: 2160, sourceName: 0b068e05-v0
Logger.js:154 2023-02-10T15:37:04.706Z [modules/RTC/TraceablePeerConnection.js] <Qd.setSenderVideoConstraints>:  TPC[id=2,type=JVB] Setting degradation preference [preference=maintain-framerate,track=LocalTrack[2,video]
Logger.js:154 2023-02-10T15:37:04.708Z [modules/RTC/TraceablePeerConnection.js] <Qd.setSenderVideoConstraints>:  TPC[id=2,type=JVB] setting max height=2160,encodings=[{"active":true,"adaptivePtime":false,"networkPriority":"low","priority":"low","maxBitrate":200000},{"active":true,"adaptivePtime":false,"networkPriority":"low","priority":"low","maxBitrate":700000},{"active":true,"adaptivePtime":false,"networkPriority":"low","priority":"low","maxBitrate":2500000}]
Logger.js:154 2023-02-10T15:37:04.709Z [modules/xmpp/JingleSessionPC.js] <sa.setSenderVideoConstraint>:  JingleSessionPC[session=P2P,initiator=true,sid=19f73fa2d98e] setSenderVideoConstraint: 2160, sourceName: 0b068e05-v0
Logger.js:154 2023-02-10T15:37:04.709Z [modules/RTC/TraceablePeerConnection.js] <Qd.setSenderVideoConstraints>:  TPC[id=1,type=P2P] Setting degradation preference [preference=maintain-framerate,track=LocalTrack[2,video]
Logger.js:154 2023-02-10T15:37:04.710Z [modules/RTC/TraceablePeerConnection.js] <Qd.setSenderVideoConstraints>:  TPC[id=1,type=P2P] setting max height=2160,encodings=[{"active":true,"adaptivePtime":false,"maxBitrate":2500000,"networkPriority":"low","priority":"low","scaleResolutionDownBy":1}]
Logger.js:154 2023-02-10T15:37:04.725Z [modules/xmpp/strophe.jingle.js] <aa.onJingle>:  Found a JSON-encoded element in source-add, translating to standard Jingle.
Logger.js:154 2023-02-10T15:37:04.738Z [modules/xmpp/JingleSessionPC.js] JingleSessionPC[session=JVB,initiator=false,sid=3qi130n27g4jh] Processing addRemoteStream
BridgeChannel.js:87 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/c26b95da5763a03d/0b068e05?pwd=72c3vd1ocihgpfudaa97uad6hj' failed: 
_initWebSocket @ BridgeChannel.js:87
Ia @ BridgeChannel.js:76
initializeBridgeChannel @ RTC.js:196
ih._setBridgeChannel @ JitsiConference.js:2334
ih._acceptJvbIncomingCall @ JitsiConference.js:2266
ih.onIncomingCall @ JitsiConference.js:2216
r.emit @ events.js:153
onJingle @ strophe.jingle.js:217
run @ strophe.umd.js:1875
(anonymous) @ strophe.umd.js:3157
forEachChild @ strophe.umd.js:830
_dataRecv @ strophe.umd.js:3146
_onMessage @ strophe.umd.js:5836
Logger.js:154 2023-02-10T15:37:04.753Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:154
e.onclose @ BridgeChannel.js:388
Logger.js:154 2023-02-10T15:37:04.790Z [modules/xmpp/strophe.jingle.js] <aa.onJingle>:  terminating... 19f73fa2d98e
Logger.js:154 2023-02-10T15:37:04.791Z [modules/xmpp/JingleSessionPC.js] <sa.onTerminated>:  JingleSessionPC[session=P2P,initiator=true,sid=19f73fa2d98e] Session terminated decline P2P disabled
Logger.js:154 2023-02-10T15:37:04.792Z [JitsiConference.js] <ih.onCallEnded>:  Call ended: decline - P2P disabled P2P ?true
Logger.js:154 2023-02-10T15:37:04.793Z [JitsiConference.js] <ih._stopP2PSession>:  Stopping remote stats for P2P connection
Logger.js:154 2023-02-10T15:37:04.793Z [JitsiConference.js] <ih._stopP2PSession>:  Stopping CallStats for P2P connection
Logger.js:154 2023-02-10T15:37:04.795Z [modules/RTC/TraceablePeerConnection.js] <Qd.close>:  TPC[id=1,type=P2P] Closing peerconnection
Logger.js:154 2023-02-10T15:37:04.798Z [modules/xmpp/JingleSessionPC.js] JingleSessionPC[session=P2P,initiator=true,sid=19f73fa2d98e] Got RESULT for "session-initiate"
Logger.js:154 2023-02-10T15:37:04.800Z [modules/RTC/TraceablePeerConnection.js] <Qd._remoteTrackAdded>:  TPC[id=2,type=JVB] Received track event for remote stream[id=848218f9-audio-0-1,type=audio]
Logger.js:154 2023-02-10T15:37:04.801Z [modules/RTC/TraceablePeerConnection.js] <Qd._createRemoteTrack>:  TPC[id=2,type=JVB] creating remote track[endpoint=848218f9,ssrc=3876860153,type=audio,sourceName=848218f9-a0]
Logger.js:154 2023-02-10T15:37:04.814Z [modules/RTC/TraceablePeerConnection.js] <Qd._remoteTrackAdded>:  TPC[id=2,type=JVB] Received track event for remote stream[id=848218f9-video-0-1,type=video]
Logger.js:154 2023-02-10T15:37:04.815Z [modules/RTC/TraceablePeerConnection.js] <Qd._createRemoteTrack>:  TPC[id=2,type=JVB] creating remote track[endpoint=848218f9,ssrc=2035054516,type=video,sourceName=848218f9-v0]
Logger.js:154 2023-02-10T15:37:04.830Z [modules/connectivity/TrackStreamingStatus.ts] <new Ud>:  RtcMuteTimeout set to: 10000
Logger.js:154 2023-02-10T15:37:04.863Z [modules/xmpp/JingleSessionPC.js] <peerconnection.oniceconnectionstatechange>:  (TIME) ICE connected JVB:	 14300.5
JitsiRemoteTrack.js:308 (TIME) Render audio:	 14328.20000000298
JitsiRemoteTrack.js:327 (TIME) TTFM audio:	 3810
Logger.js:154 2023-02-10T15:37:04.902Z [modules/xmpp/JingleSessionPC.js] JingleSessionPC[session=JVB,initiator=false,sid=3qi130n27g4jh] addRemoteStream - OK
JitsiRemoteTrack.js:308 (TIME) Render video:	 14731.70000000298
JitsiRemoteTrack.js:327 (TIME) TTFM video:	 4213.5
BridgeChannel.js:87 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/c26b95da5763a03d/0b068e05?pwd=72c3vd1ocihgpfudaa97uad6hj' failed: 
_initWebSocket @ BridgeChannel.js:87
t @ BridgeChannel.js:118
Logger.js:154 2023-02-10T15:37:06.047Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:154
e.onclose @ BridgeChannel.js:388
BridgeChannel.js:87 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/c26b95da5763a03d/0b068e05?pwd=72c3vd1ocihgpfudaa97uad6hj' failed: 
_initWebSocket @ BridgeChannel.js:87
t @ BridgeChannel.js:118
Logger.js:154 2023-02-10T15:37:08.051Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:154
e.onclose @ BridgeChannel.js:388
BridgeChannel.js:87 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/c26b95da5763a03d/0b068e05?pwd=72c3vd1ocihgpfudaa97uad6hj' failed: 
_initWebSocket @ BridgeChannel.js:87
t @ BridgeChannel.js:118
Logger.js:154 2023-02-10T15:37:12.087Z [modules/RTC/BridgeChannel.js] <e.onclose>:  Channel closed: 1006 
r @ Logger.js:154
e.onclose @ BridgeChannel.js:388
    location ~ ^/colibri-ws/vs1/(.*) {
        proxy_pass http://vs1.zenget.az:9090/colibri-ws/vs1/$1$is_args$args;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        tcp_nodelay on;
    }

Hi @emrah,

It didn’t help.

 WebSocket connection to 'wss://zenget.az/colibri-ws/vs1/1499a77d1e86231e/a7e3d4d1?pwd=62doo4m972h0njm7e9ehjb71gt' failed: 

Actually, if I see in the console that URL is

"wss://zenget.az/colibri-ws/vs1/1499a77d1e86231e/a7e3d4d1?pwd=62doo4m972h0njm7e9ehjb71gt"

Doesn’t that mean that wss URL is formed correctly?

Let me try to explain something

My JVB is located under vs1.zenget.az, as it is defined in NGINX

http://vs1.zenget.az:9090/colibri-ws/vs1/$1$is_args$args;

However, I have the following in config.js

 hosts: {
        // XMPP domain.
        domain: 'vs1.zenget.az',

        // When using authentication, domain for guest users.
        //anonymousdomain: 'guest.vs1.zenget.az',

        // Domain for authenticated users. Defaults to <domain>.
        //authdomain: 'konfrans.zenget.az',

        // Focus component domain. Defaults to focus.<domain>.
        // focus: 'focus.konfrans.zenget.az',

        // XMPP MUC domain. FIXME: use XEP-0030 to discover it.
        muc: 'conference.' + subdomain + 'vs1.zenget.az',
    },

    // BOSH URL. FIXME: use XEP-0156 to discover it.
    bosh: '//zenget.az/' + subdir + 'http-bind',

    // Websocket URL
     **websocket: 'wss://zenget.az/' + subdir + 'xmpp-websocket',**

Could it be an issue? Or was URL that is in config.js is not related to colibri?

Again, I’m connected to the meeting using URL https://zenget.az/room1?jwt=

This is for XMPP websocket, not for colibri
It is OK

What is the output when you run the following command on JMS?

curl http://vs1.zenget.az:9090/
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404 Not Found</h2>
<table>
<tr><th>URI:</th><td>/</td></tr>
<tr><th>STATUS:</th><td>404</td></tr>
<tr><th>MESSAGE:</th><td>Not Found</td></tr>
<tr><th>SERVLET:</th><td>org.eclipse.jetty.servlet.ServletHandler$Default404Servlet-78b236a0</td></tr>
</table>
<hr/><a href="https://eclipse.org/jetty">Powered by Jetty:// 11.0.10</a><hr/>

telnet vs1.zenget.az 9090

root@zenget:~# telnet vs1.zenget.az 9090
Trying 212.71.237.31...
Connected to vs1.zenget.az.
Escape character is '^]'.

Did you run these on JMS or on your desktop machine?

on JMS machine, Ubuntu 22.04

Your JVB responds but it is not accessible through JMS

curl --head http://vs1.zenget.az:9090/colibri-ws/vs1/
  HTTP/1.1 405 Method Not Allowed
  Cache-Control: must-revalidate,no-cache,no-store
  Content-Type: text/html;charset=iso-8859-1
  Content-Length: 618
  Server: Jetty(11.0.10)

curl --head https://zenget.az/colibri-ws/vs1/
  HTTP/1.1 502 Bad Gateway

The proxy config is wrong or JMS cannot access to vs1.zenget.az

What should I do? Why it is not accessible?

I’ve posted my nginx config above

Can you paste the related location block from your Nginx config?

location ~ ^/colibri-ws/vs1/(.*) {
    proxy_pass http://vs1.zenget.az:9090/colibri-ws/vs1/$1$is_args$args;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    tcp_nodelay on;
}

Look at this also, I’ve removed vs1 prefix from the end of the URL, and

root@zenget:~# curl --head https://zenget.az/colibri-ws
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Fri, 10 Feb 2023 17:57:53 GMT
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
Strict-Transport-Security: max-age=63072000

It seems correct.

If you restarted Nginx already, I have no idea

The following command should work even config.js is not correct. But it doesn’t work in your case

curl --head https://zenget.az/colibri-ws/vs1/

@emrah

curl --head https://zenget.az/colibri-ws/vs1/
HTTP/1.1 502 Bad Gateway
Server: nginx/1.18.0 (Ubuntu)
Date: Fri, 10 Feb 2023 18:03:38 GMT
Content-Type: text/html
Connection: keep-alive
Strict-Transport-Security: max-age=63072000

But, if I curl in that way

curl --head https://zenget.az/colibri-ws/vs1

If there is no slash at the end, then

root@zenget:~# curl --head https://zenget.az/colibri-ws/vs1
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Fri, 10 Feb 2023 18:03:45 GMT
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
Strict-Transport-Security: max-age=63072000

You should put the slash to test the related location block. Otherwise it is catched by another block

1 Like