InstallGuide/MU-Conferencing

Go up: WikiStart

A.13. Multi User Conferencing (MU-Conference) for Jabberd2

In the past, it was necessary to use the Jabber Component Runtime (JCR) wrapper to interface jabberd2 with the MU-Conference component. As of May, 2007, the JCR is no longer available for download at its distribution site (jabber.terrapin.com/JCR). As of mu-conference 0.7, it is no longer necessary to use the JCR to add conferencing abilities to the jabberd2 server.

This section describes how to add the conferencing component to a jabberd2 deployment. Note that the mu-conference project is a separate development effort from jabberd2 and support issues, bug reports and feature requests should be directed to the mu-conference development team. This section is provided as a courtesy, since at the time of its writing (June, 2007) the deployment of conferencing with jabberd2 was not well documented.

A.13.1 Prerequisites

For MU-conference 0.7 or better, libglib-2, expat and libidn11 are required. The installation of these libraries and/or packages is beyond the scope of this document, but most mainline operating systems will have a means of installing them. If your OS does not have a package management system to aid in their installation, they can, of course, be compiled from source.

A.13.2 Acquire and Install mu-conference

As of May, 2007, the MU-Conference component is available from the MU-Conference development website, hosted at http://gna.org.

Once the file is downloaded, extract the source code, change directory to the newly created directory and make the component.

(As of June, 2007, the current version of mu-conference is 0.7)

   tar -xvf mu-conference_0.7.tar.gz
   cd mu-conference_0.7
   make

Provided that all of the prerequisites are available on your system, the component will be built. The binary will be in the mu-conference_0.7/src directory. Note that the mu-conference project is a separate development effort from jabberd2. Please direct makefile errors or compilation issues to the mu-conference team.

A.13.3 Create directories

The mu-conference component requires a spool directory to in which to store conference room information. This directory's location is arbitrary, meaning that you can place it anywhere on your system. A common location might be /usr/local/var/jabberd/spool/rooms . Also, if it doesn't already exist, a log directory for the component must also be created. It would be logical for this log to be in the same location as the other logs jabberd2 uses. This component will also require a pid file location which again, logically, would be the same as the other pid files you have already configured jabberd2 to use.

These directories should be write accessible to the account under which the base jabber components run (jabber is the default).

A.13.4 Configure mu-conference

Copy the default muc.xml file from the mu-conference_0.7 into the mu-conference_0.7/src/

   cp muc-default.xml src/muc.xml

Edit src/muc.xml with your favorite text editor and modify the <name>, <host>, <ip>, <port>, <secret>, <spool>, <logdir> and <sadmin> tags.

The <name> and <host> tags will be what clients connect to to create a conference room. Usually, this is something like conference.jabber.org (where jabber.org is the domain name of the normal "one to one" jabber server).

The <ip> tag should point to the ip of the machine that is hosting the router component. In most deployments (all components running on the same machine), this will be 127.0.0.1

The <port> tag should be changed to match whatever port the router is listening on (the default for the router is 5347).

The <secret> tag should be changed to match whatever the router user's password is.

The <spool> tag should be changed to the directory you created for the spool in A.13.3

The <logdir> tag should be changed to the directory you've decided you want to logs for the component to go in.

The <pidfile> tag should be changes to the file that you would like the component's pid to be written to.

  <name>conference.myjabber.server.org</name> <!-- the jid of your component -->
  <host>conference.myjabber.server.org</host> <!-- this should be the same as above -->
  <ip>127.0.0.1</ip> <!-- adress of the jabber server -->
  <port>5347</port>  <!-- port used to connect the service to the jabber server -->
  <secret>secret</secret> <!-- secret shared with the jabber server -->

  <spool>/usr/local/var/jabberd/spool/rooms</spool> <!-- directory containing the rooms data -->
  <logdir>/usr/local/var/jabberd/log</logdir> <!-- directory containing the debug log (the file is called mu-conference.log) -->
  <pidfile>/usr/local/var/jabberd/pid/mu-conference.pid</pidfile> <!-- file that will contain the PID of the process -->

For the <sadmin> tag, as the comment in the configuration file suggests, add the <user> tags for the users that you would like to have administrative privileges for this component. (This becomes important for room creation and destruction, kicking users out of rooms and other functionality, as described in the configuration file.)

      <!-- lists of admins of the service, add a <user/> tag by admin -->
      <sadmin>
        <user>admin@jabber.org</user>
      </sadmin>

The configuration file also documents how to add conference room information to a MySQL database, though this is not required (and probably not recommended, unless, as the comments suggest, you wish to have a web interface to show the conferences in use).

Also, for testing purposes, you may desire to set the <loglevel> tag to 255 to record all debugging messages. Once testing is complete, it is strongly recommended that you revert to loglevel 124 (the default).

     <loglevel>255</loglevel> <!-- log verbosity, 255 for very verbose, 0 for quiet -->

A.13.5 Test your configuration of mu-conference

To test your deployment of the mu-conference component, execute the following command:

    src/mu-conference -c muc.xml

Note that, since this is a component like the other (base) components of jabberd2, you should provide it some time to log in to the router and register itself as an available service to clients before attempting to test it. Once you believe this process is complete (check the jabberd2 router logs), use a client to create a conference room.

Note that mu-conference does a good job of reporting configuration file errors at log level 255. If there is an error in the configuration file, it will report it. Segmentation faults and other issues with the component itself should be reported to the mu-conference team.

A.13.6 Copy the binary component and configuration files to their production directories

Since the component was initially created in the mu-conference_0.7/src directory, once you've verified that it functions, if you would prefer to place it in a different directory, don't forget to copy it to its final home, change its permissions so that the jabberd user account (jabber is the default) can execute the binary and read the configuration file. Logic would (or perhaps would not) suggest that the component be placed with the other jabberd2 components on your system.

A.13.7 Stopping and starting the mu-conference component with the jabberd2 server

Since the mu-conference component is a component like any other jabberd2 component, it should be started and stopped in the same manner. Note that it will continue to loop to attempt to connect to the router if a routing process is not found, thus, it should probably have it's own line in the jabberd2 shutdown scripts (or its own shutdown script).

In your startup scripts, the jabberd2 router and other base processes should be started first, followed by the mu-conference process. As with other jabberd processes, it's recommended that this process also run under the jabber account.


© 2003 Will Kamishlian and Robert Norris

http://jabberd.jabberstudio.org/2/docs/ccommons.gifThis work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.