Skip to content

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

Notifications You must be signed in to change notification settings

QbDesu/docker-murmur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Releases

No releases published

Packages

No packages published