I am self-hosting the latest stable version of Jitsi (8319) as a docker image on my server. I have enabled transcription and it is working well, but I am having trouble hiding the “Transcriber” iFrame from the UI.
Please help, Jitsi masters!
Background information:
- I have JVB running on a separate instance from the Main server (web, prosody, jicofo, jigasi).
- I don’t use SIP (incoming call) in Jigasi
- I don’t use the Record function
Problem:
I have followed Damencho’s instructions for hiding the transcriber from the UI from this link:
Essentially, he outlined 3 key steps:
1. Create an authenticated user
e.g. “transcriber@auth.meet.mydomain.com”
2. Configure the user in Jigasi
3. Configure the domain (“auth.meet.mydomain.com”) as a hidden domain
I have followed these steps as best as I could, but I still can’t get the transcriber to be hidden. I will describe what I did for each in detail below, and also list the problems I am facing.
1. Create an authenticated user
- Set configuration in .env file:
# Enable authentication
ENABLE_AUTH=1
# Enable guest access
ENABLE_GUESTS=1
# Select authentication type: internal, jwt or ldap
AUTH_TYPE=internal
- Verify that the VirtualHost is configured for the XMPP_AUTH_DOMAIN
VirtualHost "{{ $XMPP_AUTH_DOMAIN }}"
ssl = {
key = "/config/certs/{{ $XMPP_AUTH_DOMAIN }}.key";
certificate = "/config/certs/{{ $XMPP_AUTH_DOMAIN }}.crt";
}
modules_enabled = {
"limits_exception";
}
admins = { "transcriber@auth.meet.mydomain.com" }
authentication = "internal_hashed"
in Path: “/prosody/rootfs/defaults/conf.d/jitsi-meet.cfg.lua”
- Create a user with password in prosody
Because I’m running Jitsi as a docker image, the location where I can make the change is very limited. I first thought that I could make the change on the “/prosody/rootfs/etc/cont-init.d/10-config” file, so add the line:
prosodyctl --config $PROSODY_CFG register transcriber $XMPP_AUTH_DOMAIN $JIGASI_XMPP_PASSWORD
I named the user “transcriber” because that’s the example that was given by Damencho.
In order to check if the user was successfully registered, I went inside the /bin/bash of the prosody container and ran
find /config/data/auth%2emeet%2emydomain%2ecom/accounts -type f -exec basename {} .dat \;
Unfortunately, the user was not successfully created.
Even though I edit the 10-config file, it is not applied. Only things that I edit on the “.env”, “docker-compose.yml” are applied to docker, for some reason.
So I resolved this by adding the line as a command in the “docker-compose.yml” file, at the last line of the “prosody” chunk:
command: /bin/sh -c 'prosodyctl --config /config/prosody.cfg.lua register ${JIGASI_XMPP_USER} auth.meet.mydomain.com ${JIGASI_XMPP_PASSWORD} && /init'
As you can see, I set the user name as ${JIGASI_XMPP_USER}, and the value is set to “transcriber” in the .env file, and I set the password as ${JIGASI_XMPP_PASSWORD}.
After checking in /bin/bash for the list of users in Prosody, I did see that the user “transcriber” was successfully created.
2. Configure the user in Jigasi
I saw that in order to configure the user in Jigasi, I need to edit the following in the file below:
{{ if .Env.ENABLE_AUTH | default "0" | toBool }}
{{ if .Env.ENABLE_GUESTS | default "0" | toBool }}
org.jitsi.jigasi.xmpp.acc.USER_ID={{ $JIGASI_XMPP_USER }}@{{ $XMPP_GUEST_DOMAIN }}
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=true
{{ else }}
org.jitsi.jigasi.xmpp.acc.USER_ID={{ $JIGASI_XMPP_USER }}@{{ $XMPP_AUTH_DOMAIN }}
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false
{{ end }}
org.jitsi.jigasi.xmpp.acc.PASS={{ .Env.JIGASI_XMPP_PASSWORD }}
org.jitsi.jigasi.xmpp.acc.ALLOW_NON_SECURE=true
{{ end }}
file path: "//jigasi/rootfs/defaults/sip-communicator.properties"
However, as I mentioned in Part 1 above, I can’t edit this file because any edits I make don’t get implemented. (due to Jitsi running as a docker image, not a built container) I can see for sure that any change I make doesn’t get applied, because after bringing the container up, when I check the automatically generated configuration file:
"/.jitsi-meet-cfg/jigasi/sip-communicator.properties"
none of the changes I made are shown here.
That’s why the only way I can configure this is through the .env file.
I set $JIGASI_XMPP_USER as “transcriber” (in accordance to the example Damencho gave).
This is also why I used the JIGASI_XMPP_PASSWORD as the password when creating the “transcriber” user in Part 1. Because I can’t customize a different password in the “sip-communicator.properties” file, I can only edit the value of the JIGASI_XMPP_PASSWORD variable in the .env file.
3. Configure the domain (“auth.meet.mydomain.com”) as a hidden domain
In the file “/web/rootfs/defaults/settings-config.js”, I saw
// Recording.
{{ if $ENABLE_RECORDING -}}
config.hiddenDomain = '{{ $XMPP_RECORDER_DOMAIN }}';
So, in order to enable the hiddenDomain, I did:
- Set $ENABLE_RECORDING=1 in the .env file
- Set the value of $XMPP_RECORDER_DOMAIN in the .env file to “auth.meet.mydomain.com”
I don’t know if I did each step correctly, but this is everything I did in order to hide the transcriber from the UI.
The problem is that when I go to my hosted Jitsi and try to check if the transcriber is hidden now, I am shown a modal that says “Authentication Required”.
I’m assuming this is because I set ENABLE_AUTH=1
I tried various different Username/PW combos, and the only one that Jitsi seems to accept is:
Username: transcriber@auth.meet.mydomain.com
PW: $JIGASI_XMPP_PASSWORD
However, even then, the screen is stuck without going past that modal. All I see is “Obtaining session-id…” and it doesn’t go past this screen.
The browser console shows error messages such as:
- authenticationError: “not-authorized”
- [modules/xmpp/moderator.js] <Ir._handleError>: Unauthorized to start the conference
- [conference.js] <Vie._onConferenceFailed>: CONFERENCE FAILED: conference.authenticationRequired
So right now, I can’t even access Jitsi, and I can’t check if the transcriber is hidden.
I even tried accessing through the now enabled “guest” domain: “guest.meet.mydomain.com:8443” but it still asks for authentication. (maybe because I’m creating a new room?)
Can someone please help?
Please let me know if you require any other logs or information to help troubleshoot.
Also, as a side question, the two links below hint at requiring to make two separate accounts in Prosody.
- GitHub - jitsi/jibri: Jitsi BRoadcasting Infrastructure
- Jigasi Transcriber needs to be hidden participant - #2 by damencho
Is this required even if I’m not using SIP or Recording?
Thank you in advance for your time and support!