Today we’ll walkthrough how we can install Mumble server also known as Murmur in CentOS 7. It is a free and open source VOIP application that is primarily designed for the use by gamers for communication to each other via voice. It works in client-server architecture, that means, it consists of a server application and a client application.
Mumble Server, also known as Murmur is the server part which hosts the configurations and chatroom whereas Mumble client is the client application that is used to connect and communicate with the server. It is awesome as it features low latency with high audio quality. It has the ability to stay backwards compatible as long as there is a considerable user-base with older versions. The most liberal thing is that it is highly customizable for different use-cases. So, here are some easy to perform steps on how we can install Mumble Server (Murmur) on our CentOS 7 machine.
1. Downloading Murmur Tarball
First of all, we’ll gonna download the murmur package from the Official Github Release Page of Mumble. We’ll download the latest version of Mumble server ie 1.2.9. As we are running CentOS 7, we’ll gonna download it via wget command in a terminal or a console.
$ wget https://github.com/mumble-voip/mumble/releases/download/1.2.9/murmur-static_x86-1.2.9.tar.bz2
Output:
–2015-07-06 14:18:38– https://github.com/mumble-voip/mumble/releases/download/1.2.9/murmur-static_x86-1.2.9.tar.bz2
Resolving github.com (github.com)… 192.30.252.131Resolving s3.amazonaws.com (s3.amazonaws.com)… 54.231.244.0
…
HTTP request sent, awaiting response… 200 OK
Length: 12044785 (11M) [application/octet-stream]
Saving to: ‘murmur-static_x86-1.2.9.tar.bz2’100%[==========================================>] 12,044,785 2.96MB/s in 6.1s
2015-07-06 14:18:46 (1.89 MB/s) – ‘murmur-static_x86-1.2.9.tar.bz2’ saved [12044785/12044785]
2. Extracting Murmur Tarball
As we have downloaded the latest release of Murmur in our CentOS 7 machine, we’ll now extract the files from the tarball. This will create a directory murmur-static_x86-1.2.9 where we downloaded the tarball. To extract the tarball, we’ll run the following command.
$ tar -vxjf ./murmur-static_x86-1.2.9.tar.bz2
If we get error while extracting the file as shown below.
tar (child): bzip2: Cannot exec: Permission denied
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
We can simply fix it by install bzip2 package using yum package manager and again run the above command to extract it.
$ sudo yum install bzip2
Next, we’ll gonna create a directory /usr/local/murmur/ and then we’ll copy the extracted files into that newly created directory.
$ sudo mkdir /usr/local/murmur $ sudo cp -r ./murmur-static_x86-1.2.9/* /usr/local/murmur/
After that, we’ll copy the murmur configuration file to /etc/murmur.ini to make murmur working according to it.
$ sudo cp ./murmur-static_x86-1.2.9/murmur.ini /etc/murmur.ini
3. Fixing Permission and Ownerships
Now, we’ll create a user murmur under group murmur with the data directory assigned as /var/lib/murmur/ . To do so, we’ll run the following command.
$ sudo groupadd -r murmur $ sudo useradd -r -g murmur -m -d /var/lib/murmur -s /sbin/nologin murmur
Next, we’ll gonna create a directory for storing logs by murmur. Then we’ll gonna assign ownership as murmur to the directory.
$ sudo mkdir /var/log/murmur $ sudo chown murmur:murmur /var/log/murmur
After that, we’ll fix the permission of the log directory for protection of the logs.
$ sudo chmod 0770 /var/log/murmur
4. Murmur Configuration
The default configuration file for Murmur is /etc/murmur.ini that we copied in step 2. Now, we’ll append the file /etc/murmur.ini with the following lines using a text editor.
$ sudo vi /etc/murmur.ini
logfile=/var/log/murmur/murmur.log
pidfile=/var/run/murmur/murmur.pid
Then we’ll gonna save and exit the configuration file.
5. Creating Mumble Service
Now, we’ll wanna create a systemd unit file so that the murmur service can be managed by systemd. To do so, we’ll create a new file ‘/etc/systemd/system/murmur.service‘ under sudo or root access using our favorite text editor.
$ sudo vi /etc/systemd/system/murmur.service
Then, we’ll need to copy and paste the following lines into the file.
[Unit]
Description=Mumble Server (Murmur)
Requires=network-online.target
After=network-online.target mariadb.service time-sync.target
[Service]
User=murmur
Type=forking
PIDFile=/var/run/murmur/murmur.pid
ExecStart=/usr/local/murmur/murmur.x86 -ini /etc/murmur.ini
[Install]
WantedBy=multi-user.target
As /var/run is discarded after reboot on modern systems, we’ll gonna create the configuration file ‘/etc/tmpfiles.d/murmur.conf’ to regenerate the pid directory for murmur. To do so, we’ll create that file using our favorite text editor under sudo or root access.
$ sudo vi /etc/tmpfiles.d/murmur.conf
Then, we’ll need to add the following lines into it.
d /var/run/murmur 775 murmur murmur
6. Configuring Firewall
We have firewalld running in our CentOS 7 box. So, we’ll need to configure firewall to open the port 64738, which is the default port of the murmur server. If you have configured any other port in the murmur.ini, we’ll need to replace 64738 with it in the firewall configuration file. As we haven’t changed our default port in murmur.ini, we’ll simply gonna create the firewall configuration file as follows.
$ sudo vi /etc/firewalld/services/murmur.xml
Then, we’ll need to add the following lines in it.
<?xml version=”1.0″ encoding=”utf-8″?>
<service>
<short>Murmur</short>
<description>Mumble Server (Murmur)</description>
<port protocol=”tcp” port=”64738″ /><!– Reminder: Update /etc/murmur.ini so that it uses the same ports –>
<port protocol=”udp” port=”64738″ />
</service>
Then, we’ll gonna add murmur’s firewall service to firewalld and reload it.
$ sudo firewall-cmd --permanent --add-service=murmur $ sudo firewall-cmd --reload
7. Disabling SELinux
As SELinux will prevent murmur from functioning correctly we’ll gonna simply disable it. To disable it temporarily until reboot, we’ll need to run the following command.
$ sudo setenforce 0
setenforce: SELinux is disabled
But in order to disable SELinux permanently, we’ll need to edit ‘/etc/sysconfig/selinux’ and set ‘SELINUX’ as disabled.
$ sudo vi /etc/sysconfig/selinux
SELINUX=disabled
8. Starting Murmur Server
Finally, after such a long run we’ll gonna start our Murmur Server. Before we do that, we’ll need to update our system so that it is ready to start the murmur service. To do so, we’ll need to run the following commands.
$ sudo systemd-tmpfiles --create /etc/tmpfiles.d/murmur.conf $ sudo systemctl daemon-reload
Then, we’ll start our Murmur Server using systemctl command as follows.
$ sudo systemctl start murmur.service
Next, if we wanna enable the server to start along the system boot then, we’ll need to run the following command.
$ sudo systemctl enable murmur.service
Output:
ln -s ‘/etc/systemd/system/murmur.service’ ‘/etc/systemd/system/multi-user.target.wants/murmur.service’
Conclusion
If all the configurations and stuffs are done as expected, we must be able to connect to our Murmur server using the IP Address or domain of our CentOS 7 machine with the default port as 64738. We can download and install the Mumble Client version from the Official Mumble SourceForge or from Github. Mumble has good features with high quality of sound with high privacy and security. The communication is always encrypted with public/private authentication. It makes gamers pretty easy to communicate with friends and can explore from which location the players are talking. If you have any questions, suggestions, feedback please write them in the comment box below so that we can improve or update our contents. Thank you ! Enjoy 🙂
Kool Arpan is a tech enthusiastic who loves blogging and writing articles on technology. He loves sharing knowledge to the others by any means and medium.
Thanks for the great article.
I am attempting to follow these steps to get Murmur running on a RHEL7 instance in AWS.
I follow the steps exactly as they are listed, but when I try to add murmur’s firewall service to firewalld I am told:
Error: INVALID_SERVICE: murmur
I see the definition in the appropriate location and the firewalld service is started…any ideas why firewalld thinks murmur is an invalid service?