Configure Mumble Server on Raspberry Pi with Dynamic DNS

raspberry-pi-mumbleMumble is a nice open source VoIP system popular with gamers. You can create your own private Mumble server that runs on the Raspberry Pi to use with your friends or gaming crew. One of the common problems with setting up a Mumble server is that sometimes your IP address will change, this means you have to find your new public IP address and tell all of your friends the new address. This is cumbersome and inconvenient, it is much easier to use a free dynamic DNS so your friends get an address like gameserver.crabdance.com to put in their Mumble client. This dynamic DNS address will be automatically updated as your public IP changes making it more convenient for you and your friends meaning you can spend more time gaming instead of dicking around with finding out IPs. You will learn how to secure your Mumble server to protect it from gaming trolls.

I recommend using Minibian and the initial setup for running Mumble as it is a lean, lightweight image for the Raspberry Pi that runs headless so you don't need any monitor. You can manage the Raspberry Pi Mumble server using your SuperUser account from a Windows or Mac machine with a Mumble client.

If you are trying to figure out which hardware would work best for you, consider reading the Pi benchmarks.

Pi Unit
Processor
RAM
RAM Bus
Network
WiFi
USB
SATA
Cost
Raspberry Pi 3
1.2 GHz ARMv8
Quad Core
1 GB DDR2
450 MHz
100 Mbit
Yes
4
No
$35
Raspberry Pi 2
900 MHz ARMv7
Quad Core
1 GB DDR2
450 MHz
100 Mbit
No
4
No
$35.00
Raspberry Pi
700 MHz ARMv6
Single Core
512 MB SDRAM
400 MHz
100 Mbit
No
4
No
$25
Banana Pi
1 GHz ARMv7
Dual Core
1 GB DDR3
432 MHz
Gigabit
No
2
Yes
$36.99
Banana Pi Pro
1 GHz ARMv7
Dual Core
1 GB DDR3
432 MHz
Gigabit
Yes
2
Yes
$45.00

Configure Mumble Server on Raspberry Pi with Dynamic DNS

Install Mumble Server on Raspberry Pi

Update and upgrade your packages

sudo apt-get update && sudo apt-get upgrade -y

Install the Mumble server

sudo apt-get install mumble-server -y

Do some initial configurations for the Mumble server

sudo dpkg-reconfigure mumble-server

Say Yes to starting Mumble on boot and press Enter

mumble server raspberry pi start on boot

Allow the Mumble server to have higher priority to reduce likelihood of lag latency

mumble server raspberry pi higher priority

Set the SuperUser password, this is the account and password you can use to manage your Mumble users from your Mumble client

mumble server raspberry pi set password

Configure Mumble Server

Make a backup of the Mumble configuration file.

sudo cp /etc/mumble-server.ini /etc/mumble-server.bak

Edit the Mumble configuration file

sudo nano /etc/mumble-server.ini

Uncomment these lines by deleting the preceding # character so it looks like below.
autobanAttempts will ban an IP address after 7 failed attempts inside the autobanTimeframe (120 seconds or 2 minutes).
They will be banned for the length of autobanTime (600 seconds or 10 minutes)

# How many login attempts do we tolerate from one IP
# inside a given timeframe before we ban the connection?
# Note that this is global (shared between all virtual servers), and that
# it counts both successful and unsuccessful connection attempts.
# Set either Attempts or Timeframe to 0 to disable.
autobanAttempts = 7
autobanTimeframe = 120
autobanTime = 600

If you want a custom welcome message you can adjust the test here

# Welcome message sent to clients when they connect
welcometext="<br />Welcome to the HTPCGuides server running <b>Murmur</b>.<br />Enjoy $

If you are interested in having a more secure Mumble server you should consider changing the default port. Trolls may scan and attempt to automatically connect to Mumble servers on the default port which could ruin your gaming experience. You will have to tell your users the correct port if you do change this – it can be any number between 1 and 65535, but avoid using standard port numbers for other services like 21, 22, 80 and 8080.

# Port to bind TCP and UDP sockets to
port=64738

For additional security you should set a server password, you will  need to give this to your friends so they can log on.

# Password to join server
serverpassword=htpcguides.com

Maximum users is how many users can be connected to your Mumble server simultaneously.

# Maximum number of concurrent clients allowed.
users=10

This is the bit rate used by the Mumble server. The higher the bits per second the more CPU and power the Raspberry Pi will need to convert voice to data and back again. If you find performance is bad you should consider lowering this value – don't forget to restart the server after adjusting this value.

# Maximum bandwidth (in bits per second) clients are allowed
# to send speech at.
bandwidth=72000

Ctrl+X, Y and Enter to save the Mumble configuration

sudo service mumble-server restart

Do a test now using the Mumble Client and connect to your Raspberry Pi Mumble Server locally

Get your ip address with this command

ip address

Find your eth0 or wlan0 section and your IP is the address after inet shown highlighted in red below.
You should consider using static DHCP or setting a static IP address for your Raspberry Pi as it will make port forwarding much easier.

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether b8:27:eb:f4:41:05 brd ff:ff:ff:ff:ff:ff
    inet 192.168.40.101/24 brd 192.168.40.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba27:ebff:fef4:4105/64 scope link
       valid_lft forever preferred_lft forever

Now connect using the standard port or the custom port you set.

http://ip.address:64738

If you could connect now you can move on to making it easier for your friends to find your server without memorizing your IP address by telling your Raspberry Pi to keep a free dynamic DNS address updated with your IP as it changes.

You will need to port forward 64738 from your router to your Raspberry Pi first or whichever port you chose in the configuration file.

Nag Free Dynamic DNS on Raspberry Pi

Sign up for a free dynamic DNS account first at freedns.afraid.org on any machine, you do not need to create the account on the Raspberry Pi

After creating your free account and remember to click the activation link in your email.

freedns create account

Now log in to your new free account and choose a domain

Click Subdomains on the left

subdomains click

Then click Add subdomain

add subdomain click

Choose your desired username, select a free domain and click Save

Your new Dynamic DNS address will be username.chickenkiller.com, there are other domains available like crabdance.com

adding a subdomain

Free Dynamic DNS Raspberry Pi Client

You will need your Direct URL from the Free Dynamic DNS account you just created.
Log in to your account at afraid.freedns.org and click Dynamic dns on the left pane. Scroll down and you will see a Direct URL hyperlink. The link looks something like this http://freedns.afraid.org/dynamic/update.php?HTPCGuidesSecretKey.

Right click and copy the URL of the Direct Link. You can paste this somewhere safe now or you can leave the window open and switch back to it. You will need this Direct URL shortly.

We will create a cronjob to run every 5 minutes and update your free dynamic DNS with your current IP address

Paste the code below but replace the URL http://freedns.afraid.org/dynamic/update.php?HTPCGuides with your direct link URL you copied to the clipboard.

crontab -l | { cat; echo "*/5 * * * * curl http://freedns.afraid.org/dynamic/update.php?HTPCGuides"; } | crontab -

Restart the cron service

sudo service cron restart

List cron jobs to make sure the freedns job is there

crontab -l

It should show

*/5 * * * * curl http://freedns.afraid.org/dynamic/update.php?HTPCGuides

I tested this several times and it is consistent, you can change the update interval by changing the */5 to */20 for every 20 minutes or whatever interval you choose.

Now your Mumble server can be accessed without your users knowing the IP address of the server, they can just input the free Dynamic DNS address and it will make your life easier as well as theirs.

Remember to open the Mumble port on your router and forward it to your Raspberry Pi.

You can administer your users with the SuperUser account and the password you set earlier.