The Whiteboard works for me on Domains with authentication but on an anonymous domain it fails with “can’t decrypt data”. Using “muc_allowners”, when creating a whiteboard it does not appear for a fellow jitster → if that person clicks/selects the whiteboard himself, the “can’t decrypt data” error occurs.
prosody shows no errors. when running in debug + debug_stanza this error is shown after the whiteboard is first activated (even though it seems the metadata_room is initialised normaly on startup?)
Dec 09 21:04:41 c2s563526009820 debug RECV: <message to='metadata.meet.domain.tld'><room_metadata xmlns='http://jitsi.org/jitmeet' room='whiteboardroom@conference.meet.domain.tld'>{"key":"whiteboard","data":{"collabServerUrl":"https://meet.domain.tld/?room=3419054546d9af6484dfa71443d30ceb","collabDetails":{"roomId":"whiteboardroom","roomKey":"jSK2BqdP3XeR6z9zXUK-wg"}},"type":"room_metadata"}</room_metadata></message>
Dec 09 21:04:41 c2s563526009820 debug Received[c2s]: <message to='metadata.meet.domain.tld'>
Dec 09 21:04:41 c2s563526009820 debug Sending[c2s]: <message to='zigtfykchqkphydl@meet.domain.tld/p06m1fHC' type='error' from='metadata.meet.domain.tld'>
Dec 09 21:04:41 c2s563526009820 debug SEND: <message to='zigtfykchqkphydl@meet.domain.tld/p06m1fHC' type='error' from='metadata.meet.domain.tld'><error type='cancel'><service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></message>
→ but no idea why the service is unavailable.
when not running in debug, no errors are shown.
a similiar setup (+lobby/breakoutrooms as only difference) with authentication works as expected → thats why I am focusing on this difference, albeit it might be entirely unrelated
If someone can confirm that Whiteboards are working with anonymous/no authentication → that would already be good to know.
prosody configuration:
muc_mapper_domain_base = "meet.domain.tld";
plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" }
external_service_secret = "***";
external_services = {
{ type = "stun", host = "turn.domain.tld", port = 5349 },
{ type = "turn", host = "turn.domain.tld", port = 5349, transport = "udp", secret = true, ttl = 86400, algorithm = "turn" },
{ type = "turns", host = "turn.domain.tld", port = 5349, transport = "tcp", secret = true, ttl = 86400, algorithm = "turn" }
};
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"
}
unlimited_jids = {
"focusUser@auth.meet.domain.tld",
"jvb@auth.meet.domain.tld"
}
cross_domain_bosh = false;
consider_bosh_secure = true;
cross_domain_websocket = true;
consider_websocket_secure = true;
VirtualHost "meet.domain.tld"
authentication = "anonymous"
ssl = {
key = "/etc/prosody/certs/meet.domain.tld.key";
certificate = "/etc/prosody/certs/meet.domain.tld.crt";
}
speakerstats_component = "speakerstats.meet.domain.tld"
conference_duration_component = "conferenceduration.meet.domain.tld"
modules_enabled = {
"bosh";
"pubsub";
"ping";
"speakerstats";
"external_services";
"conference_duration";
"websocket";
"smacks";
"room_metadata";
--"stanza_debug";
}
lobby_muc = "lobby.meet.domain.tld"
main_muc = "conference.meet.domain.tld"
room_metadata_component = "metadata.meet.domain.tld"
c2s_require_encryption = false
smacks_max_unacked_stanzas = 5;
smacks_hibernation_time = 60;
smacks_max_hibernated_sessions = 1;
smacks_max_old_sessions = 1;
Component "conference.meet.domain.tld" "muc"
storage = "memory"
modules_enabled = {
"muc_meeting_id";
"muc_domain_mapper";
"polls";
"muc_allowners";
}
admins = { "focus@auth.meet.domain.tld" }
muc_room_locking = false
muc_room_default_public_jids = true
Component "internal.auth.meet.domain.tld" "muc"
storage = "memory"
modules_enabled = {
"ping";
}
admins = { "focus@auth.meet.domain.tld", "jvb@auth.meet.domain.tld" }
muc_room_locking = false
muc_room_default_public_jids = true
VirtualHost "auth.meet.domain.tld"
ssl = {
key = "/etc/prosody/certs/auth.meet.domain.tld.key";
certificate = "/etc/prosody/certs/auth.meet.domain.tld.crt";
}
modules_enabled = {
"limits_exception";
}
authentication = "internal_hashed"
Component "focus.meet.domain.tld" "client_proxy"
target_address = "focus@auth.meet.domain.tld"
Component "speakerstats.meet.domain.tld" "speakerstats_component"
muc_component = "conference.meet.domain.tld"
Component "conferenceduration.meet.domain.tld" "conference_duration_component"
muc_component = "conference.meet.domain.tld"
Component "metadata.meet.domain.tld" "room_metadata_component"
muc_component = "conference.meet.domain.tld"