Building from source
Most server owners use the pre-built image. You only need to build from source if you:
- Need a feature not yet shipped.
- Want to change the compile-time flags (for example, enable extras that are off by default in the official image).
- Are running on an architecture without a pre-built image.
Quick build
Section titled “Quick build”-
Clone the Docker repo:
Terminal window git clone https://github.com/Fancy-Mumble/mumble-dockercd mumble-docker -
Build the image:
Terminal window docker build .This pulls the server source from GitHub, compiles it, builds the bundled plugin libraries, and produces a runtime image. Takes about 10 minutes on a modern machine.
-
Tag it and use it in your compose file:
Terminal window docker tag <built-image-id> my-fancy-mumble:devservices:mumble-server:image: my-fancy-mumble:dev
Build arguments
Section titled “Build arguments”| Argument | Default | Purpose |
|---|---|---|
MUMBLE_GIT_REPO | https://github.com/Fancy-Mumble/mumble-server | Source repository. |
MUMBLE_GIT_BRANCH | 1.6.x | Branch to build. |
MUMBLE_VERSION | latest | Tag or commit hash to check out. |
MUMBLE_CMAKE_ARGS | -Dwebrtc-sfu=OFF | Extra CMake flags. |
MUMBLE_BUILD_NUMBER | empty | Build number embedded in the binary. |
PUID / PGID | 10000 | UID and GID of the mumble user in the image. |
Example, enable the screen-share relay at compile time
Section titled “Example, enable the screen-share relay at compile time”The default image builds the relay library but does not enable it via CMake for upstream parity. The pre-built image already includes the library; rebuild with the flag if you want it linked in by default:
docker build \ --build-arg MUMBLE_CMAKE_ARGS="-Dwebrtc-sfu=ON" \ .Example, build a specific tag
Section titled “Example, build a specific tag”docker build \ --build-arg MUMBLE_VERSION=v1.6.0 \ .Example, build from your own fork
Section titled “Example, build from your own fork”docker build \ --build-arg MUMBLE_GIT_REPO=https://github.com/youruser/mumble \ --build-arg MUMBLE_GIT_BRANCH=my-feature \ .Different image variants
Section titled “Different image variants”The repo ships several Dockerfiles for different use cases:
| Dockerfile | Purpose |
|---|---|
Dockerfile | The default. Produces a small runtime image. |
Dockerfile.debug | Same but with debug symbols and verbose logging. |
Dockerfile.dev | Mounts your local source tree for hot rebuilds. |
Dockerfile.vanilla | Builds the upstream Mumble server (no Fancy features). |
Pick with -f:
docker build -f Dockerfile.debug .Running a different UID/GID
Section titled “Running a different UID/GID”The server runs as UID 10000 by default. To match your host user (useful for bind-mounts on a Linux desktop):
docker build --build-arg PUID=1000 --build-arg PGID=1000 .Or pass at runtime (if the container starts as root):
environment: PUID: 1000 PGID: 1000Local development with hot rebuilds
Section titled “Local development with hot rebuilds”The repository has a helper:
python -m tools dev-buildThis:
- Picks up your
.env. - Mounts your local source if
Dockerfile.devis used. - Re-runs the build with the cached layers.
- Restarts the container.
Useful when you are iterating on a patch you intend to upstream.
Build issues
Section titled “Build issues”- “Permission denied while trying to connect to the Docker daemon
socket”: you are not in the
dockergroup. apt-getfails with “not valid yet”: clock skew in BuildKit. The Dockerfiles already pass-o Acquire::Check-Date=falseto work around this, but a manual run might miss it.- CMake cannot find a dependency: the build image lags upstream.
Pull
latestand retry, or pin to a known-goodMUMBLE_VERSION.
Verifying the build
Section titled “Verifying the build”The freshly built image should start the same way as the official one. Look for these log lines:
mumble-server 1.6.x.<build>plugin file-server: loadedplugin webrtc-sfu: loadedplugin push-fcm: loadedplugin link-previews: loadedIf any plugin is missing, the corresponding feature will be unavailable. Rebuild with the CMake flag for the missing one.
Next step
Section titled “Next step”Continue with Upgrade & backup to keep your build fresh.