If you have ever heard of the Raspberry Pi you have also definitely considered what kind of services you would use it for. The Raspberry Pi does a good job at hosting websites and many other dedicated server tasks.
One of such services is the Mumble server, which provides free Voice-over-IP in a package similar to what you get from Ventrilo or Teamspeak. This is a guide on how to set up your own Mumble server on a Raspberry Pi.
Reasons to use Mumble
Up until recently I used Skype for VoIP communication along with the other 4 members of my League of Legends team, during our matches. Unfortunately the Skype stability was horrible. Microphone volumes had a life of their own (even with the automatic adjustment turned off), people had to reconnect in the middle of games, and the amount of background noise and microphone buzzing noises were annoying.
While searching for an alternative to Skype I stumbled upon Mumble. Having never heard of Mumble before, I did a quick comparison to the more well known Ventrilo and Teamspeak and found them all three to be very similar.
Mumble comes with a load of nice features, and is completely free. Noise cancellation, automatic microphone activation, directional sound plugins, sound latency optimization, ready for skins, etc.
It took me an afternoon to set up my own Mumble server on the Raspberry Pi I had lying around. It could have been done a lot faster without the trial and error approach, as I figured out the best sequence of doing things in order to write this guide.
Step by step guide
Here is the final sequence of steps for setting up your own free Mumble server on a Raspberry Pi:
- Download the latest Raspbian “wheezy” image and apply it to your SD card as explained in this guide.
- Update to the latest versions:
sudo apt-get update
sudo apt-get upgrade
- Create a new user in your new Raspbian installation, and remove the default “pi” user (which has password “raspberry”). This guide explains the procedure well.
- Install the mumble server service and configure it to run on startup, by executing these commands in a terminal:
sudo apt-get install mumble-server
dpkg-reconfigure mumble-server
- Choose to start the mumble server on startup.
- Allow to give mumble services higher priority.
- Type in a superuser password you can remember.
- Further configuration can be done by editing the file at:
/etc/mumble-server.ini
Details on the configurable options are listed and explained here.
(remember to restart the service, or the entire Raspberry Pi, to apply changes made in the ini file) - Install the latest version of the mumble client on your computer.
(you should get the snapshot version, as the stable may not work with the newest server service on your Raspberry Pi) - Use a few minutes to configure the sound settings in your mumble client by following the wizard.
- Use your mumble client to connect to your server via your local network, as described here.
- Use the local IP (192.168.x.x) as the address.
- Use the default port (64738) if you did not change this on your server.
- Make yourself the admin of your server, in order to be able to administrate many of the server settings directly in the client, by following this guide.
- Make sure to forward the mumble port through your router to the Raspberry Pi.
When forwarded correctly you should get an “open” status when doing a port check on your global IP and Mumble server port. - (optional) To set up a dynamic DNS service and have users connect to a domain instead of an IP address, complete the steps in this guide.
It should now be possible to connect to your mumble server over the internet, for anyone who knows your global IP and Mumble server port number.
Capacity and troubleshooting
Note that your internet bandwidth will most likely be the bottleneck for this setup. Especially your upload speed is crucial, as your connection will need to transmit to the connected clients.
The Raspberry Pi seems to have enough processing power to support a Mumble server with up to 30-40 people at once. It is likely that your bandwith speed will reach its limit before the Raspberry Pi.
For further configuration of your new mumble server, as well as troubleshooting, try out some of these Mumble guides.
Interesting article. I would add mizutech as an attractive VoIP hosting provider with their new on demand offer: http://www.mizu-voip.com/Services/VoIPHosting.aspx
The idea is that you can start your VoIP server in a few minutes on the cloud, without any upfront investment; and here I mean a true server (not shared, not virtual)
Thanks for this interesting tutorial, I was looking for Mumble Server packages on ARM/Rpi
But why bother with creating another user and removing “pi” while you can just change the default “pi” user password ?
$ su
# passwd pi
I guess it’s a matter of preference.
I definitely prefer to have my own custom user name, mostly by habit.
Also, if you expose your Raspi to ssh from outside your local network, I guess that a non standard user name will increase your security from any brute force attacks a bit.
But thx for the quick alternative solution =)
I created instructions to install phpMumbleAdmin using nginx + php5-fpm. Let’s assume you have succesfully installed nginx with php5 (fpm) and if not you should follow the instructions at: http://www.andrewdcox.com/blog/2013/05/11/running-an-nginx-php-and-mysql-webserver-on-the-raspberry-pi/
Package php-zeroc-ice is required for the php extension and zeroc-ice for the slice2php tool:
[code]sudo apt-get install php-zeroc-ice zeroc-ice[/code]
Now we will configure the PHP extension:
[code]sudo nano /etc/php5/fpm/php.ini[/code]
After:
[code];include_path = “.:/usr/share/php”[/code]
Put on a new line:
[code]include_path = “/usr/share/Ice-3.4.2/php/lib”[/code]
Restart the service:
[code]sudo service php5-fpm restart[/code]
Next, download phpMumbleAdmin, copy to /usr/share/nginx/www with WinSCP/FileZilla over SSH and rename the directory to phpmumbleadmin (lower case). Don’t forget to recursively chmod 777 as some config files have to be created and written by the script.
Then navigate to phpmumbleadmin/slice_php and generate the slice2php file:
[code]cd /usr/share/nginx/www/phpmumbleadmin/slice_php
slice2php -I/usr/share/Ice-3.4.2/slice /usr/share/slice/Murmur.ice[/code]
Finally configure the newly generated Murmur.php file from a dropdown box to be used using the webinterface.
Enjoy!