I’m having trouble with my installation of Jitsi.
TL;DR: Quick Install + custom Nginx configuration broke recently. Trying to figure out system.
I run a number of other servers on my Nginx installation with my personal set of standard configuration files & standards. I also have certbot with automatic certificate updates working the way I like it with the
webroot option and some catch all configuration in Nginx.
So, installing Jitsi, I’m expecting to need to do some amount of Nginx configuration. This is what I get for running multiple services on the same hardware!
My first try installing with the Quick Install (a month ago now, so going from memory), the configuration failed pretty ungracefully because the folder
/etc/nginx/sites-available doesn’t exist on my system. It took some trouble to wipe ("
purge") the original install and get it to run through the full install again. This time I made sure to create the standard
/etc/nginx/*-available folders before just to see what Jitsi created so that I could recreate the configuration in my Nginx configuration folders.
In the configuration for this attempt, I selected the option that allowed me to use my own certificates and passed in the
/etc/letsencrypt/live/jitsi.example.com/* paths in the configuration.
It also created the “normal”
modules-available files. Incorporating those into my Nginx configuration system, I ended up with this configuration for the jitsi setup:
I also added a single exception to my Digital Ocean droplet’s firewall to allow incoming
UDP 10000 connections. Note, I did not forward
4443, apparently without consequence.
This all seemed to be working. I ran a few video calls with 2 people. I ran some with ~5. All seemed to work great.
The first problem I ran into was that the videobridge crashed sporadically and didn’t have Systemd’s automatic restart set. That fix was simple enough.
Now, after a couple weeks of not using it, I can’t even join with a single user. (I have automatic updates enabled so I’m presuming a recent Jitsi update/change broke things).
The only errors I get anywhere are in the client browser:
VM10550 react_devtools_backend.js:6 2020-05-09T23:38:06.837Z [JitsiMeetJS.js] <Object.getGlobalOnErrorHandler>: UnhandledError: null Script: null Line: null Column: null StackTrace: Error: Focus error, retry after 8000 at l._allocateConferenceFocusError (moderator.js:446) at moderator.js:373 at O.Handler.handler (strophe.umd.js:2716) at O.Handler.run (strophe.umd.js:1875) at strophe.umd.js:3157 at Object.forEachChild (strophe.umd.js:830) at O.Connection._dataRecv (strophe.umd.js:3146) at I.Bosh._onRequestStateChange (strophe.umd.js:5012) r @ VM10550 react_devtools_backend.js:6 o @ md5.js:1 getGlobalOnErrorHandler @ async.js:1 window.onerror @ app.bundle.min.js?v=3992:1 callErrorHandler @ lib-jitsi-meet.min.js?v=3992:1 l._allocateConferenceFocusError @ md5.js:1 (anonymous) @ md5.js:1 (anonymous) @ lib-jitsi-meet.min.js?v=3992:1 run @ lib-jitsi-meet.min.js?v=3992:1 (anonymous) @ lib-jitsi-meet.min.js?v=3992:1 forEachChild @ lib-jitsi-meet.min.js?v=3992:1 _dataRecv @ lib-jitsi-meet.min.js?v=3992:1 _onRequestStateChange @ lib-jitsi-meet.min.js?v=3992:1 VM10550 react_devtools_backend.js:6 2020-05-09T23:38:06.838Z [modules/xmpp/moderator.js] <l._allocateConferenceFocusError>: Focus error, retry after 8000 <iq xmlns="jabber:client" type="error" to="firstname.lastname@example.org/f6c185a6-81bd-4323-b8c7-d1a3440524a5" from="focus.jitsi.example.com" id="5c188419-2ae2-4ec7-a92f-a65e48bdaafc:sendIQ">…</iq> r @ VM10550 react_devtools_backend.js:6 o @ md5.js:1 l._allocateConferenceFocusError @ md5.js:1 (anonymous) @ md5.js:1 (anonymous) @ lib-jitsi-meet.min.js?v=3992:1 run @ lib-jitsi-meet.min.js?v=3992:1 (anonymous) @ lib-jitsi-meet.min.js?v=3992:1 forEachChild @ lib-jitsi-meet.min.js?v=3992:1 _dataRecv @ lib-jitsi-meet.min.js?v=3992:1 _onRequestStateChange @ lib-jitsi-meet.min.js?v=3992:1 VM10550 react_devtools_backend.js:6 2020-05-09T23:38:06.842Z [conference.js] <X._onConferenceFailed>: CONFERENCE FAILED: conference.focusDisconnected focus.jitsi.example.com 8
I see that the problem seems to be connecting to
I’ve seen the other topics here that cover this error. The solution is basically: “fix the focus config”. So, that’s what I’m trying to do.
I am currently poking at options on my own and trying various combination. I’m certain eventually I’ll figure it out. However, it would be nice to understand what’s going on/needed and that’s what’s brought me here.
Looking at https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md, I see that port
4443 should be open as well. Curiously, looking at the ports currently listening on my server, I do not see
4443 anywhere. Some that I do see:
turnserver- What is this? Part of the videobridge?
java- Videobridge, right?
Also curious is that
turnserver listens on all interfaces separately instead of
*, including ones that don’t show on
Why am I here, what I’ve tried/trying
So, I’m wondering what I’ve missed that has changed.
Some of the ports I’m observing don’t match what the standard for some reason.
I previous didn’t have
*.jitsi.example.com DNS records established. Now they are. I’m using CloudFlare for DNS. Previously, I believe Jitsi worked while using their “proxy” features. However I have turned those off for now just in case. That change alone has not fixed this problem.
I’m in the middle of trying combinations of these various “fixes”:
*.jitsi.example.comto the SSL certificate
- Add domain for
internal.auth.jitsi.example.com(Noticed this sub-sub domain in a config)
- Check for other changes in Nginx config
Either way, I’ll post my findings in the hopes that this helps someone else in the future.
Thanks for reading. If anyone has any pointers or thoughts, I’d love to hear. Maybe I’m missing something simple.
If there were a document that elaborates on how each of the parts of this complicated system interact I’d be very interested in seeing that. The “Network description” map on the manual-install doc is a great start but missing a lot of, imho, ciritial details.