Files
mumble/compose.yml
Amras e8766522d2 [fix] Include default values in .env
When a MUMBLE_CONFIG var is set, mumble will use it even if it is empty.
This caused problems e.g. when USERNAME="" caused all usernames to be
rejected.

One option to resolve this would be to keep unset-in-config variables
unset in the container. The other option is to supply mumble's default
values to the .env (which also makes the values more explicit).

This commit also removes a few config variables:
SSL would require more work to set up, as the server would need access
to the cert files
REGISTER is skipped for now as it would require an extra secret
LOG_DAYS is skipped because I'm not sure the logs are visible to the
user
2026-04-27 14:45:29 +00:00

78 lines
3.2 KiB
YAML

---
version: "3.8"
services:
app:
image: mumblevoip/mumble-server:v1.6.870-0
networks:
- proxy
volumes:
- "mumble_data:/data"
secrets:
- source: superuser-pw
target: MUMBLE_SUPERUSER_PASSWORD
environment:
MUMBLE_CONFIG_WELCOMETEXT: ${WELCOME_TEXT}
MUMBLE_CONFIG_BANDWIDTH: ${BANDWIDTH}
MUMBLE_CONFIG_TIMEOUT: ${TIMEOUT}
MUMBLE_CONFIG_USERS: ${USERS}
MUMBLE_CONFIG_USERSPERCHANNEL: ${USERS_PER_CHANNEL}
MUMBLE_CONFIG_MESSAGEBURST: ${MESSAGE_BURST}
MUMBLE_CONFIG_MESSAGELIMIT: ${MESSAGE_LIMIT}
MUMBLE_CONFIG_PLUGINMESSAGELIMIT: ${PLUGIN_MESSAGE_LIMIT}
MUMBLE_CONFIG_PLUGINMESSAGEBURST: ${PLUGIN_MESSAGE_BURST}
MUMBLE_CONFIG_ALLOWPING: ${ALLOW_PING}
MUMBLE_CONFIG_OPUSTHRESHOLD: ${OPUS_THRESHOLD}
MUMBLE_CONFIG_CHANNELNESTINGLIMIT: ${CHANNEL_NESTING_LIMIT}
MUMBLE_CONFIG_CHANNELCOUNTLIMIT: ${CHANNEL_COUNT_LIMIT}
MUMBLE_CONFIG_CHANNELNAME: ${CHANNEL_NAME}
MUMBLE_CONFIG_USERNAME: ${USERNAME}
MUMBLE_CONFIG_DEFAULTCHANNEL: ${DEFAULT_CHANNEL}
MUMBLE_CONFIG_REMEMBERCHANNEL: ${REMEMBER_CHANNEL}
MUMBLE_CONFIG_REMEMBERCHANNELDURATION: ${REMEMBER_CHANNEL_DURATION}
MUMBLE_CONFIG_TEXTMESSAGELENGTH: ${TEXT_MESSAGE_LENGTH}
MUMBLE_CONFIG_IMAGEMESSAGELENGTH: ${IMAGE_MESSAGE_LENGTH}
MUMBLE_CONFIG_ALLOWHTML: ${ALLOW_HTML}
MUMBLE_CONFIG_BONJOUR: ${BONJOUR}
MUMBLE_CONFIG_OBFUSCATE: ${OBFUSCATE}
MUMBLE_CONFIG_CERTREQUIRED: ${CERT_REQUIRED}
MUMBLE_CONFIG_SENDVERSION: ${SEND_VERSION}
MUMBLE_CONFIG_SUGGESTVERSION: ${SUGGEST_VERSION}
MUMBLE_CONFIG_SUGGESTPOSITIONAL: ${SUGGEST_POSITIONAL}
MUMBLE_CONFIG_SUGGESTPUSHTOTALK: ${SUGGEST_PUSH_TO_TALK}
MUMBLE_CONFIG_KDFITERATIONS: ${KDF_ITERATIONS}
MUMBLE_CONFIG_AUTOBANATTEMPTS: ${AUTOBAN_ATTEMPTS}
MUMBLE_CONFIG_AUTOBANTIMEFRAME: ${AUTOBAN_TIMEFRAME}
MUMBLE_CONFIG_AUTOBANTIME: ${AUTOBAN_TIME}
MUMBLE_CONFIG_AUTOBANSUCCESSFULCONNECTIONS: ${AUTOBAN_SUCCESSFUL_CONNECTIONS}
MUMBLE_CONFIG_ALLOWRECORDING: ${ALLOW_RECORDING}
MUMBLE_CONFIG_ROLLINGSTATSWINDOW: ${ROLLING_STATS_WINDOW}
MUMBLE_CONFIG_LISTENERSPERCHANNEL: ${LISTENERS_PER_CHANNEL}
MUMBLE_CONFIG_LISTENERSPERUSER: ${LISTENERS_PER_USER}
deploy:
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
- "traefik.tcp.routers.${STACK_NAME}.entrypoints=mumble"
- "traefik.tcp.routers.${STACK_NAME}.service=${STACK_NAME}-tcp-service"
- "traefik.tcp.routers.${STACK_NAME}.rule=HostSNI(`*`)"
- "traefik.tcp.routers.${STACK_NAME}.tls.passthrough=true"
- "traefik.tcp.services.${STACK_NAME}-tcp-service.loadbalancer.server.port=64738"
- "traefik.udp.routers.${STACK_NAME}.entrypoints=mumble-udp"
- "traefik.udp.routers.${STACK_NAME}.service=${STACK_NAME}-udp-service"
- "traefik.udp.services.${STACK_NAME}-udp-service.loadbalancer.server.port=64738"
- "coop-cloud.${STACK_NAME}.version=0.1.0+v1.6.870-0"
secrets:
superuser-pw:
external: true
name: ${STACK_NAME}_superuser-pw_${SECRET_SUPERUSER_PASSWORD_VERSION}
networks:
proxy:
external: true
volumes:
mumble_data: