Setup and Configure Murmur (Mumble Server) On FreeBSD 11

Published on: Fri, Dec 14, 2018 at 11:12 am EST

Murmur is the official server software for the Mumble voice communication protocol. This official implementation is stable and efficient. This guide will describe step-by-step the process of installing and configuring a Murmur server for communication with Mumble clients on FreeBSD 11.2.

Prerequisites

  • Any Vultr VPS
  • An SSH client:
    • ssh in a terminal for Linux, Mac, and Unix (including BSD) users
    • The PuTTY SSH client for Windows

SSH to your Vultr FreeBSD server and log in as root, or as a sudo user. If using a sudo user, prepend commands with sudo:

home-desktop$ ssh root@198.51.100.21

Note: Replace 198.51.100.21 with your own IP address.

Installing the Murmur package

Note: This section will install a vanilla Murmur server with no D-Bus/Bonjour support.

To add Murmur and its dependencies to the system, run the following command:

pkg install murmur

Since you've installed the server software from the binary distribution, you can skip the next section and proceed to Configuring Murmur.

Installing from ports

If you've followed the rest of the guide up to this point, and you don't want to enable D-Bus or Bonjour support, or disable Ice/MySQL/SQLite support, feel free to follow the previous section instead and then skip to Configuring Murmur.

Getting the ports tree

Run this command to check for and download any updates to your ports tree (you'll need this if you don't have ports setup yet):

portsnap fetch

If the output ends with 'No updates needed', you can skip to the next step. Otherwise, you don't have an up-to-date ports tree prepared, and will need to extract the newly downloaded snapshot:

portsnap extract

Building and installing the server application

Compiling the Murmur port is easy, but will take some time. The following commands will put you in the directory of the port, build it, install the generated files, and remove unnecessary files after they are built:

cd /usr/ports/audio/murmur
make install clean

During the early parts of the installation, you will see one or more text dialogs asking about features you'd like to enable or disable. To navigate the menus, use the UP and DOWN arrows to highlight an entry, SPACE to toggle the entry's enabled/disabled status, or ENTER to use the default action. To change the default action (usually to 'Cancel'), use the LEFT and RIGHT arrows.

The murmur configuration dialog window will present the options to disable Bonjour, enable D-Bus, enable Ice, and disable MySQL or SQLite support. It also allows you to disable building the documentation, but this is generally a bad idea.

Summary of Murmur build configuration options

The name of the option and the official package's choices for those options are shown here, if you're unsure about any of them.

  • Bonjour is a protocol for discovery of local network services. Unless you'll be accessing your Murmur server through a VPN, or you want another VPS on the same Private Network to find Murmur automatically, this is okay to disable.

  • D-Bus is a way for applications, typically on the same machine, to communicate with each other. In Murmur, the D-Bus interface is deprecated and should be left disabled, unless you're certain you have an application which requires Murmur's D-Bus interface.

  • Documentation should be left enabled unless you specifically don't want the manual pages to be available to you. This option will not change anything from the client's point of view, and is only relevant to the system administrator.

  • Ice is a newer RPC protocol which allows you to remotely administrate Murmur using alternative means like web interfaces. If you enable this, you can later choose to configure an RPC solution which will allow you to do things like online user registration and remote channel moderation. RPC configuration will not be handled in this guide, and usually requires a web server with PHP support.

  • MySQL is a powerful, scalable database management system. This should be left disable, unless if you have a remote database you would like Murmur to use instead of a local file, or if you plan to have many thousands of users. This guide will not cover MySQL configuration.

  • SQLite is a lightweight alternative to larger database management solutions like MySQL. It allows fast access to a database stored in a local file for up to hundreds of thousands of records, and as such, is quite suitable for a Murmur server. This should be left enabled, and the configuration section of this guide will assume it is.

When you're satisfied with these options, use LEFT and RIGHT and then press ENTER to select OK at the bottom of the window. If you're presented with the option to configure dependencies, the defaults are the safest options, so you can just press ENTER to dismiss them with their default options selected. After configuration, building Murmur and its dependencies (especially Boost) can sometimes take a very long time.

Configuring Murmur

There are some things you might want to tweak before starting your server for the first time. This section will use FreeBSD's Easy Editor, as the preferred text editor, but you can use anything else instead.

Open the murmur configuration file in a text editor:

ee /usr/local/etc/murmur.ini

Most of the configuration is explained in the file, and defaults to normal values, but we'll briefly touch a few important options.

Note: All the options listed below have defaults. You don't need to change them for the server to run.

Welcome text (MOTD)

One thing you might want to change is the welcome text, or as it's called by some, the "Message of the Day". To do so, find the line beginning with welcometext= and replace the existing message with something new. Mumble can display a limited selection of HTML tags, like <br /> to signify a new line:

welcometext="<br /> Check out this cool Vultr VPS! <br />"

Port number

Clients connecting have to specify a port number if the server isn't listening on the default port. If you'd like to change this port so your users have to know it to connect, use the port= option. Otherwise, leave it at the default of 64738 so your users only have to remember the address:

port=443

Maximum allowed users

The default maximum of 100 users is pretty reasonable, but if you'd like to limit the server to just you and a few friends, you can lower this maximum - or raise it, of course - with the users option:

users=5

Message length

If you need to send messages in text chat longer than 5000 characters, you'll want to change the textmessagelimit option. You can also set it to 0 to remove the limit entirely:

textmessagelimit=12345

Remember to remove the # character at the start of the line to uncomment it, or the line won't take effect.

Image size

This option is right below the message length option, if you're uncommenting lines from the default configuration file. With the default image size limit of 128 kilobytes, you might find yourself struggling to send images. I'd recommend turning this up, but not to so high a value that someone could send a large enough image to slow down the connection of any users with lower-bandwidth internet connections. Like the last option, you can set the value of this one to 0 to allow images of any size. Of course, this is only a good idea when you know everyone's connection can handle it:

# 768KiB:
imagemessagelength=786432

Don't forget to remove the # character at the start of this line, as well.

SSL/TLS Encryption

If you have a proper TLS key and certificate, you can specify them here. If you don't, Murmur will generate its own and present them, which may cause certificate errors for your users.

For example, for a Let's Encrypt that is setup in /usr/local/etc/letsencrypt:

# make sure the cert & key are readable by the user/group 'murmur'
sslCert=/usr/local/etc/letsencrypt/live/chat.example.com/fullchain.pem
sslKey=/usr/local/etc/letsencrypt/live/chat.example.com/privkey.pem

Starting Murmur for the first time

Now that your server is installed and configured, there's not much left to do but test it. Since the service is not yet 'enabled', the regular 'start' command won't run. So to start the server once, run the following:

service murmur onestart

With the server running, you can try to connect to it. In Mumble, add it as a server using its domain name or IP address and connect. If you can log in, and are visible in the Root channel, everything works. If not, check the server address and the config file for typos or errors, and make sure the murmur user can read the SSL key if you set your own, and try again:

service murmur onerestart

After you're done, shut down the server to we can test starting it in the next section:

service murmur onestop

Starting Murmur on boot

If you can connect to your new server, then you're ready to enable the service so Murmur will automatically start when you reboot (after an upgrade, for example).

To do so, edit /etc/rc.conf:

ee /etc/rc.conf

Press CTRL+E, followed by ENTER to put a blank line on the second line of the file, and type:

murmur_enable="YES"

Then press ESC, ENTER, ENTER to save and quit. To test the configuration, try the regular service start command:

service murmur start

If this doesn't work, there is typo in rc.conf. go back and double-check it.

If it does work, then there's nothing left to do. To test it, reboot:

sync && reboot

Wait a few seconds for the server to start up again until you can connect with SSH, then try to reconnect with Mumble. Congratulations, you just installed and configured Murmur from scratch.