Failure on adding Lobby to existing Jitsi secure domains server

When I remove the lobby_muc from the main virtualhost and only have it enabled in the guest virtualhost I can no longer enable the lobby from jitsi. Also Prosody gives me some errors: lobby not enabled missing main_muc config

Current situation/config: lobby is not available/cannot be enabled from Jitsi. When I move the muc config to the main virtualhost (which is not what should be done afaik) I get a bunch of Prosody errors. This is now also true, but not that many, for the current setup. Seems wrong to me.
Everything is installed on the same Debian 10 server using .deb packages from the apt repository. All ‘stable’.

My config:
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 = "jitsi.example.eu";

cross_domain_bosh = false;
consider_bosh_secure = true;

VirtualHost "jitsi.example.eu"
        -- enabled = false -- Remove this line to enable this host
        --authentication = "anonymous"
        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/jitsi.example.eu.key";
        --        certificate = "/etc/prosody/certs/jitsi.example.eu.crt";
        --}
        speakerstats_component = "speakerstats.jitsi.example.eu"
        conference_duration_component = "conferenceduration.jitsi.example.eu"
        -- we need bosh
        modules_enabled = {
            "bosh";
            "pubsub";
            "ping"; -- Enable mod_ping
            "speakerstats";
            "turncredentials";
            "conference_duration";
            -- "muc_lobby_rooms";
        }
        c2s_require_encryption = false
        -- lobby_muc = "lobby.jitsi.example.eu"
        -- main_muc = "conference.jitsi.example.eu"
        -- muc_lobby_whitelist = { "recorder.jitsi.example.eu" } -- Here we can whitelist jibri to enter lobby enabled rooms

VirtualHost "guest.jitsi.example.eu"
        authentication = "anonymous"
        --c2s_require_encryption = false
        modules_enabled = {
            "bosh";
            "pubsub";
            "ping"; -- Enable mod_ping
            "speakerstats";
            "turncredentials";
            "conference_duration";
            "muc_lobby_rooms"; -- https://community.jitsi.org/t/fix-lobby-not-working-after-upgrade-to-latest-version-2-0-5390/90541
        }
        -- https://scheible.it/neues-jitsi-lobby/
        -- when enabled, knocking does not work!
        c2s_require_encryption = false
        lobby_muc = "lobby.jitsi.example.eu"
        main_muc = "conference.jitsi.example.eu"
        muc_lobby_whitelist = { "recorder.jitsi.example.eu" } -- Here we can whitelist jibri to enter lobby enabled rooms
        --speakerstats_component = "speakerstats.jitsi.example.eu"
        --conference_duration_component = "conferenceduration.jitsi.example.eu"


Component "conference.jitsi.example.eu" "muc"
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        "muc_mam"
        -- "token_verification";
    }
    admins = { "focus@auth.jitsi.example.eu" }
    muc_room_locking = false
    muc_room_default_public_jids = true

-- internal muc component
Component "internal.auth.jitsi.example.eu" "muc"
    storage = "memory"
    modules_enabled = {
      "ping";
    }
    admins = { "focus@auth.jitsi.example.eu", "jvb@auth.jitsi.example.eu" }
    -- https://github.com/jitsi/jibri
    -- storage = "null"
    muc_room_cache_size = 1000
    muc_room_locking = false
    muc_room_default_public_jids = true


VirtualHost "recorder.jitsi.example.eu"
    modules_enabled = {
      "ping";
      -- "muc_lobby_rooms";
    }
    authentication = "internal_plain"
    -- lobby_muc = "lobby.jitsi.example.eu"
    -- main_muc = "conference.jitsi.example.eu"
    -- c2s_require_encryption=false
    -- speakerstats_component = "speakerstats.jitsi.example.eu"
    -- conference_duration_component = "conferenceduration.jitsi.example.eu"


VirtualHost "auth.jitsi.example.eu"
    --ssl = {
    --    key = "/etc/prosody/certs/auth.jitsi.example.eu.key";
    --    certificate = "/etc/prosody/certs/auth.jitsi.example.eu.crt";
    --}
    authentication = "internal_plain"
    --modules_enabled = {
      -- "muc_lobby_rooms";
    --}
    --lobby_muc = "lobby.jitsi.example.eu"
    --main_muc = "conference.jitsi.example.eu"
    --c2s_require_encryption = false
    --speakerstats_component = "speakerstats.jitsi.example.eu"
    --conference_duration_component = "conferenceduration.jitsi.example.eu"


Component "focus.jitsi.example.eu"
    component_secret = "secret"

Component "speakerstats.jitsi.example.eu" "speakerstats_component"
    muc_component = "conference.jitsi.example.eu"

Component "conferenceduration.jitsi.example.eu" "conference_duration_component"
    muc_component = "conference.jitsi.example.eu"

Component "lobby.jitsi.example.eu" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true

well, when you are doing something you should not do because it’s no longer the valid thing to do, it does not work. So don’t do it.

According to [How to] How do I use the new Lobby Feature? I no longer have to add the lobby muc to guest but should enable it in the main virtualhost. However when I do that Prosody complains:
huets.jitsi.example.eu:muc_lobby_rooms: lobby not enabled missing main_muc config
same for recorder.jitsi.example.eu and auth.jitsi.example.eu

@Zodd FIX: Lobby Not Working After Upgrade to Latest Version (2.0.5390)

if you don’t uncomment it (the – at the beginning of a line means just that), it will not be used.

I am confused. In Prosody logs I see:
guest.jitsi.example.eu:muc_lobby_rooms error lobby not enabled missing main_muc config

While in the config:
VirtualHost “guest.jitsi.eample.eu”
authentication = “anonymous”
–c2s_require_encryption = false
modules_enabled = {
“bosh”;
“pubsub”;
“ping”; – Enable mod_ping
“speakerstats”;
“turncredentials”;
“conference_duration”;
– “muc_lobby_rooms”; – FIX: Lobby Not Working After Upgrade to Latest Version (2.0.5390)
}
Neues Jitsi Meet Feature: Lobby Wartebereich für Teilnehmer | Tobias Scheible
– when enabled, knocking does not work!
c2s_require_encryption = false
– lobby_muc = “lobby.jitsi.example.eu”
– main_muc = “conference.jitsi.example.eu”
– muc_lobby_whitelist = { “recorder.jitsi.example.eu” } – Here we can whitelist jibri to enter lobby enabled rooms
–speakerstats_component = “speakerstats.jitsi.example.eu”
–conference_duration_component = “conferenceduration.jitsi.example.eu”

“lobby not enabled missing main_muc config” is very much true as it is not configured in that stanza. However according to [How to] How do I use the new Lobby Feature? this is not needed! So, why does this result in an error?

in your first post it’s not configured in the main host either. And it should be. As the error message says.

I added all main_muc and lobby_muc entries at the stanzas where Prosody was complaining about. All fixed. But now I am at a point I have been before: Prosody is happy, but knocking no longer works.
In logs I see a warning:

> stanzarouter warn Received stanza with invalid destination JID: abc@lobby.jitsi.example.euabc@lobby.jitsi.example.euabc@lobby.jitsi.example.euabc@lobby.jitsi.example.eu/8f5a93b1

No typo/wrong copy/paste: the JID containes concatenated references!

usually means that you did not remove all lobby stuff from the guest domain.

In order to make Prosody happy I kept adding muc_main and muc_lobby configuration lines to stanzas it complained about. (see below)
In that config Prosody is happy and knocking does not work.
If I comment out muc_main and muc_lobby definitions in the virtualhost guest stanza, Prosody starts complaining again, but knocking still does not work.

When looking at the Prosody logfile I see:
stanzarouter warn Received stanza with invalid destination JID: abc@lobby.jitsi.example.euabc@lobby.jitsi.example.euabc@lobby.jitsi.example.eu/8569a9ba

and:
Apr 06 09:54:36 speakerstats.jitsi.example.eu:speakerstats_component warn A module has been configured that triggers external events.
Apr 06 09:54:36 speakerstats.jitsi.example.eu:speakerstats_component warn Implement this lib to trigger external events.

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 = "jitsi.example.eu";

cross_domain_bosh = false;
consider_bosh_secure = true;

VirtualHost "jitsi.example.eu"
        -- enabled = false -- Remove this line to enable this host
        --authentication = "anonymous"
        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/jitsi.example.eu.key";
        --        certificate = "/etc/prosody/certs/jitsi.example.eu.crt";
        --}
        speakerstats_component = "speakerstats.jitsi.example.eu"
        conference_duration_component = "conferenceduration.jitsi.example.eu"
        -- we need bosh
        modules_enabled = {
            "bosh";
            "pubsub";
            "ping"; -- Enable mod_ping
            "speakerstats";
            "turncredentials";
            "conference_duration";
            "muc_lobby_rooms"; -- https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100/1
        }
        c2s_require_encryption = false
        lobby_muc = "lobby.jitsi.example.eu"
        main_muc = "conference.jitsi.example.eu"
        muc_lobby_whitelist = { "recorder.jitsi.example.eu" } -- Here we can whitelist jibri to enter lobby enabled rooms

VirtualHost "guest.jitsi.example.eu"
        authentication = "anonymous"
        --c2s_require_encryption = false
        modules_enabled = {
            "bosh";
            "pubsub";
            "ping"; -- Enable mod_ping
            "speakerstats";
            "turncredentials";
            "conference_duration";
            -- "muc_lobby_rooms"; -- https://community.jitsi.org/t/fix-lobby-not-working-after-upgrade-to-latest-version-2-0-5390/90541
        }
        -- https://scheible.it/neues-jitsi-lobby/
        -- when enabled, knocking does not work!
        c2s_require_encryption = false
        lobby_muc = "lobby.jitsi.example.eu"
        main_muc = "conference.jitsi.example.eu"
        -- muc_lobby_whitelist = { "recorder.jitsi.example.eu" } -- Here we can whitelist jibri to enter lobby enabled rooms
        --speakerstats_component = "speakerstats.jitsi.example.eu"
        --conference_duration_component = "conferenceduration.jitsi.example.eu"

Component "conference.jitsi.example.eu" "muc"
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        "muc_mam"
        -- "token_verification";
    }
    admins = { "focus@auth.jitsi.example.eu" }
    muc_room_locking = false
    muc_room_default_public_jids = true

-- internal muc component
Component "internal.auth.jitsi.example.eu" "muc"
    storage = "memory"
    modules_enabled = {
      "ping";
    }
    admins = { "focus@auth.jitsi.example.eu", "jvb@auth.jitsi.example.eu" }
    -- https://github.com/jitsi/jibri
    -- storage = "null"
    muc_room_cache_size = 1000
    muc_room_locking = false
    muc_room_default_public_jids = true


VirtualHost "recorder.jitsi.example.eu"
    modules_enabled = {
      "ping";
      -- "muc_lobby_rooms";
    }
    authentication = "internal_plain"
    lobby_muc = "lobby.jitsi.example.eu"
    main_muc = "conference.jitsi.example.eu"
    -- c2s_require_encryption=false
    -- speakerstats_component = "speakerstats.jitsi.example.eu"
    -- conference_duration_component = "conferenceduration.jitsi.example.eu"


VirtualHost "auth.jitsi.example.eu"
    --ssl = {
    --    key = "/etc/prosody/certs/auth.jitsi.example.eu.key";
    --    certificate = "/etc/prosody/certs/auth.jitsi.example.eu.crt";
    --}
    authentication = "internal_plain"
    --modules_enabled = {
      -- "muc_lobby_rooms";
    --}
    lobby_muc = "lobby.jitsi.example.eu"
    main_muc = "conference.jitsi.example.eu"
    --c2s_require_encryption = false
    --speakerstats_component = "speakerstats.jitsi.example.eu"
    --conference_duration_component = "conferenceduration.jitsi.example.eu"


Component "focus.jitsi.example.eu"
    component_secret = "secret"

Component "speakerstats.jitsi.example.eu" "speakerstats_component"
    muc_component = "conference.jitsi.example.eu"

Component "conferenceduration.jitsi.example.eu" "conference_duration_component"
    muc_component = "conference.jitsi.example.eu"

Component "lobby.jitsi.example.eu" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true

well you have put lobby stuff everywhere it seems. AFAIK everything lobby related should be in the main authenticated host and only there. Same for speakerstats, conference_duration. The only module needed in the guest host is turncredentials (if you use turn). And the speakerstats warning is meaningless unless you want to use external events :slight_smile:

So back to square one. I commented out all reference to main_muc and lobby_muc in all stanzas except the main virtualhost. Now everything seem to work including knocking BUT:
systemd/prosody complain again:
auth.jitsi.example.eu:muc_lobby_rooms: lobby not enabled missing main_muc config
recorder.jitsi.example.eu:muc_lobby_rooms: lobby not enabled missing main_muc config
guest.jitsi.example.eu:muc_lobby_rooms: lobby not enabled missing main_muc config

I have trouble imagining where you have set this lobby module: in the global prosody config file maybe ?

Spot on! Thank you. I had no idea that at some time I had added the loading of some modules there. This solved all complains of Prosody while keeping the config clean.