Is there a documentation for the lobby feature just arrived

Dear gpatel-fr,
Thank you VERY much for your effort, I have installed and applied your prosody module.

Below the output, the room was “lobbytest” and I have replaced “meet.example.com” with “myserver.com”.
It seems that the lobby is not created even after enabling it in the GUI:

Here the results on server with prosody 0.11.2

host:list()
| myserver.com
| auth.myserver.com
| conference.myserver.com (muc component)
| conferenceduration.myserver.com (conference_duration_component component)
| focus.myserver.com (component)
| guest.myserver.com
| internal.auth.myserver.com (muc component)
| lobby.myserver.com (muc component)
| localhost
| speakerstats.myserver.com (speakerstats_component component)
| OK: 10 hosts

after “lobbytest” room creation:

muc:lstocc(“lobbytest@conference.myserver.com”)
| focus@auth.myserver.com owner moderator
| ykb9-0verlp-8erj@guest.myserver.com owner moderator
| Result: nil

after enabling lobby:

muc:lstocc(“lobbytest@lobby.myserver.com”)
| Result: nil

after knocking:

muc:lstocc(“lobbytest@lobby.myserver.com”)
| s-fimgwo6buc2it9@guest.myserver.com none participant
| Result: nil

Here the results using prosody 0.11.5

host:list()
| auth.myserver.com
| conference.myserver.com (muc component)
| conferenceduration.myserver.com (conference_duration_component component)
| focus.myserver.com (component)
| guest.myserver.com
| internal.auth.myserver.com (muc component)
| lobby.myserver.com (muc component)
| localhost
| myserver.com
| speakerstats.myserver.com (speakerstats_component component)
| OK: 10 hosts

after “lobbytest” room creation:

muc:lstocc(“lobbytest@conference.myserver.comg”)
| focus@auth.myserver.com owner moderator
| te4unizqxbvhxbyk@guest.myserver.com owner moderator
| Result: nil

after enabling lobby:

muc:lstocc(“lobbytest@lobby.myserver.com”)
| Result: nil

after knocking:

muc:lstocc(“lobbytest@lobby.myserver.com”)
| rplf2azpprdpmm1m@guest.myserver.com none participant
| Result: nil

Well, you did it ! congrats !

Yes, in a word when the lobby is enabled the moderator forgets to get in and stays in the main room. The user is left alone in the lobby. What lack of consideration from the moderator. No wonder nobody replies. Well, aside of having fun it’s weird but logical.
Sorry if I don’t reply immediately with a fix, I did not write all this code myself, that’s why I needed this small debug module so that things could be clearer. So for now I will ponder a bit on the code to try to understand how this could be happening. Unless some expert has a ‘haha’ moment while I’m away and get you a solution directly.

Well after pondering a bit I have realized that there must be something very wrong in your configuration, and since you have never posted the whole of it but only snippets it must be in the things you have kept hidden.
I have gone back on the posts reporting success and I have found in a post in this very thread a remark I maybe should have remembered :-):

If you have never read it please do so and you will find the light :slight_smile: . . Or read @corbyn’s how-to where it says ‘This will prevent the lobby from working properly’…

BTW I notice that you have the speakerstat enabled in your host list. You should move everything related to speakerstats and conference_duration in the guest host for this feature to work correctly. But this is unrelated to lobby.

Dear gpatel-fr,
I am sure that I messed up something (same in all installations so far) - however was not able to identify the issue in the previous posts (I have read them, too).
Please find below content of whole conf.d/meet.myserver.com [original server name replaced]
I apologize in advance for overseeing something stupid and taking your precious time in vein:

plugin_paths = { “/usr/share/jitsi-meet/prosody-plugins/” }

– domain mapper options, must at least have domain base set to use the mapper
muc_mapper_domain_base = “meet.myserver.com”;

turncredentials_secret = “JkhtYFjLoLG5iGR4”;

turncredentials = {
{ type = “stun”, host = “meet.myserver.com”, port = “3478” },
{ type = “turn”, host = “meet.myserver.com”, port = “3478”, transport = “udp” },
{ type = “turns”, host = “meet.myserver.com”, port = “443”, transport = “tcp” }
};

cross_domain_bosh = false;
consider_bosh_secure = true;
– https_ports = { }; – Remove this line to prevent listening on port 5284

https://ssl-config.mozilla.org/#server=haproxy&version=2.1&config=intermediate&openssl=1.1.0g&guideline=5.4
ssl = {
protocol = “tlsv1_2+”;
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”
}

VirtualHost “meet.myserver.com
– enabled = false – Remove this line to enable this host
authentication = “internal_plain”
– Properties below are modified by jitsi-meet-tokens package config
– and authentication above is switched to “token”
–app_id=“example_app_id”
–app_secret=“example_app_secret”
– Assign this host a certificate for TLS, otherwise it would use the one
– set in the global section (if any).
– Note that old-style SSL on port 5223 only supports one certificate, and will always
– use the global one.
ssl = {
key = “/etc/prosody/certs/meet.myserver.com.key”;
certificate = “/etc/prosody/certs/meet.myserver.com.crt”;
}
speakerstats_component = “speakerstats.meet.myserver.com
conference_duration_component = “conferenceduration.meet.myserver.com
– we need bosh
modules_enabled = {
“bosh”;
“pubsub”;
“ping”; – Enable mod_ping
“speakerstats”;
“turncredentials”;
“conference_duration”;
“muc_lobby_rooms”;
“telnet_lstocc”;
}
c2s_require_encryption = false
lobby_muc = “lobby.meet.myserver.com
main_muc = “conference.meet.myserver.com
– muc_lobby_whitelist = { “recorder.meet.myserver.com” } – Here we can whitelist jibri to enter lobby enabled rooms
Component “conference.meet.myserver.com” “muc”
storage = “memory”
modules_enabled = {
“muc_meeting_id”;
“muc_domain_mapper”;
– “token_verification”;
}
admins = { “focus@auth.meet.myserver.com” }
muc_room_locking = false
muc_room_default_public_jids = true

– internal muc component
Component “internal.auth.meet.myserver.com” “muc”
storage = “memory”
modules_enabled = {
“ping”;
}
admins = { “focus@auth.meet.myserver.com”, “jvb@auth.meet.myserver.com” }
muc_room_locking = false
muc_room_default_public_jids = true

VirtualHost “auth.meet.myserver.com
ssl = {
key = “/etc/prosody/certs/auth.meet.myserver.com.key”;
certificate = “/etc/prosody/certs/auth.meet.myserver.com.crt”;
}
authentication = “internal_plain”

Component “focus.meet.myserver.com
component_secret = “gF3KSeCr”

Component “speakerstats.meet.myserver.com” “speakerstats_component”
muc_component = “conference.meet.myserver.com

Component “conferenceduration.meet.myserver.com” “conference_duration_component”
muc_component = “conference.meet.myserver.com

VirtualHost “guest.meet.myserver.com
authentication = “anonymous”
c2s_require_encryption = false
modules_enabled = {
“muc_lobby_rooms”;
}
lobby_muc = “lobby.meet.myserver.com
main_muc = “conference.meet.myserver.com

Component “lobby.meet.myserver.com” “muc”
storage = “memory”
restrict_room_creation = true
muc_room_locking = false
muc_room_default_public_jids = true

you did not remove the lobby instructions from the authenticated host.

thank you for quick reply!
if I remove all the lines you listed above then I am not able to login to my server:
mic and camera are strike through, not able to authenticate to my server (not asking host password, as security option only password selectable)

you are kidding me right ?

Dear gpatel-fr,
thanks for your patience!

The lobby problem is solved.

I removed now only the line “muc_lobby_rooms”;
under the main VirtualHost section
and now the knocking function of lobby is working!

I have to admit that the descriptions linked in this thread have not been very clear, at least to me.

kind regards, and thx to all,
MS

Summary:
sudo nano -w /etc/prosody/conf.d/myserver.com.cfg.lua

  1. Under the main VirtualHost delete “muc_lobby_rooms”,

VirtualHost “meet.myserver.com
.
.
.
“speakerstats”;
“turncredentials”;
“conference_duration”;
“muc_lobby_rooms”; ##this line needs to be removed!##
}
c2s_require_encryption = false
lobby_muc = “lobby.meet.myserver.com
main_muc = “conference.meet.myserver.com
– muc_lobby_whitelist = { “recorder.meet.myserver.com” } – Here we can whitelist jibri to enter lobby enabled rooms
Component “conference.meet.myserver.com” “muc”
.
.
.
2. At the bottom of the file add following lines, then restart prosody:

VirtualHost “guest.meet.myserver.com
authentication = “anonymous”
c2s_require_encryption = false
modules_enabled = {
“muc_lobby_rooms”;
}
lobby_muc = “lobby.meet.myserver.com
main_muc = “conference.meet.myserver.com
Component “lobby.meet.myserver.com” “muc”
storage = “memory”
restrict_room_creation = true
muc_room_locking = false
muc_room_default_public_jids = true

@Mr_Smith, Glad it working for you now.

@gpatel-fr, you really stuck with this… As I have seen you frequently do… when others would have given up. Appreciate that!

Others, who find their way here, and reach the bottom, you can jump to a working lobby configuration, here.

1 Like

i have gone thoroughly through the above discussions. but still not able to activate the lobby feature. nor i am able to see the shield icon in my screen.

the prosody version i am having is 0.11.4-1 ;
jicofo is stable 1.0-567-1 and the
jitsi-videobridge2 version is 2.1-197-g38256192-1

i am uploading the cfg.lua files .
the file uploaded from /etc/prosody/conf.d/ is named as conf_d_10.33.1.cfg.lua.txt and
the file uploaded from /etc/prosody/conf.avail/ is named as conf_avail_10.33.1.cfg.lua.txt.

can anyone suggest where i the error i am committing.
thanks in advance.
conf_avail_10.33.1.231.cfg.lua.txt (3.1 KB) conf_d_10.33.1.231.cfg.lua.txt (2.8 KB)

I’m hardly the expert in matters jitsi, but I’ve had lobby working for a few weeks and noticed a few differences in your config vs. my own.

Re: /etc/prosody/conf.avail/your-domain.cfg.lua, you have:

VirtualHost "your-domain"
    ...
    authentication = "internal_plain" 
    ...
    modules_enabled = {
        ...
        "muc_lobby_rooms";
    }
    ...
    lobby_muc = "lobby.your-domain"
    ...

VirtualHost "guest.your-domain"
    authentication = "anonymous"
    c2s_require_encryption = false

By comparison my config contains:

VirtualHost "my-domain"
    ...
    authentication = "internal_hashed" 
    ...
    modules_enabled = {
        ...
    }
    ...

...

VirtualHost "guest.my-domain"
    authentication = "anonymous"
    modules_enabled = {
        "turncredentials";
        "muc_lobby_rooms";
    }
    lobby_muc = "lobby.my-domain"
    main_muc = "conference.my-domain"
    c2s_require_encryption = false

AIUI your config doesn’t work because your main VirtualHost has “muc_lobby_rooms” among modules_enabled, and also includes the “lobby_muc = …” statement. Furthermore VirtualHost “guest.your-domain” doesn’t enable module “muc_lobby_rooms” and fails to include the other statements. (However needed Component “lobby.your-domain” was present.)

At least those are differences from my config. Of course similar points are made in prior comments, no doubt the advice offered is right on target.

FWIW I noticed your configs from conf.d and conf.avail differed. On my system, the file in conf.d is just a symlink to the one in conf.avail guaranteeing they’re identical.

I concur it sure seems it can be tricky getting everything right.

thanks @jrapdx . i will try to make the config file (xxxx.cfg.lua) in conf.avail and conf.d directories same and add the required statements as mentioned in the above post. let me try and then i will revert back.

i made a fresh install. i was able to activate the lobby feature. the lobby feature shown in file lobby.pnglobby

then i tried to add secure authentication in /etc/prosody/conf.avail/10.33.1.231.cfg.lua. image file is

after adding that feature the lobby feature disappeared

i am guessing we can have either lobby feature or authentication , but not both.

can anybody throw light on this issue.
thanks in advance.

Hi
I am unable to enable lobby feature.I am using JWT token based authentication.Please find attached file artaticsxauuio.com.cfg.lua and logs.Please help what i am doing wrong.
Here are the logs:

Sep 15 13:49:15 modulemanager error Unable to load module ‘muc_lobby_rooms’: /usr/lib/prosody/modules/mod_muc_lobby_rooms.lua: No such file or directory

I have same issue “error Unable to load module ‘muc_lobby_rooms’: /usr/lib/prosody/modules/mod_muc_lobby_rooms.lua: No such file or directory”
plugin_paths = { “/usr/share/jitsi-meet/prosody-plugins/” }
Kindly help what i am doing wrong

Kindly see my file whats the issue?
root@ubuntu-s-1vcpu-2gb-nyc1-01:/etc/prosody/conf.avail# cat mydomain.cfg.lua
plugin_paths = { “/usr/share/jitsi-meet/prosody-plugins/” }

– domain mapper options, must at least have domain base set to use the mapper
muc_mapper_domain_base = “mydomain”;

turncredentials_secret = “secret”;

turncredentials = {
{ type = “stun”, host = “mydomain”, port = “4446” },
{ type = “turn”, host = “mydomain”, port = “4446”, transport = “udp” },
{ type = “turns”, host = “mydomain”, port = “443”, transport = “tcp” }
};

cross_domain_bosh = false;
consider_bosh_secure = true;
– https_ports = { }; – Remove this line to prevent listening on port 5284

VirtualHost “mydomain”
– enabled = false – Remove this line to enable this host
– authentication = “anonymous”
authentication = “internal_hashed”
– Properties below are modified by jitsi-meet-tokens package config
– and authentication above is switched to “token”
–app_id=“example_app_id”
–app_secret=“example_app_secret”
– Assign this host a certificate for TLS, otherwise it would use the one
– set in the global section (if any).
– Note that old-style SSL on port 5223 only supports one certificate, and will always
– use the global one.
ssl = {
key = “/etc/prosody/certs/mydomain.key”;
certificate = “/etc/prosody/certs/mydomain.crt”;
}
speakerstats_component = “speakerstats.mydomain”
conference_duration_component = “conferenceduration.mydomain”
– we need bosh
modules_enabled = {
“bosh”;
“pubsub”;
“ping”; – Enable mod_ping
“speakerstats”;
“turncredentials”;
“conference_duration”;
“mod_pinger”;
}
c2s_require_encryption = false

Component “conference.mydomain” “muc”
storage = “memory”
modules_enabled = {
“muc_meeting_id”;
“muc_domain_mapper”;
– “token_verification”;
}
admins = { “focus@auth.mydomain” }
muc_room_locking = false
muc_room_default_public_jids = true

– internal muc component
Component “internal.auth.mydomain” “muc”
storage = “memory”
modules_enabled = {
“ping”;
}
admins = { “focus@auth.mydomain”, “jvb@auth.mydomain” }
muc_room_locking = false
muc_room_default_public_jids = true

VirtualHost “auth.mydomain”
ssl = {
key = “/etc/prosody/certs/auth.mydomain.key”;
certificate = “/etc/prosody/certs/auth.mydomain.crt”;
}
authentication = “internal_plain”

Component “focus.mydomain”
component_secret = “sInwXTzh”

Component “speakerstats.mydomain” “speakerstats_component”
muc_component = “conference.mydomain”

Component “conferenceduration.mydomain” “conference_duration_component”
muc_component = “conference.mydomain”

VirtualHost “guest.mydomain”
authentication = “anonymous”
c2s_require_encryption = false
modules_enabled = {
“muc_lobby_rooms”;
}
lobby_muc = “lobby.mydomain”
main_muc = “conference.mydomain”

–local formdecode = require “util.http”.formdecode;
Component “lobby.meeting.mydomain” “muc”
storage = “memory”
restrict_room_creation = true
muc_room_locking = false
muc_room_default_public_jids = true

The lobby feature is working great for us, but is there a way to default it to enabled on all meetings? Our hosts often forget to enable it.

Are you using tokens and lobby together? If you are what is the secret to getting both to work together? I want to have music or a video playing when the first person arrives at the room before the moderator arrives.

oh well. I have to revive this old thread to correct my correct correction that is now wrong. They have done it again. With current unstable version the options that used to work only if set in the anonymous domain have to be moved back to the authenticated domain.

i set lobby module in authenticated domain also, then guest can send request but administrator don’t see those request.

Have you solve it ? can you help me to fix it ?