Skip to content

EL7 Mumble Server

Mumble is relatively a pain to manually setup on EL7. The following guide shows an easy way to not have to spend much time to setup Murmur (the serverside component) on EL7 platforms.

Mumo is an optional component that acts as a plugin manager for Mumble, automating and facilitating certain tasks via the ZeroC ICE backend (which will need to be installed).

Mumble-web is an optional Mumble HTML5 client.


Murmur is the server side component (daemon), and Mumble is the client side software. Below are the steps to setup a Murmur server.

REPOS (epel + Nux!)

sudo yum -y install epel-release && rpm -Uvh


sudo yum install murmur


The config file from Nux! package is /etc/murmur/murmur.ini

The stock config is mostly good. I would go thru it and tailor anything that stands out, such as a custom port if you wish, server password, uname, etc. You will need to copy the icesecretwrite password for MuMo later if you wish to set that up.


Mumble Moderator: Allows for "plugins" to be created and installed that use ICE to automate or facilitate tasks.


  • Packages (RPM and Python):

    sudo yum install ice-python python2-dateutil python-pillow
    sudo pip install python-daemon
  • Systemd unitfile:

    sudo vim /etc/systemd/system/mumo.service
  • mumo.service contents (sample). My ExecStart parameter is actually a shell script that forces some issues. Choose your own method:

    Description=mumo -- Mumble Moderator
    ExecStart="/PATH_TO_MUMO/mumo/ -d"


Sample commands from MY installed MuMo plugins

Command Function
!seen USERNAME Lists last times USERNAME was logged on.
!hist LINES CHANNEL Lists, optionally # of LINES, last 10 messages in current channel, or in specified channel
!of TEXT Mark TEXT as offtopic, and not to be logged.
!img IMAGE_URL Make a linked inline image to source image


There is an HTML5 client for mumble now. To setup, you will need firstly a functional Mumble server running. The HTML5 app requires websockets, which normally Mumble does not do. So there is a wrapper that will fix that.


We will be pulling from a git repo to get the source and building it for node.js. I presume you can handle creating and going to a workspace subdirectory somewhere, and know where to copy your files on your webserver. Ignore step 9 if you are not using SELinux (which you should be if your distribution and webhost supports it).

  1. cd ~/workspace/git_repos/
  2. git clone
  3. cd mumble-web
  4. npm install
  5. npm run build
  6. mv -R ./buld/dist/ /var/www/html/
  7. mv /var/www/html/dist /var/www/html/mumble-web
  8. chown -R apache:apache /var/www/html/mumble-web/
  9. restorecon -Rv /var/www/html/


The websockets tool, websockify, is our simple method for getting the job done here. Visit the mumble-web site for more options (such as proxies). But for simplicity I will be going over the simplest method to make it work, and least likely to cause any grief. Step 1 can be omitted if you have a package for websockify in your distribution's repos. Otherwise, pip3 will suffice, and what I will use here. Also we will be creating two files, a systemd unit and a start script. Edit the paths and names to your preference.

  1. pip3 install websockify
  2. vim /etc/systemd/system/mumble-web.service
  3. vim /etc/opt/scripts/
  4. chmod og+x /etc/opt/scripts/
  5. systemctl daemon-reload
  6. systemctl enable mumble-web
  7. systemctl start mumble-web

So the mumble-web systemd unitfile is rather simple:

    Description=Mumble Web -- HTML5 Mumble Client

    ExecStart=/bin/bash /opt/scripts/
    ExecStop=/usr/bin/killall websockify


And the is simple too. Edit to fix your desired certs' path and the SOCKS_PORT. This also presumes you are running this on the host that Mumble is running on:

    /usr/local/bin/websockify -D --cert=/path/to/cert.pem --key=/path/to/privkey.pem --ssl-only --ssl-target --web=/var/www/html/mumble-web/ SOCKS_PORT localhost:64738