How to set up murmur server/mumble client
Tags: murmur, mumble, chatvoice, server
Published: 2019-08-11 08:39:56

This "Mumble & Murmur" voice chat application guide shows how to setup the murmur server on Slackel, Salix so a group of users can use 
mumble client to voice chat each other. Software used in this guide consists of:
* murmur (the server application)
* mumble (a voice chat application for groups)

== What is Mumble? ==
Mumble is a voice chat application for groups. While it can be used for any kind of activity, it is primarily intended for gaming. 
It can be compared to programs like Ventrilo or TeamSpeak. People tend to simplify things, so when they talk about Mumble they either talk about "Mumble" 
the client application or about "Mumble & Murmur" the whole voice chat application suite.

== What is Murmur? ==
"Murmur" is the name of the server application. In any case, if anyone talks about Murmur it is for sure the server part.

== Obtain a dyndns domain ==
* Obtain a DNS domain and create one with a dynamic dns provider (e.g. noip.com)
* Port forward  tcp, udp port 64738 using your router interface 

After that, we are ready to go on.

== Getting and Installing Murmur and Mumble ==

Install murmur and mumble with the usual commands:

       slapt-get -u
       slapt-get -i murmur
       slapt-get -i mumble

== Set Up murmur Server ==

To make things easier for you just run the script on  /usr/doc/murmur-1.2.19/config-helper.sh to create mumble-server group and mumble-server user:
    
       sudo sh /usr/doc/murmur-1.2.19/config-helper.sh

The above script will also create: 
* /var/log/mumble-server 
* /var/lib/mumble-server
* /var/run/mumble-server 
and chown these by mumble-server group,  mumble-server user

Next open as root /etc/murmur.ini  
Change the following variables
database=   to   database=/var/lib/mumble-server/mumble-server.sqlite
      #logfile=murmur.log to logfile=/var/log/mumble-server/mumble-server.log
      #pidfile= to pidfile=/var/run/mumble-server/mumble-server.pid
The above variables are set up during installation, we just mention them here for users to know about them.
      #welcometext=Welcome to this server running Murmur. Enjoy your stay! to welcometext="whatever you like!"
It is important to set up this because it is the name your server will appear in public lists under your country flag
     #registerPassword=secret to registerPassword=secret 
     #registerUrl=http://mumble.sourceforge.net/ to registerUrl="your_dns_domain" (e.g. registerUrl=http://myserver.noip.me)
* It is important to set up this otherwise no one can finds you. 
* It is your ip. Also put this in your router to be updated each time your ip changes. 
  
  #uname= to uname=mumble-server 

this variable has also set up during installation
Save the file /etc/murmur.ini 
and start murmur server as root

          sudo chmod 755 /etc/rc.d/rc.murmur 
          sudo /etc/rc.d/rc.murmur  start

Even you start murmur server as root it will switch to mumble-server user ( Look above uname=mumble-server)

After some minutes your murmur server will appear in  "Public Internet"  under your country flag with the name you have in registerName= variable

===Setting SuperUser Password===

Now you will need to set the SuperUser Password. The server should be running at this point. 
Open a terminal and write as root

          sudo murmurd -ini /etc/murmur.ini -supw  your-password

We will need this to set up rooms, register users, kick users etc

== Set Up mumble client ==

As user run mumble client. It is in Internet group of programs in menus.

When mumble appears click on server --> connect

A window appears. You will see your server name under LAN. 
* Right click on your server name and click "add to Favorite". 
* Under "Favorite", Right click on your server name and click on "Edit" 
* Delete the line next to "Address" and write there what there is in registerUrl  "without http://" (e.g. myserver.noip.me)
* Next to "Port" write 64738
* Next to "Username" write whatever nick you like 
* Click on "OK"
* Click on "Connect"
* In the next warning message, accept the certificate. Click on "Yes"

Congratulations
You have just connected to your murmur server.

=== Connecting as SuperUser===
 
* click on server -> connect 
* Under "Favorite", Right click on your server name and click on "Edit" 
* Delete the user name and write there SuperUser ( as i wrote it) 
* Write the SuperUser password 
* Click on "OK"
* Click on "Connect"

You are SuperUser. But SuperUser has no voice. So give to your previous user all SuperUser capabilities plus voice ability.

=== Connecting as previous user ===
* click on server -> connect 
* Under Favorite, Right click on your server name and click on "Edit" 
* Delete the Password 
* Delete the SuperUser name and write there the previous user name  
* Click on "OK"
* Click on "Connect"

== Make Your Server Public==

===create a Certificate Authority (CA)===

You do not have to do the following anymore. Server will registered as Public using murmur certificate. You can do these if you want to use your own certificate Authority.

* create a working directory

           mkdir CAwork
            cd CAwork

* first set yourself up as a CA. a CA can sign a certificate requests to create an SSL certificate.
* Run the command (a directory demoCA will be created under CAwork)

             /etc/ssl/misc/CA.pl -newca

* hit enter to create CA certificate
* enter the PEM pass phrase
* renter the pass phrase
* fill out the info asked for. Be sure to set all fields (for example )

             countryName  = GR
              stateOrProvinceName    = Some-State
              organizationName       = Internet Widgits Pty Ltd
              commonName             = ariadni.noip.me CA
              emailAddress           = webmaster@ariadni.noip.me

* Make sure the commonName to be different from the commonName in the next step.

CA.pl will create a cacert.pem in the directory demoCA, the private CA key is in private/cakey.pem

===Create a Certificate Request===
next we will create a request for a server certificate.

              /etc/ssl/misc/CA.pl   -newreq-nodes

some servers need a private certificate not protected by a pass phrase. the -nodes (note: no space between -newreq and -nodes) tells openssl to make an unpassword protected certificate.
Be sure to set the Common Name to the dns name of the server that will be using it!

Be sure to set all fields (for example )

                countryName  = GR
                stateOrProvinceName  = Some-State
                organizationName     = Internet Widgits Pty Ltd
                commonName           = ariadni.noip.me
                emailAddress         = webmaster@ariadni.noip.me

* Make sure the commonName to be different from the commonName in the above step. e.g I have set the names ariadni.noip.me CA and ariadni.noip.me

the request file will be created in the directory you're currently in  with a name of newreq.pem and the private key is in newkey.pem

===Sign the request===

next use your CA certificate to sign the certificate request: 

               /etc/ssl/misc/CA.pl   -sign

you'll be prompted for your CA password. the info from the newreq.pem file will be displayed and you'll be asked if you want to sign it. After the certificate is signed, and you're prompted if you want to commit the certificate.

The certificate is created, signed and stored in newcert.pem, in the same directory you're currently in.

Now some more job and we are ready.
The certificate has both the encoded version and a human-readable version in the same file. You can strip off the human-readable portion as follows: 

              cp demoCA/cacert.pem tmp.pem
              openssl x509 -in tmp.pem -out cert.pem
 
cert.pem is our Root certificate

              mv newcert.pem tmp.pem
              openssl x509 -in tmp.pem -out newcert.pem

newcert.pem is our signed requested file from our Certificate Authority

===Installing the Certificate and Key===
Create a file mycert.pem with contents of both  Root Certificate Authority certificate (cert.pem) and signed certificate file (newcert.pem)

              cat cert.pem newcert.pem > mycert.pem
              mv newkey.pem mykey.pem

After this step, you have two files:

* A private key in mykey.pem
* A combined Root Certificate Authority certificate and your signed certificate in mycert.pem

Now the file mycert.pem contains the certificate and mykey.pem contains the key. 
* copy these two files to /etc/ where murmur.ini exists (you can copy them elsewhere but you have to put the path in murmur.ini)
* Edit  /etc/murmur.ini uncomment and change the following two lines:

                 sslCert=mycert.pem
                 sslKey=mykey.pem

===Restart murmur===
  
                 /etc/rc.d/rc.murmur restart

Tell your friends about your murmur server and that they can found you under your country flag in Public Internet server list of mumble.
In any case, give them your dyndns.org domain name to add it to "Favorite" (see above). 
And can connect and talk with you even your server do not appear in Public Internet server list of mumble.