Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/qbdesu/docker-murmur
A configurable docker image running Murmur, the official Mumble server.
https://github.com/qbdesu/docker-murmur
docker docker-compose docker-image mumble mumble-server murmur
Last synced: about 1 month ago
JSON representation
A configurable docker image running Murmur, the official Mumble server.
- Host: GitHub
- URL: https://github.com/qbdesu/docker-murmur
- Owner: QbDesu
- Created: 2020-03-23T16:30:27.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-03-25T23:41:43.000Z (almost 5 years ago)
- Last Synced: 2024-10-15T04:42:58.255Z (3 months ago)
- Topics: docker, docker-compose, docker-image, mumble, mumble-server, murmur
- Language: Shell
- Homepage: https://hub.docker.com/r/necr0/murmur
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# docker-murmur
## Description
This docker image runs [Murmur](https://wiki.mumble.info/wiki/Main_Page), 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.
```bash
$ 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`
```bash
$ 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.
```bash
$ docker run -d \
-p 64738:64738 -p 64738:64738/udp \
-e MURMUR_SUPERUSER_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.
```bash
$ 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`
```yaml
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`
```yaml
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=
```### Cutom TLS Certificate
```yaml
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.
```yaml
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=
```## 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](https://github.com/Necr0/docker-murmur/issues).