mod_muc: have a multiple-host ejabberd instance share one mod_muc?

Hi,

I run an ejabberd-server, version 1.1.2.

The one ejabberd-instance serves two hostnames. I want mod_muc to be available on both hosts. However, and here comes the problem, I'd like to have them both not only use the same domain for mod_muc but also share the same chatrooms. In other words, have both served hostnames use the same mod_muc.

Example:
My two domains are abc.com and xyc.com. If I do a service-discovery on either of the two, the domain for the chatrooms will be conference.abc.com.

I tried to specify
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin},
{host, "conference.abc.com"}
]}.
for both configurations. But that didn't work :-(

Is there a way to achieve this with ejabberd? Any help would be appreciated ;-)

cya, Mat

One MUC, and one link

This is the solution:

  1. abc.com has its mod_muc as usual, with the appropiate name "conference.abc.com".
  2. xyz.com don't need mod_muc at all. Instead, tell mod_disco to add a link to "conference.abc.com".

Since the modules on one host and the other are different, you must configure their modules independently. On ejabberd.cfg, instead of

{modules, [
  ...
  {mod_muc, []},
  {mod_disco, []},
  ...
]}.

you must put something like


{host_config, "abc.com", [{modules, [
  ...
  {mod_muc, [{host, "conference.abc.com"}]},
  {mod_disco, []},
  ...
]}]}.

{host_config, "xyz.com", [{modules, [
  ...
  %{mod_muc, []},   % Don't start mod_muc on this host
  {mod_disco, [{extra_domains, ["conference.abc.com"]}]},
  ...
]}]}.

Your ejabberd.cfg file will be a lot larger, but it should work.

Syndicate content