Running Murmur

From Mumble Wiki
Revision as of 13:25, 24 August 2008 by Slicer (talk | contribs)
Jump to: navigation, search

Murmur is the server component for Mumble.

Distribution-specific Murmur

By default, murmur is configured to run from a regular user account, and on Windows and OSX this is the only way it works. However, on distributions with prepackaged murmur (Debian/Ubuntu), murmur is configured to run as a sytem service, just like your webserver, mailserver and whatever else you've got running. This "global" installation is a ready, turn-key solution, most of the information here does not apply to you. Most packages also include the 'murmur-user-wrapper' script, which does all of the below for you if you want to run as a regular user (including starting DBus).

So, on these systems, you can still run murmur manually, but you will then not benefit from the extensive care that has gone into preparing those packages.

If you need to register users or change the settings of a virtual server, read the section on Advanced Configuration.

Basic configuration

The default settings for a murmur server are configured in murmur.ini. Here you can configure the welcome text, port number and other settings. However, these are just default settings; if you're running multiple virtual servers, each virtual server has it's own configuration, which is maintained internally by Murmur (see below).

Setting the SuperUser password

Until you've set a password for the SuperUser, the account will be disabled. You don't need the SuperUser account to run a simple server, but you do need it if you want to give your regular user account any privileges. To set the password, you need to run

murmurd -supw <password>

If you're on Win32, you should do the above from a command line.

Running Murmur as a regular user

If you are on Win32, you can simply start murmur.exe from the command line, or even easier just start it from the Start Menu.

DBus on Linux/OSX

For full functionality, murmur requires a DBus daemon. We need an isolated daemon, different from the one running under, say, a X11 session, so we specifically spawn our own. The following small shell script will ensure a deamon is ready (copied from murmur-user-wrapper):

#! /bin/bash
DIR=$HOME/murmur
DBUSFILE=$DIR/.dbus.sh
DBUS_SESSION_BUS_ADDRESS=invalid:/
[ -f $DBUSFILE ] && . $DBUSFILE
if ! dbus-send --print-reply --dest=org.freedesktop.DBus --type=method_call / org.freedesktop.DBus.GetId 2> /dev/null > /dev/null; then
  echo "Launching D-Bus session"
  dbus-launch --sh-syntax > $DBUSFILE
  . $DBUSFILE
  if ! dbus-send --print-reply --dest=org.freedesktop.DBus --type=method_call / org.freedesktop.DBus.GetId 2> /dev/null > /dev/null; then
    echo "Failed to launch session DBUS, bailing out."
    exit
  fi
fi

You should always run this script before starting murmur, and you also need to run it before using any DBus commands.

Running the daemon

To run murmur, simply type

murmurd

For debugging, you might want to add -fg -v to the command line, which will stop the program from running in the background and.

By default murmur opens it's configuration file, database file and logfile in your current directory. The configuration file can be overridden with the -ini parameter, and the database and logfile can be set form the ini file.

Advanced Configuration

First, make sure Murmur is running and that you have contact with DBus. For Win32, you don't need to do anything, and on all other platforms, you should run the script above.

Showing the default configuration

This is just to verify we have contact with DBus, and to print out the default configuration.

dbus-send --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call / net.sourceforge.mumble.Meta.getDefaultConf

(if you're running a global installation, add --system before all the other parameters)

This should print out the default configuration.

Virtual Servers

Listing the servers:

dbus-send --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call / net.sourceforge.mumble.Meta.getAllServers

Adding a server:

dbus-send --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call / net.sourceforge.mumble.Meta.newServer

Removing a server:

dbus-send --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call / net.sourceforge.mumble.Meta.newServer int32:<serverid>

Starting a server:

dbus-send --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call / net.sourceforge.mumble.Meta.start int32:<serverid>

Stopping a server:

dbus-send --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call / net.sourceforge.mumble.Meta.stop int32:<serverid>

Server configuration

Each virtual server has it's server-specific configuration. If a particular confiuration item is empty, it will fall back to the default configuration, which is specified in the ini file.

Listing the configuration:

dbus-send --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call / net.sourceforge.mumble.Meta.getDefaultConf
dbus-send --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call / net.sourceforge.mumble.Meta.getAllConf int32:<serverid>

Setting a configuration item:

dbus-send --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call / net.sourceforge.mumble.Meta.setConf int32:<serverid> string:"<key>" string:"<value>"

User management

If you can run CGI scripts from your user account, the murmur.pl script contains user self-management. Just copy it to your webserver and make it executable (you might need to rename it to murmur.cgi), and it should contain everything needed. If not, this is what you'll need:

Adding a new registration:

dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call /<serverid> net.sourceforge.mumble.Murmur.registerPlayer string:"<username>"

Fetching an existing registration:

dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call /<serverid> net.sourceforge.mumble.Murmur.getRegistration int32:<userid>

or

dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call /<serverid> net.sourceforge.mumble.Murmur.getRegisteredPlayers string:"<username>"

Updating a registration:

dbus-send --system --print-reply --dest=net.sourceforge.mumble.murmur --type=method_call /<serverid> net.sourceforge.mumble.Murmur.setRegistration int32:<userid> string:"<username>" string:"<email>" string:"<password>"