mumble-docker

repository·master·Indexed 18 days ago

https://github.com/mumble-voip/mumble-docker

Official container images for self-hosting the Mumble server. Features include configuration via environment variables (MUMBLE_CONFIG_<configName>), persistent data volumes, and automated TLS certificate management via ACME using -acme image variants. Supports deployment via Docker CLI and Docker Compose, with options for custom UID/GID configuration and building specific Mumble versions.

Tokens
2.3K
Snippets
9
Records
13
Agent score
13%

What's inside mumble-docker

  1. Configure Mumble using Docker/Podman secrets

    master

    Instead of environment variables, you can use secrets. Place files following the MUMBLE_CONFIG_<config_name> naming pattern in the /run/secrets directory at runtime. This is useful for sensitive data like passwords.

    # Create the secrets
    echo -n "secretserver" | podman secret create MUMBLE_CONFIG_SERVER_PASSWORD -
    echo -n "supassword" | podman secret create MUMBLE_CONFIG_SUPERUSER_PASSWORD -
    
    # Run the server with these secrets mounted
    podman run --detach \
               --name mumble-server \
               --publish 64738:64738/tcp \
               --publish 64738:64738/udp \
               --secret MUMBLE_CONFIG_SERVER_PASSWORD \
               --secret MUMBLE_CONFIG_SUPERUSER_PASSWORD \
               --volume ./data/mumble:/data \
               --restart on-failure \
               mumblevoip/mumble-server:<tag>
  2. Run the Mumble server container with Docker Compose

    master

    Use the following docker-compose.yml structure to manage your Mumble server instance. Ensure you replace <tag> with a valid version (e.g., latest or v1.4.230).

    services:
        mumble-server:
            image: mumblevoip/mumble-server:<tag>
            container_name: mumble-server
            hostname: mumble-server
            restart: on-failure
            ports:
                - 64738:64738
                - 64738:64738/udp
    #       expose:
    #           - 6502
  3. Build the Mumble Docker container

    master

    You can build a Mumble server container from the latest upstream commit using the mumble target. Note that this image only supports Mumble versions 1.4 and newer; versions 1.3 and earlier are incompatible with this build process.

    docker build --target mumble .
  4. Use Automatic TLS Certificate Management with `-acme` images

    master

    Use image variants with the -acme suffix (e.g., mumblevoip/mumble-server:latest-acme) to automatically manage TLS certificates via Let's Encrypt using the lego client.

    Setup Requirements:

    1. Mount a persistent volume to /etc/acme.
    2. Set the required ACME_* environment variables.

    Environment Variables:

    • ACME_ACCOUNT_MAIL: Email for ACME account registration.
    • ACME_SERVER: ACME service API URL (defaults to Let's Encrypt).
    • ACME_DOMAIN: The domain for which the certificate is ordered.
    • ACME_HTTP: Set to any value to use the HTTP-01 challenge (requires port 80 to be exposed).
    • ACME_DNS: The name of the DNS provider supported by lego.
    • ACME_DNS_RESOLVERS: Semicolon-separated list of DNS servers for validation.
    • ACME_LEGO_ARGS: Custom arguments appended to lego run.

    Important Restrictions for -acme images:

    • Mumble is not PID 1; you cannot use docker kill to send signals to Mumble.
    • You must use PUID/PGID environment variables to change the user; the --user flag is not supported.
    • The server will never run as root.
  5. Run the Mumble server container with Docker

    master

    To run the Mumble server using a standard Docker command, use the docker run command. You must map a volume to /data/ to ensure permanent storage of the database (SQLite) and expose the necessary TCP and UDP ports (default 64738).

    Requirements:

    • Docker installed and configured.
    • A local directory mapped to /data/ for persistent data.
    • Note: The image uses UID 10000 and GID 10000 by default. Ensure file permissions on your host volume allow this user to read/write.
    $ docker run --detach \
                 --name mumble-server \
                 --publish 64738:64738/tcp \
                 --publish 64738:64738/udp \
                 --volume ./data/mumble:/data \
                 --restart on-failure \
                 mumblevoip/mumble-server:<tag>
  6. Build a specific Mumble version

    master

    To build a specific version of the Mumble server, use the MUMBLE_VERSION build argument. You can provide either a published tag or a specific commit hash from the upstream Mumble repository.

    docker build --target mumble --build-arg MUMBLE_VERSION=v1.4.230 .
  7. Pass custom CMake options during build

    master

    You can pass custom cmake options to the build process using the MUMBLE_CMAKE_ARGS build argument. This allows for customizing the server build, such as enabling the Tracy profiler.

    docker build --build-arg MUMBLE_CMAKE_ARGS="-Dtracy=ON"
  8. Configure Mumble using environment variables

    master

    The preferred method for configuration is via environment variables following the pattern MUMBLE_CONFIG_<configName>.

    Key Rules:

    • <configName> is case-insensitive.
    • Underscores can be inserted for readability (e.g., MUMBLE_CONFIG_DB_HOST maps to dbHost).
    • For string values containing special characters like commas, wrap the value in quotes.
    • All settings available in the standard Mumble murmur.ini can be set this way.

    Example (Docker CLI):

    $ docker run -e "MUMBLE_CONFIG_SERVER_PASSWORD=123"

    Example (Docker Compose):

    services:
        mumble-server:
            environment:
                MUMBLE_CONFIG_USERS: 100
                MUMBLE_CONFIG_SENDVERSION: false
                MUMBLE_CONFIG_WELCOMETEXT: 'Hello World'
                # Wrap special characters in quotes
                MUMBLE_CONFIG_USERNAME: '"^[-_a-z0-9]{3,15}$"'
  9. Configure UID and GID for the container

    master

    Use the standard Docker environment variables PUID and PGID to specify the User ID and Group ID that mumble-server runs as. This also determines ownership of files in the /data directory.

    By default, the container runs as UID:GID 10000:10000. Unless MUMBLE_CHOWN_DATA is set to false, the container will automatically take ownership of /data and its contents upon launch.

  10. Troubleshoot Docker daemon permission errors

    master
    If you encounter the error Got permission denied while trying to connect to the Docker daemon socket, it indicates that the docker command is being run by a non-root user without sufficient permissions. To resolve this, add your user to the docker group on your host system.
    Got permission denied while trying to connect to the Docker daemon socket
  11. Troubleshoot unknown configuration settings

    master

    If you provide a MUMBLE_CONFIG_ variable that the container does not recognize, the startup will fail with the following error:

    [ERROR]: Unable to find config corresponding to variable "<configName>" mumble-server exited with code 1

    Workaround: Set the environment variable MUMBLE_ACCEPT_UNKNOWN_SETTINGS=true and ensure you are spelling the <configName> exactly as it appears in the official Murmur.ini documentation.