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.
Quick Start with Docker Compose
Section titled “Quick Start with Docker Compose”The included docker-compose.yaml builds the image from source and passes Mumble
connection details through environment variables:
services: bot: build: . network_mode: "host" volumes: - ./data:/data environment: - MUMBLE_IP - MUMBLE_PORT - MUMBLE_PASSWORDStart the bot by exporting your connection details and running compose:
MUMBLE_IP=your.server.ip MUMBLE_PORT=64738 MUMBLE_PASSWORD=yourpassword docker compose up --buildThe bot connects to the Mumble server and generates a default config.toml in the
data directory on first run.
Building Manually
Section titled “Building Manually”If you prefer to build and run the image directly:
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 \ mumimoDockerfile Details
Section titled “Dockerfile Details”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
Section titled “Network Mode”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.
Data Directory
Section titled “Data Directory”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.
Environment Variables
Section titled “Environment Variables”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.