Sign inSign up

necr0/murmur

By necr0

•Updated over 6 years ago

A configurable docker image running Murmur, the official Mumble server.

Image
0

185

necr0/murmur repository overview

⁠docker-murmur

⁠Description

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.

⁠Usage

⁠Quick Start

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
⁠Persistent Data

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
⁠Cutom Super User Password

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
⁠Cutom TLS Certificate

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

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.

⁠Persistent Data

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
⁠Cutom Super User Password

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>
⁠Cutom TLS Certificate
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

⁠More Config Options

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 becomes MURMUR_REGISTERNAME
  • sqlite_wal becomes MURMUR_SQLITE_WAL
  • usersperchannel becomes MURMUR_USERSPERCHANNEL
  • Ice.Warn.UnknownProperties becomes MURMUR_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.

⁠Production Example

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>

⁠Feedback

If there are any problems with the image or if you have ideas on how to improve it please open an issue on GitHub⁠.

Tag summary

Content type

Image

Digest

Size

24.1 MB

Last updated

over 6 years ago

docker pull necr0/murmur