Install Whiteboard

Hello,
The collab whiteboard is a feature that I was really looking forward to though I can not get it to work properly.
I followed this guide: Installing excalidraw-backend for Whiteboard feature on self-hosted Jitsi Mee
Does it have to be /opt directory? As my install is in /etc/jitsi/.
Though, that’s not the main problem. The problem is that when I start the excalidraw-backend app I receive a error stating that port 9090 is already in use; even after changing the port to 9091. I also tried other ports but still receive the same error. When changing it to port 80, it says port 80 is in use. It is falling back to port 9090, no matter what port I change it to.

Hey there!

Port 9090 is for Prometheus stats, we should probably add a way to disable that…

Isn’t it also JVB signaling port?

The only way I found to change the port is directly editing it in the source of excalidraw-backend. If you get the error “port 9090 is already in use”, then you did not really change it. Maybe in the wrong place, or you’re starting a different binary than you edited.
I doubt your Jitsi is installed in /etc - but in principle the location for excalidraw-backend does not matter.

I edited the file located at /opt/excalidraw-backend/src/index.ts and changed the port number on line 19: const port = process.env.PORT || 9091; // default port to listen

I commented out the import prometheus and the settings (is it needed for anything?) but I still receive the same error that port 9090 is in use.

I think process.env.PORT is the regular port the server listens on. Whatever prometheus stats are, they’ll need a seperate port.

It is jvb which is using port 9090. Checked with ‘sudo lsof -i:9090’, weird that it showed blank last time I ran the command. Why is it defaulting back to port 9090 though after I change it in the config?

Forgot to mention that I also tried adding the additional line to ‘prometheus.metrics’ on line 45, yet same error. That’s why I tried changing the main port. I don’t understand why it’s defaulting back to 9090 when I change it to anything else.
You were also right about the directory. I was in a hurry. its installed in /usr/share/ x)

I tried: Changing the port in jvb to 9091 and left excalidraw on 9090, same error. Yet, when I run ‘sudo lsof -i:9090’ it’s blank… So nothing is using port 9090. So I then tried changing excali port to 9090, jvb to 9091, and prometheus to 9092. Now it just hangs on start.

You can comment out these 3 lines: excalidraw-backend/index.ts at 4cdf41a899be8e7496c73a00b78d73ff361002b3 · jitsi/excalidraw-backend · GitHub

I have done and same issue.
I believe I found the issue. It’s related to websocket connections. I did not have this issue before…
I started receiving errors for failed websocket connections, then I noticed that the websocket was disabled in the config xD. I think I may have disabled it and forgot to go back to it.
Should I open a new thread for this issue?
I searched around but could not find a solution that works.
It’s failing to construct the url:

2022-12-05T22:08:06.655Z [features/base/connection] TypeError: Failed to construct 'URL': Invalid URL
    at Sn (uri.ts:520:20)
    at actions.any.ts:44:30
    at Use (connection.js:104:67)
    at Hse (connection.js:215:12)
    at Tle (conference.js:227:12)
    at Object.createInitialLocalTracksAndConnect (conference.js:714:52)
    at Object.init (conference.js:865:44)

In the config:

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

    // Websocket URL
    websocket: 'wss//meet.domain.com/' + subdir + 'xmpp-websocket',

In the virtual host:

# BOSH
    location = /http-bind {
        proxy_pass http://prosody/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/xmpp-websocket?prefix=$prefix&$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;
    }

That needs to be wss://

Ah, whoops. That did solve that issue, then I was having socket connection issues, fixed that. Then had the port problem again, solved by changing ports around again. Oddly though, before all of this the whiteboard would automatically display for others when the host opens it, now it does not. Also receiving a error for socket.io connections:
WebSocket connection to 'wss://meet.domain.com/socket.io/?room=002923d8bf97eb271a37db62f190e6bd&EIO=3&transport=websocket' failed:
I solved the same issue for colibri by adding some lines to the sip-communicator.properties file in videovridge. Are there lines that I should also add there for socket.io?
This is in the virtual host:

location = /socket.io/ {
        proxy_pass http://meet.domain.com/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;
    }

I have no clue why the whiteboard stopped popping up for others.

I decided to just rebuild the entire thing, thinking that maybe I changed too many things and might have messed something up. Bad idea…

WebSocket connection to 'wss://meet.domain.com/xmpp-websocket?room=tremendousinstallationsconcedeonly' failed: 
_connect @ strophe.umd.js:5463
connect @ strophe.umd.js:2368
_interceptConnectArgs @ strophe.stream-management.js:224
connect @ XmppConnection.js:264
_connect @ xmpp.js:566
connect @ xmpp.js:668
ju.connect @ JitsiConnection.js:61
xie @ connection.js:55
(anonymous) @ connection.js:185
Sie @ connection.js:110
Eie @ connection.js:215
xoe @ conference.js:226
createInitialLocalTracksAndConnect @ conference.js:713
init @ conference.js:864
Logger.js:154 2022-12-06T03:47:41.838Z [JitsiMeetJS.ts] <Object.getGlobalOnErrorHandler>:  UnhandledError: Strophe: Websocket error [object Event] Script: null Line: null Column: null StackTrace:  Error: Strophe: Websocket error [object Event]
    at mt.Strophe.log (https://meet.domain.com/libs/lib-jitsi-meet.min.js?v=6776:2:238302)
    at Object.error (https://meet.domain.com/libs/lib-jitsi-meet.min.js?v=6776:2:758494)
    at w.Websocket._onError (https://meet.domain.com/libs/lib-jitsi-meet.min.js?v=6776:2:797967)
r @ Logger.js:154
getGlobalOnErrorHandler @ JitsiMeetJS.ts:526
window.onerror @ middleware.ts:85
callErrorHandler @ GlobalOnErrorHandler.js:61
mt.Strophe.log @ strophe.util.js:88
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:264
_connect @ xmpp.js:566
connect @ xmpp.js:668
ju.connect @ JitsiConnection.js:61
xie @ connection.js:55
(anonymous) @ connection.js:185
Sie @ connection.js:110
Eie @ connection.js:215
xoe @ conference.js:226
createInitialLocalTracksAndConnect @ conference.js:713
init @ conference.js:864
await in init (async)
(anonymous) @ actions.web.ts:16
Promise.then (async)
(anonymous) @ actions.web.ts:16
(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:38
(anonymous) @ middleware.ts:60
(anonymous) @ middleware.ts:49
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:160
(anonymous) @ middleware.ts:52
(anonymous) @ middleware.js:87
(anonymous) @ middleware.js:40
(anonymous) @ middleware.ts:156
(anonymous) @ middleware.ts:44
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.js:80
(anonymous) @ middleware.js:68
(anonymous) @ middleware.web.js:46
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:94
(anonymous) @ middleware.ts:62
(anonymous) @ middleware.web.js:332
(anonymous) @ middleware.ts:39
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.ts:11
(anonymous) @ middleware.js:21
(anonymous) @ middleware.ts:18
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:16
(anonymous) @ middleware.ts:74
(anonymous) @ middleware.ts:26
(anonymous) @ middleware.web.ts:101
(anonymous) @ middleware.any.ts:91
(anonymous) @ middleware.ts:27
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.web.ts:17
(anonymous) @ middleware.any.ts:19
(anonymous) @ middleware.web.ts:15
(anonymous) @ middleware.ts:247
(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:106
(anonymous) @ middleware.ts:153
(anonymous) @ middleware.ts:84
(anonymous) @ middleware.web.ts:64
o @ middleware.ts:83
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.any.ts:38
(anonymous) @ middleware.ts:36
(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
(anonymous) @ middleware.js:91
o @ middleware.web.ts:68
(anonymous) @ middleware.web.ts:7
(anonymous) @ middleware.web.ts:3
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.ts:21
(anonymous) @ middleware.ts:141
(anonymous) @ middleware.tsx:28
(anonymous) @ middleware.tsx:7
Mse @ middleware.tsx:3
(anonymous) @ middleware.tsx:27
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:90
(anonymous) @ middleware.ts:182
(anonymous) @ middleware.web.ts:19
(anonymous) @ middleware.web.ts:32
(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.js:126
(anonymous) @ middleware.ts:149
_start @ Conference.js:365
componentDidMount @ Conference.js:156
fs @ index.js:219
Ol @ index.js:259
t.unstable_runWithPriority @ index.js:18
Wa @ index.js:122
Tl @ index.js:252
gl @ index.js:243
(anonymous) @ index.js:123
t.unstable_runWithPriority @ index.js:18
Wa @ index.js:122
Ga @ index.js:123
Ya @ index.js:122
dl @ index.js:237
enqueueSetState @ index.js:133
g.setState @ index.js:12
(anonymous) @ BaseApp.js:263
_navigate @ BaseApp.js:262
(anonymous) @ middleware.js:154
Promise.then (async)
(anonymous) @ middleware.js:154
(anonymous) @ middleware.js:174
(anonymous) @ middleware.js:27
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.ts:14
(anonymous) @ middleware.web.ts:23
(anonymous) @ middleware.any.ts:38
(anonymous) @ middleware.ts:60
(anonymous) @ middleware.ts:49
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:160
(anonymous) @ middleware.ts:52
(anonymous) @ middleware.js:87
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:36
(anonymous) @ middleware.ts:156
(anonymous) @ middleware.ts:44
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.js:80
(anonymous) @ middleware.js:68
(anonymous) @ middleware.web.js:46
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:94
(anonymous) @ middleware.ts:62
(anonymous) @ middleware.web.js:332
(anonymous) @ middleware.ts:39
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.ts:11
(anonymous) @ middleware.js:21
(anonymous) @ middleware.ts:18
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:16
(anonymous) @ middleware.ts:74
(anonymous) @ middleware.ts:26
(anonymous) @ middleware.web.ts:101
(anonymous) @ middleware.any.ts:91
(anonymous) @ middleware.ts:27
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.web.ts:17
(anonymous) @ middleware.any.ts:19
(anonymous) @ middleware.web.ts:15
(anonymous) @ middleware.ts:247
(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:503
(anonymous) @ middleware.any.js:99
(anonymous) @ middleware.ts:153
(anonymous) @ middleware.ts:77
(anonymous) @ middleware.web.ts:64
o @ middleware.ts:83
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.any.ts:38
(anonymous) @ middleware.ts:36
(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
(anonymous) @ middleware.js:91
o @ middleware.web.ts:68
(anonymous) @ middleware.web.ts:7
(anonymous) @ middleware.web.ts:3
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.ts:21
(anonymous) @ middleware.ts:141
(anonymous) @ middleware.tsx:28
(anonymous) @ middleware.tsx:7
Mse @ middleware.tsx:3
(anonymous) @ middleware.tsx:27
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:90
(anonymous) @ middleware.ts:182
(anonymous) @ middleware.web.ts:19
(anonymous) @ middleware.web.ts:32
(anonymous) @ middleware.web.ts:37
(anonymous) @ middleware.any.js:290
(anonymous) @ middleware.any.js:72
(anonymous) @ middleware.web.ts:161
o @ middleware.ts:42
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.web.js:126
(anonymous) @ middleware.ts:149
dispatch @ redux.js:636
o @ actions.web.ts:105
n @ actions.web.ts:4
Promise.then (async)
l @ actions.web.ts:6
(anonymous) @ actions.web.ts:7
(anonymous) @ actions.web.ts:3
(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:38
(anonymous) @ middleware.ts:60
(anonymous) @ middleware.ts:49
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:160
(anonymous) @ middleware.ts:52
(anonymous) @ middleware.js:87
(anonymous) @ middleware.js:40
(anonymous) @ middleware.ts:156
(anonymous) @ middleware.ts:44
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.js:80
(anonymous) @ middleware.js:68
(anonymous) @ middleware.web.js:46
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:94
(anonymous) @ middleware.ts:62
(anonymous) @ middleware.web.js:332
(anonymous) @ middleware.ts:39
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.ts:11
(anonymous) @ middleware.js:21
(anonymous) @ middleware.ts:18
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:16
(anonymous) @ middleware.ts:74
(anonymous) @ middleware.ts:26
(anonymous) @ middleware.web.ts:101
(anonymous) @ middleware.any.ts:91
(anonymous) @ middleware.ts:27
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.web.ts:17
(anonymous) @ middleware.any.ts:19
(anonymous) @ middleware.web.ts:15
(anonymous) @ middleware.ts:247
(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:106
(anonymous) @ middleware.ts:153
(anonymous) @ middleware.ts:84
(anonymous) @ middleware.web.ts:64
o @ middleware.ts:83
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.any.ts:38
(anonymous) @ middleware.ts:36
(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
(anonymous) @ middleware.js:91
o @ middleware.web.ts:68
(anonymous) @ middleware.web.ts:7
(anonymous) @ middleware.web.ts:3
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.ts:21
(anonymous) @ middleware.ts:141
(anonymous) @ middleware.tsx:28
(anonymous) @ middleware.tsx:7
Mse @ middleware.tsx:3
(anonymous) @ middleware.tsx:27
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:90
(anonymous) @ middleware.ts:182
(anonymous) @ middleware.web.ts:19
(anonymous) @ middleware.web.ts:32
(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.js:126
(anonymous) @ middleware.ts:149
_openURL @ AbstractApp.js:114
componentDidMount @ AbstractApp.js:49
await in componentDidMount (async)
fs @ index.js:219
Ol @ index.js:259
t.unstable_runWithPriority @ index.js:18
Wa @ index.js:122
Tl @ index.js:252
gl @ index.js:243
dl @ index.js:237
Jl @ index.js:285
(anonymous) @ index.js:289
yl @ index.js:244
rc @ index.js:289
t.render @ index.js:296
Wpe.renderEntryPoint @ index.web.js:54
(anonymous) @ TremendousInstallationsConcedeOnly:27
Show 288 more frames
Logger.js:154 2022-12-06T03:47:41.839Z [modules/xmpp/strophe.util.js] <mt.Strophe.log>:  Strophe: Websocket error [object Event]
2022-12-06T03:48:11.409Z [connection.js] <r.s>:  CONNECTION FAILED: connection.otherError
i @ index.js:154
s @ connection.js:173
r.emit @ events.js:158
connectionHandler @ xmpp.js:373
_stropheConnectionCb @ XmppConnection.js:308
_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:264
_connect @ xmpp.js:566
connect @ xmpp.js:668
ju.connect @ JitsiConnection.js:61
xie @ connection.js:55
(anonymous) @ connection.js:185
Sie @ connection.js:110
Eie @ connection.js:215
xoe @ conference.js:226
createInitialLocalTracksAndConnect @ conference.js:713
init @ conference.js:864
await in init (async)
(anonymous) @ actions.web.ts:16
Promise.then (async)
(anonymous) @ actions.web.ts:16
(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:38
(anonymous) @ middleware.ts:60
(anonymous) @ middleware.ts:49
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:160
(anonymous) @ middleware.ts:52
(anonymous) @ middleware.js:87
(anonymous) @ middleware.js:40
(anonymous) @ middleware.ts:156
(anonymous) @ middleware.ts:44
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.js:80
(anonymous) @ middleware.js:68
(anonymous) @ middleware.web.js:46
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:94
(anonymous) @ middleware.ts:62
(anonymous) @ middleware.web.js:332
(anonymous) @ middleware.ts:39
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.ts:11
(anonymous) @ middleware.js:21
(anonymous) @ middleware.ts:18
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:16
(anonymous) @ middleware.ts:74
(anonymous) @ middleware.ts:26
(anonymous) @ middleware.web.ts:101
(anonymous) @ middleware.any.ts:91
(anonymous) @ middleware.ts:27
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.web.ts:17
(anonymous) @ middleware.any.ts:19
(anonymous) @ middleware.web.ts:15
(anonymous) @ middleware.ts:247
(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:106
(anonymous) @ middleware.ts:153
(anonymous) @ middleware.ts:84
(anonymous) @ middleware.web.ts:64
o @ middleware.ts:83
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.any.ts:38
(anonymous) @ middleware.ts:36
(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
(anonymous) @ middleware.js:91
o @ middleware.web.ts:68
(anonymous) @ middleware.web.ts:7
(anonymous) @ middleware.web.ts:3
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.ts:21
(anonymous) @ middleware.ts:141
(anonymous) @ middleware.tsx:28
(anonymous) @ middleware.tsx:7
Mse @ middleware.tsx:3
(anonymous) @ middleware.tsx:27
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:90
(anonymous) @ middleware.ts:182
(anonymous) @ middleware.web.ts:19
(anonymous) @ middleware.web.ts:32
(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.js:126
(anonymous) @ middleware.ts:149
_start @ Conference.js:365
componentDidMount @ Conference.js:156
fs @ index.js:219
Ol @ index.js:259
t.unstable_runWithPriority @ index.js:18
Wa @ index.js:122
Tl @ index.js:252
gl @ index.js:243
(anonymous) @ index.js:123
t.unstable_runWithPriority @ index.js:18
Wa @ index.js:122
Ga @ index.js:123
Ya @ index.js:122
dl @ index.js:237
enqueueSetState @ index.js:133
g.setState @ index.js:12
(anonymous) @ BaseApp.js:263
_navigate @ BaseApp.js:262
(anonymous) @ middleware.js:154
Promise.then (async)
(anonymous) @ middleware.js:154
(anonymous) @ middleware.js:174
(anonymous) @ middleware.js:27
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.ts:14
(anonymous) @ middleware.web.ts:23
(anonymous) @ middleware.any.ts:38
(anonymous) @ middleware.ts:60
(anonymous) @ middleware.ts:49
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:160
(anonymous) @ middleware.ts:52
(anonymous) @ middleware.js:87
(anonymous) @ middleware.js:148
(anonymous) @ middleware.js:36
(anonymous) @ middleware.ts:156
(anonymous) @ middleware.ts:44
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.js:80
(anonymous) @ middleware.js:68
(anonymous) @ middleware.web.js:46
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:94
(anonymous) @ middleware.ts:62
(anonymous) @ middleware.web.js:332
(anonymous) @ middleware.ts:39
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.ts:11
(anonymous) @ middleware.js:21
(anonymous) @ middleware.ts:18
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:16
(anonymous) @ middleware.ts:74
(anonymous) @ middleware.ts:26
(anonymous) @ middleware.web.ts:101
(anonymous) @ middleware.any.ts:91
(anonymous) @ middleware.ts:27
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.web.ts:17
(anonymous) @ middleware.any.ts:19
(anonymous) @ middleware.web.ts:15
(anonymous) @ middleware.ts:247
(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:503
(anonymous) @ middleware.any.js:99
(anonymous) @ middleware.ts:153
(anonymous) @ middleware.ts:77
(anonymous) @ middleware.web.ts:64
o @ middleware.ts:83
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.any.ts:38
(anonymous) @ middleware.ts:36
(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
(anonymous) @ middleware.js:91
o @ middleware.web.ts:68
(anonymous) @ middleware.web.ts:7
(anonymous) @ middleware.web.ts:3
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.ts:21
(anonymous) @ middleware.ts:141
(anonymous) @ middleware.tsx:28
(anonymous) @ middleware.tsx:7
Mse @ middleware.tsx:3
(anonymous) @ middleware.tsx:27
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:90
(anonymous) @ middleware.ts:182
(anonymous) @ middleware.web.ts:19
(anonymous) @ middleware.web.ts:32
(anonymous) @ middleware.web.ts:37
(anonymous) @ middleware.any.js:290
(anonymous) @ middleware.any.js:72
(anonymous) @ middleware.web.ts:161
o @ middleware.ts:42
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.web.js:126
(anonymous) @ middleware.ts:149
dispatch @ redux.js:636
o @ actions.web.ts:105
n @ actions.web.ts:4
Promise.then (async)
l @ actions.web.ts:6
(anonymous) @ actions.web.ts:7
(anonymous) @ actions.web.ts:3
(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:38
(anonymous) @ middleware.ts:60
(anonymous) @ middleware.ts:49
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:160
(anonymous) @ middleware.ts:52
(anonymous) @ middleware.js:87
(anonymous) @ middleware.js:40
(anonymous) @ middleware.ts:156
(anonymous) @ middleware.ts:44
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.js:80
(anonymous) @ middleware.js:68
(anonymous) @ middleware.web.js:46
(anonymous) @ middleware.web.js:24
(anonymous) @ middleware.any.js:94
(anonymous) @ middleware.ts:62
(anonymous) @ middleware.web.js:332
(anonymous) @ middleware.ts:39
(anonymous) @ middleware.ts:22
(anonymous) @ middleware.ts:11
(anonymous) @ middleware.js:21
(anonymous) @ middleware.ts:18
(anonymous) @ middleware.js:21
(anonymous) @ middleware.js:16
(anonymous) @ middleware.ts:74
(anonymous) @ middleware.ts:26
(anonymous) @ middleware.web.ts:101
(anonymous) @ middleware.any.ts:91
(anonymous) @ middleware.ts:27
(anonymous) @ middleware.ts:19
(anonymous) @ middleware.web.ts:17
(anonymous) @ middleware.any.ts:19
(anonymous) @ middleware.web.ts:15
(anonymous) @ middleware.ts:247
(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:106
(anonymous) @ middleware.ts:153
(anonymous) @ middleware.ts:84
(anonymous) @ middleware.web.ts:64
o @ middleware.ts:83
(anonymous) @ middleware.ts:7
(anonymous) @ middleware.ts:3
(anonymous) @ middleware.any.ts:38
(anonymous) @ middleware.ts:36
(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
(anonymous) @ middleware.js:91
o @ middleware.web.ts:68
(anonymous) @ middleware.web.ts:7
(anonymous) @ middleware.web.ts:3
(anonymous) @ middleware.js:24
(anonymous) @ middleware.js:20
(anonymous) @ middleware.ts:21
(anonymous) @ middleware.ts:141
(anonymous) @ middleware.tsx:28
(anonymous) @ middleware.tsx:7
Mse @ middleware.tsx:3
(anonymous) @ middleware.tsx:27
(anonymous) @ middleware.js:25
(anonymous) @ middleware.js:90
(anonymous) @ middleware.ts:182
(anonymous) @ middleware.web.ts:19
(anonymous) @ middleware.web.ts:32
(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.js:126
(anonymous) @ middleware.ts:149
_openURL @ AbstractApp.js:114
componentDidMount @ AbstractApp.js:49
await in componentDidMount (async)
fs @ index.js:219
Ol @ index.js:259
t.unstable_runWithPriority @ index.js:18
Wa @ index.js:122
Tl @ index.js:252
gl @ index.js:243
dl @ index.js:237
Jl @ index.js:285
(anonymous) @ index.js:289
yl @ index.js:244
rc @ index.js:289
t.render @ index.js:296
Wpe.renderEntryPoint @ index.web.js:54
(anonymous) @ TremendousInstallationsConcedeOnly:27
Show 291 more frames
index.js:154 2022-12-06T03:48:11.415Z [features/overlay] <Zie.componentDidMount>:  The conference will be reloaded after 24 seconds.
index.js:154 2022-12-06T03:48:11.420Z [features/base/connection] connection.otherError

You are mixing many things here.

Please get your setup working first, then add whiteboards to it. As it stands your setup is not working.

Whiteboards have nothing to do with XMPP signalling, so you don’t need to make any changes there.

Right, I figured I should have opened a new thread. I ended up just doing a bunch of trouble shooting myself and managed to get it working again. Though, I am having the websocket failure error only with the whiteboard enabled now. I think it might be something with the collabServerBaseUrl or location = /socket.io/ {. I got the websockets working by using info from here: jitsi-videobridge-websocket.md · GitHub
and here: [How To] How to enable websockets (xmpp-websocket) and smacks for Prosody
Error only when whiteboard is open:
WebSocket connection to 'wss://meet.domain.com/socket.io/?room=7d66aeb265816d5d3d0d8d7366c38a4c&EIO=3&transport=websocket' failed:

It’s definitely something with the socket.io portion. If I visit the url directly ‘meet.domain.com/socket.io/’ I get a 502 bad gateway. I assume the whiteboard is dependent on the socket.io no way to change it to xmpp-websocket? Why is there no tutorial on setting up the socket.io relay if it’s so dependent on it? Everything else is working fine except for that.

I had a similar problem with /socket.io/ websockets. All I can offer is the ngnix configuration that works for me, as in my original guide:

# 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;
    }

Your error “HTTP 502 Bad Gateway” makes me think you already have a (non-working…) configuration in your main webserver config. Is the port it forwards to correct?

There is another websocket that Jitsi Meet uses. It has nothing to do with the whiteboard.

Solved.
I changed every port back to default then adjusted it again and it started working.
I’m so glad it’s working, but disappointed that I destroyed my server so many times trying to figure this out :sweat_smile: . I probably added some things that are no use to me also haha oh well. Thank you for the assistance. :hugs: