Skip to content

Docker Deployment

This content is for v1.0.0. Switch to the latest version for up-to-date documentation.

Mumimo ships with a Dockerfile and docker-compose.yaml for containerised deployment. Docker is a convenient way to run the bot without installing Python, ffmpeg, or other system dependencies on the host.

The included docker-compose.yaml builds the image from source and passes Mumble connection details through environment variables:

docker-compose.yaml
services:
bot:
build: .
network_mode: "host"
volumes:
- ./data:/data
environment:
- MUMBLE_IP
- MUMBLE_PORT
- MUMBLE_PASSWORD

Start the bot by exporting your connection details and running compose:

Terminal window
MUMBLE_IP=your.server.ip MUMBLE_PORT=64738 MUMBLE_PASSWORD=yourpassword docker compose up --build

The bot connects to the Mumble server and generates a default config.toml in the data directory on first run.

If you prefer to build and run the image directly:

Terminal window
docker build -t mumimo .
docker run -d \
--network host \
-e MUMBLE_IP=your.server.ip \
-e MUMBLE_PORT=64738 \
-e MUMBLE_PASSWORD=yourpassword \
-v ./data:/data \
mumimo

The Dockerfile uses a multi-stage build to keep the final image small:

Detail Value
Base image python:3.12-slim
Dependency manager uv (uv sync --frozen --no-dev)
System packages ffmpeg, libopus-dev, openssl, nodejs
Data volume /data (via MUMIMO_DATA_DIR=/data)
Entry point uv run mumimo

The builder stage compiles dependencies in isolation. The runtime stage copies the built virtual environment and installs only the runtime system packages needed to execute the bot.

network_mode: "host" is recommended for Mumble deployments. Mumble uses UDP for audio transmission, and host networking avoids the overhead of Docker’s NAT layer, reducing audio latency.

The /data volume stores all persistent state:

File / Directory Purpose
config.toml Bot configuration (auto-generated on first run)
*.db SQLite database (users, roles, plugins, aliases)
logs/ Log files
Plugin data Per-plugin storage (e.g. sound board files)

Mount this volume to persist configuration and data across container restarts. On the very first run, Mumimo auto-generates a default config.toml inside /data.

Mumble connection variables (read by the entry point):

Variable Purpose
MUMBLE_IP Mumble server IP address
MUMBLE_PORT Mumble server port
MUMBLE_PASSWORD Mumble server password

Additional MUMIMO_* environment variables can override configuration values. See the Configuration page for the full list.