[How to] How do I use the new Lobby Feature?

Want to get started using the new Lobby feature? Want to learn how it works or see an example of what it should look like? This post will hopefully help you get started!

Great work, Jitsi developers! :clap: The new lobby feature works perfectly!

First and foremost, the lobby feature has been released and works out of the box. Previously, it was under development and you had to install from unstable to get it working. That is a thing of the past. If you read other threads about the lobby feature, check the date first. If it’s before (approx.) 2020-07-21T04:00:00Z, the information may be dated. Keep that in mind. This was posted 2020-08-01T04:00:00Z.

Version Details

I just installed Jitsi Meet on a Ubuntu 18.04.4 LTS lxc container with zero issues. Before installing Jitsi Meet, first install Prosody 0.11.5.

dpkg -l | grep jitsi
ii  jitsi-meet                     2.0.4857-1
ii  jitsi-meet-prosody             1.0.4289-1
ii  jitsi-meet-turnserver          1.0.4289-1
ii  jitsi-meet-web                 1.0.4289-1
ii  jitsi-meet-web-config          1.0.4289-1
ii  jitsi-videobridge2             2.1-273-g072dd44b-1

See it in action

The lobby feature is right there under the shield icon, image, easy to find and use:

Once enabled, when a guest tries to enter they are presented with a new page before they can join:

If “Jackson” clicks on “Ask to Join”, the meeting moderator will see a prompt to “Allow” or “Reject”
image


Configuration Details

The requirements for the lobby feature seem straightforward.

:information_source: To enable the lobby feature you must be sure the proper configuration is present in your server’s Prosody cfg file, typically located under /etc/prosody/conf.d/meet.example.com.cfg.lua.

Anonymous Domain (no user logins/default)

VirtualHost "meet.example.com"
...
        modules_enabled = {
            ...
            "conference_duration";
            "muc_lobby_rooms";
        }
        c2s_require_encryption = false
        lobby_muc = "lobby.meet.example.com"
        main_muc = "conference.meet.example.com"
        -- muc_lobby_whitelist = { "recorder.meet.example.com" }
...
Component "lobby.meet.example.com" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true
...

Secure Domain (user logins • learn more)

For a secure domain, you need to add the lobby configuration under the guest VirtualHost (as opposed to the main VirtualHost & not both)

:bulb:Make sure you do not have multiple lobby configurations under different VirtualHost sections. This will prevent the lobby from working properly.

...
VirtualHost "guest.test.example.com"
    authentication = "anonymous"
    c2s_require_encryption = false
    modules_enabled = {
            "muc_lobby_rooms";
        }

    lobby_muc = "lobby.test.example.com"
    main_muc = "conference.meet.example.com"
   ...

Component "lobby.test.example.com" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true

Hope this helps!

19 Likes

Corby, thanks so much for posting all this! I got it to work :smiley:

1 Like

@grantr, Thats great news! Welcome to the community!

1 Like

I’ve just signed up here to say thanks.

By the way, do you know where I can post feature requests/suggestions?

I notice that a guest can keep asking to join the meeting after their previous request is rejected, which could allow an uninvited guest to continually disrupt the meeting with multiple requests. I think rejecting a request to join should prevent further requests from that requester.

Also, I notice that as soon as the moderator enters the room, any guests waiting for the moderator to arrive are let into the room too. This could allow a flood of participants (some uninvited) to enter the room before the moderator has had a chance to enable the lobby. To prevent this, I think it would be good if the lobby feature was enabled by default rather than manually switched on by the moderator.

1 Like

Product ideas and suggestions go here:

https://community.jitsi.org/c/ideas/10

Ok, thanks. I’ll post them both in there now.

@corby Perfect. This worked for my docker-jitsi-meet instance. One small question, I just want the host ( registered in prosody) to allow, reject the guests from the lobby. In the current scenario, the guests approved by the hosts can also accept the knocking requests. How do I do it ?

@corby !! Thanks a lot.

Also I have query. Is it possible to control this using API ?

Something like ?

api.executeCommand(‘toggleLobby’, true);

I had come across this link :

update my jitsi to latest today, add your guide for secure domain to my lua… but no lobby option on shield icon, only setup password for meeting… is there something i miss??

very probably. Either you skimmed the post to search for requirements, however the prosody version requirement is not listed among them, it’s cited previously in the version details; or you did not update the prosody config file correctly; or you did not restart the whole thing.
If you have the correct Prosody version (0.11), restarted the computer after updating everything, and it still does not work, post your prosody config file.

my prosody is 0.11.2-1, for authentication im using ldap
after editing those thing i already restart the server.
here is my prosody conf, i change my meet server name to “myvc”

VirtualHost “guest.myvc”
authentication = “anonymous”
c2s_require_encryption = false
modules_enabled = {
“muc_lobby_rooms”;
“participant_metadata”;
}

lobby_muc = "lobby.myvc"
main_muc = "conference.myvc"

Component “lobby.myvc” “muc”
storage = “memory”
restrict_room_creation = true
muc_room_locking = false
muc_room_default_public_jids = true

Component “conference.myvc” “muc”
storage = “memory”
–modules_enabled = { “token_verification” }
admins = { “focus@auth.myvc” }

obviously that’s not your whole file, it seems that presence of lobby instructions in authenticated host can mess things.
What you are showing seems correct.
Has your prosody.log a line with

… guest.yourdomain info Lobby component loaded …

Sorry, its work now…
somehow im screwed up when creating symbolic link…

thanks for your guide…

Hi @Corby @damencho! Thank you for your hard work and bringing this new feature and this guide.

I’ve working debian stable jtisti meet installation up to date with /stable jitsi repo with secure domain enabled. I want to test lobby room, I’ve successfully enabled Lobby room feature, but accepting incoming knocking participant doesn’t work. Rejecting works fine. In dev console I’ve this warnings:

  1. when enabling Lobby room:

Logger.js:154 2020-08-11T09:41:07.591Z [JitsiConferenceEventManager.js] <a.>: Ignored XMPPEvents.JSON_MESSAGE_RECEIVED for not existing participant: migo@conference.mydomain.com/e2f6d029
{event: “LOBBY-ENABLED”, value: true, type: “lobby-notify”}
event: “LOBBY-ENABLED”
type: “lobby-notify”
value: true
proto: Object
o @ Logger.js:154
(anonymous) @ JitsiConferenceEventManager.js:379
a.emit @ events.js:152
onMessage @ ChatRoom.js:1057
onMessage @ strophe.emuc.js:155
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\

  1. when I click on Allow button:

Logger.js:154 2020-08-11T09:42:14.308Z [JitsiConferenceEventManager.js] <a.>: Ignored XMPPEvents.JSON_MESSAGE_RECEIVED for not existing participant: migo@conference.mydomain.com/e2f6d029
{event: “LOBBY-ACCESS-GRANTED”, value: “migo@lobby.mydomain.com/8d0fc392”, type: “lobby-notify”}
event: “LOBBY-ACCESS-GRANTED”
type: “lobby-notify”
value: “migo@lobby.mydomain.com/8d0fc392”
proto:
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
defineGetter: ƒ defineGetter()
defineSetter: ƒ defineSetter()
lookupGetter: ƒ lookupGetter()
lookupSetter: ƒ lookupSetter()
get proto: ƒ proto()
set proto: ƒ proto()
o @ Logger.js:154
(anonymous) @ JitsiConferenceEventManager.js:379
a.emit @ events.js:152
onMessage @ ChatRoom.js:1057
onMessage @ strophe.emuc.js:155
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

  1. Clicking on Reject button (working):

Logger.js:154 2020-08-11T09:43:06.177Z [JitsiConferenceEventManager.js] <a.>: Ignored XMPPEvents.JSON_MESSAGE_RECEIVED for not existing participant: migo@conference.mydomain.com/e2f6d029
{event: “LOBBY-ACCESS-DENIED”, value: “migo@lobby.mydomain.com/8d0fc392”, type: “lobby-notify”}
event: “LOBBY-ACCESS-DENIED”
type: “lobby-notify”
value: “migo@lobby.mydomain.com/8d0fc392”
proto:
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
defineGetter: ƒ defineGetter()
defineSetter: ƒ defineSetter()
lookupGetter: ƒ lookupGetter()
lookupSetter: ƒ lookupSetter()
get proto: ƒ proto()
set proto: ƒ proto()
o @ Logger.js:154
(anonymous) @ JitsiConferenceEventManager.js:379
a.emit @ events.js:152
onMessage @ ChatRoom.js:1057
onMessage @ strophe.emuc.js:155
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

Am I missing some pieces of lobby room puzzle? I’ve followed this guide for lobby room feature enable. I’ve tried to upgrade prosody to 0.11.5 but didn’t help with this problem.

Thank you for your time in advance!

Kind regards,

Milan

EDIT 12.08.2020

I’ve disabled secure domain, but still can’t accept incoming participants knocking. I’m using websockets and Jitsi meet works well besides this. Is some configuration changes needed when upgrading from older build?

Any ideas?

Thank you!

hi friend, hey what benefits does this new jitsi update bring? is that I can not find information about it.

best regards

AFAIK the most noticeable is we get easier access to switch mic and camera access on meeting, lobby support, mobile browser support (finally no apps needed on phone), and encryption support (? haven’t use it yet).

1 Like

For others that may find their way here and have the same question:

1 Like

Hi @damencho, I found reason for problem I’ve reported. When is smacks module enabled in prosody you get this erratic behavior with being not able to accept incoming participants to conference room.

Here is error log from prosody generated by pressing accept button in jitsi:

Aug 12 14:41:53 c2s55dc33a6f290 error Traceback[c2s]: /usr/share/jitsi-meet/prosody-plugins/mod_smacks.lua:442: attempt to call field ‘log’ (a nil value)
stack traceback:
/usr/share/jitsi-meet/prosody-plugins/mod_smacks.lua:442: in function ‘?’
/usr/lib/prosody/util/events.lua:79: in function </usr/lib/prosody/util/events.lua:75>
(…tail calls…)
/usr/lib/prosody/modules/mod_mam/mod_mam.lua:307: in function ‘?’
/usr/lib/prosody/util/events.lua:79: in function </usr/lib/prosody/util/events.lua:75>
(…tail calls…)
/usr/lib/prosody/core/stanza_router.lua:180: in function </usr/lib/prosody/core/stanza_router.lua:149>
(…tail calls…)
/usr/lib/prosody/modules/muc/muc.lib.lua:1217: in function ‘route_stanza’
/usr/lib/prosody/modules/muc/muc.lib.lua:1116: in function </usr/lib/prosody/modules/muc/muc.lib.lua:1098>
(…tail calls…)
/usr/lib/prosody/util/events.lua:79: in function </usr/lib/prosody/util/events.lua:75>
(…tail calls…)
/usr/lib/prosody/core/stanza_router.lua:180: in function ‘core_post_stanza’
/usr/lib/prosody/core/stanza_router.lua:127: in function ‘core_process_stanza’
/usr/lib/prosody/modules/mod_c2s.lua:275: in function ‘func’
/usr/lib/prosody/util/async.lua:127: in function </usr/lib/prosody/util/async.lua:125>

Is this bug in prosody or jitsi-meet? Or is using smacks module not supported/recomended with jitsi-meet? Or is some additional configuration needed?

With smacks modele disabled lobby room works as expected.

Any ideas on this?

Thank you!

Milan

You are using this version of that module and this is prosody 0.11? https://github.com/jitsi/jitsi-meet/blob/master/resources/prosody-plugins/mod_smacks.lua
We are using them both with no problem.