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.
MUMBLE
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 http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
PACKAGES
sudo yum install murmur
CONFIGURATION
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.
MUMO
Mumble Moderator: Allows for "plugins" to be created and installed that use ICE to automate or facilitate tasks.
SETUP (EL7)
-
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:
[Unit] Description=mumo -- Mumble Moderator After=murmur.service [Service] User=mumble-server Type=forking PIDFile=/PATH_TO_MUMO/mumo/mumo.pid ExecStart="/PATH_TO_MUMO/mumo/mumo.py -d" [Install] WantedBy=multi-user.target
COMMANDS
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 |
MUMBLE-WEB HTML5 CLIENT
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.
INSTALLING THE HTML5 APPLICATION
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).
- cd ~/workspace/git_repos/
- git clone https://github.com/johni0702/mumble-web
- cd mumble-web
- npm install
- npm run build
- mv -R ./buld/dist/ /var/www/html/
- mv /var/www/html/dist /var/www/html/mumble-web
- chown -R apache:apache /var/www/html/mumble-web/
- restorecon -Rv /var/www/html/
ENABLING WEBSOCKETS
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.
- pip3 install websockify
- vim /etc/systemd/system/mumble-web.service
- vim /etc/opt/scripts/start-mumble-web-websockify.sh
- chmod og+x /etc/opt/scripts/start-mumble-web-websockify.sh
- systemctl daemon-reload
- systemctl enable mumble-web
- systemctl start mumble-web
So the mumble-web systemd unitfile is rather simple:
[Unit]
Description=Mumble Web -- HTML5 Mumble Client
After=murmur.service
[Service]
User=root
Type=forking
ExecStart=/bin/bash /opt/scripts/start-mumble-web-websockify.sh
ExecStop=/usr/bin/killall websockify
[Install]
WantedBy=multi-user.target
And the start-mumble-web-websockify.sh 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:
#!/bin/bash
/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