This docker image runs Murmur, the server for the Mumble VOIP protocol. It consists of a small starter script to start Murmur in Alpine.
This isn't the most minimal and most resource efficient image there is, but this image is intended to provide easier and better configurability. The starter script allows setting most config options using environment variables which would otherwise not be possible using Murmur.
You want to expose the ports used by Mumble almost all of the time. If you don't clients won't be able to connect.
$ docker run -d \
-p 64738:64738 -p 64738:64738/udp \
necr0/murmur
By default this image will store all data in an SQLite3 database located in /var/lib/murmur/murmur.sqlite
$ docker run -d \
-p 64738:64738 -p 64738:64738/udp \
-v /path/to/data:/var/lib/murmur \
necr0/murmur
Murmur will automatically set a randomly generated password for the SuperUser
account on the first start and log it. If you want to use another password than the one generated by Murmur you need to set the MURMUR_SUPERUSER_PASSWORD
environment variable. This will also change the password if another one has already been set by Murmur.
$ docker run -d \
-p 64738:64738 -p 64738:64738/udp \
-e MURMUR_SUPERUSER_PASSWORD=<super_secret_password> \
necr0/murmur
While Murmur automatically generates a self-signed TLS certificate on startup you may want to use your own certificate and key. To do so you'll need to mount the certificate and key and set the MURMUR_SSLCERT
and MURMUR_SSLKEY
environment variables to point to the mounted files.
$ docker run -d \
-p 64738:64738 -p 64738:64738/udp \
-v /path/to/certificate:/opt/certificate:ro \
-v /path/to/key:/opt/key:ro \
-e MURMUR_SSLCERT=/opt/certificate \
-e MURMUR_SSLKEY=/opt/key \
necr0/murmur
Docker Compose should automatically create and manage a volume for your data if you don't do it yourself. It might still be worth considering to create a volume or bind mount yourself so you can manage it yourself.
By default this image will store all data in an SQLite3 database located in /var/lib/murmur/murmur.sqlite
version: '3.1'
services:
murmur:
image: necr0/murmur
ports:
- 64738:64738
- 64738:64738/udp
volumes:
- /opt/mumble/data:/var/lib/murmur
By default this image will store all data in an SQLite3 database located in /var/lib/murmur/murmur.sqlite
version: '3.1'
services:
murmur:
image: necr0/murmur
ports:
- 64738:64738
- 64738:64738/udp
volumes:
- /opt/mumble/data:/var/lib/murmur
environment:
- MURMUR_SUPERUSER_PASSWORD=<super_secret_password>
version: '3.1'
services:
murmur:
image: necr0/murmur
ports:
- 64738:64738
- 64738:64738/udp
volumes:
- /path/to/certs:/opt/certs:ro
environment:
- MURMUR_SSLCERT=/opt/certs/cert.pem
- MURMUR_SSLKEY=/opt/certs/key.pem
Most if not all of the options that would normally be configurable in the murmur.ini
config file can be set using environment variables in this image.
The schema for these variables name is quite easy. Take whatever the config key in the murmur.ini
file would be, replace all letters with their UPPERCASE variant, replace all dots(.
) with underscores(_
), and prefix the result with MURMUR_
.
Examples:
registerName
becomesMURMUR_REGISTERNAME
sqlite_wal
becomesMURMUR_SQLITE_WAL
usersperchannel
becomesMURMUR_USERSPERCHANNEL
Ice.Warn.UnknownProperties
becomesMURMUR_ICE_WARN_UNKNOWNPROPERTIES
As you can see the murmur.ini
file is a hot mess of cases. But the rule used to get the environment variable name doesn't change.
The config file is generated based on a template located at /etc/murmur.ini
. The startup script of this image reads said template and interpolates variables into it. The resulting config file is placed in /etc/murmur/config.ini
. If there is already a config file present this templating step is skipped.
You can mount a custom murmur.ini
file either at /etc/murmur.ini
so it will be templated or at /etc/murmur/config.ini
so it will not be templated. The MURMUR_SUPERUSER_PASSWORD
and MURMUR_DEBUG_LOG_CONFIG
variables are handled somewhere else and are not affected by changing the murmur.ini
file in any way.
If MURMUR_DEBUG_LOG_CONFIG
is true
the startup script will log the contents of /etc/murmur/config.ini
before starting the server.
Below you can see an example like you would likely run it in production.
version: '3.1'
services:
murmur:
image: necr0/murmur
ports:
- 64738:64738
- 64738:64738/udp
volumes:
- /opt/mumble/data:/var/lib/murmur
- /var/lib/dehydrated/certs/example.com:/var/lib/dehydrated/certs/mumble.example.com:ro
environment:
- MURMUR_REGISTERNAME=Example Server
- MURMUR_WELCOMETEXT=Welcome to Example Server, the best example server of them all!
- MURMUR_SSLCERT=/var/lib/dehydrated/certs/mumble.example.com/fullchain.pem
- MURMUR_SSLKEY=/var/lib/dehydrated/certs/mumble.example.com/privkey.pem
- MURMUR_SUPERUSER_PASSWORD=<super_secret_password>
If there are any problems with the image or if you have ideas on how to improve it please open an issue on GitHub.