From a2e9b642bc6ff0713d7a8dd13abe18274a0ba08b Mon Sep 17 00:00:00 2001 From: Amras Date: Thu, 23 Apr 2026 16:17:22 +0000 Subject: [PATCH 1/6] [feat] server and superuser passwords Impl note: server-pw can be ignored for a password-less server, e.g. if operator wants to run a publicly registered server: https://www.mumble.info/documentation/administration/config-file/#server-registration Impl note: secret names (-pw rather than -password) are shortened due to R015. --- .env.sample | 9 +++++++++ compose.serverpassword.yml | 12 ++++++++++++ compose.yml | 8 ++++++++ 3 files changed, 29 insertions(+) create mode 100644 compose.serverpassword.yml diff --git a/.env.sample b/.env.sample index dc1c153..d3d4040 100644 --- a/.env.sample +++ b/.env.sample @@ -12,3 +12,12 @@ COMPOSE_FILE="compose.yml" ## Web client #COMPOSE_FILE="$COMPOSE_FILE:compose.mumbleweb.yml" + +## Server Password +# remember to set the server-pw secret: +# abra app secret insert server-pw v1 +#COMPOSE_FILE="$COMPOSE_FILE:compose.serverpassword.yml" +#SECRET_SERVER_PASSWORD_VERSION=v1 + +## SuperUser Password +SECRET_SUPERUSER_PASSWORD_VERSION=v1 diff --git a/compose.serverpassword.yml b/compose.serverpassword.yml new file mode 100644 index 0000000..ef2f925 --- /dev/null +++ b/compose.serverpassword.yml @@ -0,0 +1,12 @@ +version: "3.8" + +services: + app: + secrets: + - source: server-pw + target: MUMBLE_CONFIG_SERVER_PASSWORD + +secrets: + server-pw: + external: true + name: ${STACK_NAME}_server-pw_${SECRET_SERVER_PASSWORD_VERSION} diff --git a/compose.yml b/compose.yml index 286f2e0..ba77208 100644 --- a/compose.yml +++ b/compose.yml @@ -8,6 +8,9 @@ services: - proxy volumes: - "mumble_data:/data" + secrets: + - source: superuser-pw + target: MUMBLE_SUPERUSER_PASSWORD deploy: restart_policy: condition: on-failure @@ -23,6 +26,11 @@ services: - "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 -- 2.49.0 From 069298a9f05d1c1c57c032623a40f2569d30494e Mon Sep 17 00:00:00 2001 From: Amras Date: Thu, 23 Apr 2026 17:16:54 +0000 Subject: [PATCH 2/6] [feat] add options from mumble-server.ini Most of the options from mumble-server.ini have been added to .env No documentation for these settings, since they're described elsewhere. The exceptions which were not included are: - *ssl* : adding support for custom certs needs more work - database, *db*, *sqlite* : as above, for databases - *ice* : unclear how ZeroC Ice works, decided to skip for now - logfile, pidfile, *log* : would need to expose these files outside the container - port, host, uname : unneccessary in a container - legacypasswordhash : unsecure, therefore requires custom compose file - forceExternalAuth : undocumented Reference: on environment variables to set config options in the container: https://github.com/mumble-voip/mumble-docker/blob/a0ab293b2a286032b21ec12d84ad24bc10f20dbd/README.md#configuration list of options: https://github.com/mumble-voip/mumble/blob/v1.6.870/auxiliary_files/mumble-server.ini --- .env.sample | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++ compose.yml | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/.env.sample b/.env.sample index d3d4040..a8c5c95 100644 --- a/.env.sample +++ b/.env.sample @@ -21,3 +21,59 @@ COMPOSE_FILE="compose.yml" ## SuperUser Password SECRET_SUPERUSER_PASSWORD_VERSION=v1 + +################# +# MUMBLE CONFIG # +################# +# Documentation for the following options is here: +# https://github.com/mumble-voip/mumble/blob/v1.6.870/auxiliary_files/mumble-server.ini +# Note: these options may be untested +#WELCOME_TEXT= +#BANDWIDTH= +#TIMEOUT= +#USERS= +#USERS_PER_CHANNEL= +#MESSAGE_BURST= +#MESSAGE_LIMIT= +#PLUGIN_MESSAGE_LIMIT= +#PLUGIN_MESSAGE_BURST= +#ALLOW_PING= +#OPUS_THRESHOLD= +#CHANNEL_NESTING_LIMIT= +#CHANNEL_COUNT_LIMIT= +#CHANNEL_NAME= +#USERNAME= +#DEFAULT_CHANNEL= +#REMEMBER_CHANNEL= +#REMEMBER_CHANNEL_DURATION= +#TEXT_MESSAGE_LENGTH= +#IMAGE_MESSAGE_LENGTH= +#ALLOW_HTML= +#LOG_DAYS= +#REGISTER_NAME= +#REGISTER_PASSWORD= +#REGISTER_URL= +#REGISTER_HOSTNAME= +#REGISTER_LOCATION= +#BONJOUR= +#SSL_CERT= +#SSL_KEY= +#SSL_PASSPHRASE= +#SSL_CA_PEM= +#SSL_DH_PARAMS= +#SSL_CIPHERS= +#OBFUSCATE= +#CERT_REQUIRED= +#SEND_VERSION= +#SUGGEST_VERSION= +#SUGGEST_POSITIONAL= +#SUGGEST_PUSH_TO_TALK= +#KDF_ITERATIONS= +#AUTOBAN_ATTEMPTS= +#AUTOBAN_TIMEFRAME= +#AUTOBAN_TIME= +#AUTOBAN_SUCCESSFUL_CONNECTIONS= +#ALLOW_RECORDING= +#ROLLING_STATS_WINDOW= +#LISTENERS_PER_CHANNEL= +#LISTENERS_PER_USER= diff --git a/compose.yml b/compose.yml index ba77208..90eccf9 100644 --- a/compose.yml +++ b/compose.yml @@ -11,6 +11,56 @@ services: 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_LOGDAYS: ${LOG_DAYS} + MUMBLE_CONFIG_REGISTERNAME: ${REGISTER_NAME} + MUMBLE_CONFIG_REGISTERPASSWORD: ${REGISTER_PASSWORD} + MUMBLE_CONFIG_REGISTERURL: ${REGISTER_URL} + MUMBLE_CONFIG_REGISTERHOSTNAME: ${REGISTER_HOSTNAME} + MUMBLE_CONFIG_REGISTERLOCATION: ${REGISTER_LOCATION} + MUMBLE_CONFIG_BONJOUR: ${BONJOUR} + MUMBLE_CONFIG_SSLCERT: ${SSL_CERT} + MUMBLE_CONFIG_SSLKEY: ${SSL_KEY} + MUMBLE_CONFIG_SSLPASSPHRASE: ${SSL_PASSPHRASE} + MUMBLE_CONFIG_SSLCAPEM: ${SSL_CA_PEM} + MUMBLE_CONFIG_SSLDHPARAMS: ${SSL_DH_PARAMS} + MUMBLE_CONFIG_SSLCIPHERS: ${SSL_CIPHERS} + 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 -- 2.49.0 From a96464676ebef5297b564ea2e9d86279ee789155 Mon Sep 17 00:00:00 2001 From: Amras Date: Mon, 27 Apr 2026 13:25:34 +0000 Subject: [PATCH 3/6] [doc] update README with new configs --- README.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 91ad78a..145e2c6 100644 --- a/README.md +++ b/README.md @@ -35,9 +35,10 @@ Low latency, high quality voice chat application. $ abra app deploy --force ``` 3. `abra app new mumble` -4. `abra app config ` -5. `abra app deploy ` -6. Connect with a [Mumble client] to port 64738 on your domain +4. `abra app secret generate --all` +5. `abra app config ` +6. `abra app deploy ` +7. Connect with a [Mumble client] to port 64738 on your domain ## Web Client @@ -50,6 +51,23 @@ overlay. To enable it: 2. `abra app deploy --force` 3. Open `https://` in a browser +## Server Password +By default, the server is not password-restricted. To enable a server password, +1. uncomment the relevant lines in the config: +``` +COMPOSE_FILE="$COMPOSE_FILE:compose.serverpassword.yml" +SECRET_SERVER_PASSWORD_VERSION=v1 +``` +2. set the password as a secret: +```bash +$ abra app secret insert server-pw v1 +? specify secret value: +``` +3. Redeploy your app: +```bash +$ abra app deploy --force +``` + [`abra`]: https://git.coopcloud.tech/coop-cloud/abra [`coop-cloud/traefik`]: https://git.coopcloud.tech/coop-cloud/traefik [Mumble client]:(https://www.mumble.info/downloads/) -- 2.49.0 From e8766522d2d22f7f784ccf26cbda019fb95fe9fe Mon Sep 17 00:00:00 2001 From: Amras Date: Mon, 27 Apr 2026 14:45:29 +0000 Subject: [PATCH 4/6] [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 --- .env.sample | 87 +++++++++++++++++++++++------------------------------ compose.yml | 12 -------- 2 files changed, 37 insertions(+), 62 deletions(-) diff --git a/.env.sample b/.env.sample index a8c5c95..eae52d2 100644 --- a/.env.sample +++ b/.env.sample @@ -27,53 +27,40 @@ SECRET_SUPERUSER_PASSWORD_VERSION=v1 ################# # Documentation for the following options is here: # https://github.com/mumble-voip/mumble/blob/v1.6.870/auxiliary_files/mumble-server.ini -# Note: these options may be untested -#WELCOME_TEXT= -#BANDWIDTH= -#TIMEOUT= -#USERS= -#USERS_PER_CHANNEL= -#MESSAGE_BURST= -#MESSAGE_LIMIT= -#PLUGIN_MESSAGE_LIMIT= -#PLUGIN_MESSAGE_BURST= -#ALLOW_PING= -#OPUS_THRESHOLD= -#CHANNEL_NESTING_LIMIT= -#CHANNEL_COUNT_LIMIT= -#CHANNEL_NAME= -#USERNAME= -#DEFAULT_CHANNEL= -#REMEMBER_CHANNEL= -#REMEMBER_CHANNEL_DURATION= -#TEXT_MESSAGE_LENGTH= -#IMAGE_MESSAGE_LENGTH= -#ALLOW_HTML= -#LOG_DAYS= -#REGISTER_NAME= -#REGISTER_PASSWORD= -#REGISTER_URL= -#REGISTER_HOSTNAME= -#REGISTER_LOCATION= -#BONJOUR= -#SSL_CERT= -#SSL_KEY= -#SSL_PASSPHRASE= -#SSL_CA_PEM= -#SSL_DH_PARAMS= -#SSL_CIPHERS= -#OBFUSCATE= -#CERT_REQUIRED= -#SEND_VERSION= -#SUGGEST_VERSION= -#SUGGEST_POSITIONAL= -#SUGGEST_PUSH_TO_TALK= -#KDF_ITERATIONS= -#AUTOBAN_ATTEMPTS= -#AUTOBAN_TIMEFRAME= -#AUTOBAN_TIME= -#AUTOBAN_SUCCESSFUL_CONNECTIONS= -#ALLOW_RECORDING= -#ROLLING_STATS_WINDOW= -#LISTENERS_PER_CHANNEL= -#LISTENERS_PER_USER= +WELCOME_TEXT="
Welcome to this server running Mumble.
Enjoy your stay!
" +BANDWIDTH=558000 +TIMEOUT=30 +USERS=100 +USERS_PER_CHANNEL=0 +MESSAGE_BURST=5 +MESSAGE_LIMIT=1 +PLUGIN_MESSAGE_LIMIT=1 +PLUGIN_MESSAGE_BURST=5 +ALLOW_PING=true +OPUS_THRESHOLD=0 +CHANNEL_NESTING_LIMIT=10 +CHANNEL_COUNT_LIMIT=1000 +CHANNEL_NAME=[ \\-=\\w#\\[\\]\\{\\}\\(\\)\\@\\|]+ +USERNAME=[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+ +DEFAULT_CHANNEL=0 +REMEMBER_CHANNEL=true +REMEMBER_CHANNEL_DURATION=0 +TEXT_MESSAGE_LENGTH=5000 +IMAGE_MESSAGE_LENGTH=1048576 +ALLOW_HTML=true +BONJOUR=true +OBFUSCATE=false +CERT_REQUIRED=false +SEND_VERSION=true +SUGGEST_VERSION= +SUGGEST_POSITIONAL= +SUGGEST_PUSH_TO_TALK= +KDF_ITERATIONS=-1 +AUTO_BAN_ATTEMPTS=10 +AUTO_BAN_TIMEFRAME=120 +AUTO_BAN_TIME=300 +AUTO_BAN_SUCCESSFUL_CONNECTIONS=true +ALLOW_RECORDING=true +ROLLING_STATS_WINDOW=300 +LISTENERS_PER_CHANNEL=5 +LISTENERS_PER_USER=2 diff --git a/compose.yml b/compose.yml index 90eccf9..93707aa 100644 --- a/compose.yml +++ b/compose.yml @@ -33,19 +33,7 @@ services: MUMBLE_CONFIG_TEXTMESSAGELENGTH: ${TEXT_MESSAGE_LENGTH} MUMBLE_CONFIG_IMAGEMESSAGELENGTH: ${IMAGE_MESSAGE_LENGTH} MUMBLE_CONFIG_ALLOWHTML: ${ALLOW_HTML} - MUMBLE_CONFIG_LOGDAYS: ${LOG_DAYS} - MUMBLE_CONFIG_REGISTERNAME: ${REGISTER_NAME} - MUMBLE_CONFIG_REGISTERPASSWORD: ${REGISTER_PASSWORD} - MUMBLE_CONFIG_REGISTERURL: ${REGISTER_URL} - MUMBLE_CONFIG_REGISTERHOSTNAME: ${REGISTER_HOSTNAME} - MUMBLE_CONFIG_REGISTERLOCATION: ${REGISTER_LOCATION} MUMBLE_CONFIG_BONJOUR: ${BONJOUR} - MUMBLE_CONFIG_SSLCERT: ${SSL_CERT} - MUMBLE_CONFIG_SSLKEY: ${SSL_KEY} - MUMBLE_CONFIG_SSLPASSPHRASE: ${SSL_PASSPHRASE} - MUMBLE_CONFIG_SSLCAPEM: ${SSL_CA_PEM} - MUMBLE_CONFIG_SSLDHPARAMS: ${SSL_DH_PARAMS} - MUMBLE_CONFIG_SSLCIPHERS: ${SSL_CIPHERS} MUMBLE_CONFIG_OBFUSCATE: ${OBFUSCATE} MUMBLE_CONFIG_CERTREQUIRED: ${CERT_REQUIRED} MUMBLE_CONFIG_SENDVERSION: ${SEND_VERSION} -- 2.49.0 From 11589df06efdf81ef84541c080ee4d5c1cce7039 Mon Sep 17 00:00:00 2001 From: Amras Date: Tue, 28 Apr 2026 13:36:05 +0000 Subject: [PATCH 5/6] [fix] backwards compatible env As per https://docs.coopcloud.tech/maintainers/upgrade/#backwards-compatible-environment-variable-changes moved the defaults for the new mumble-server.ini variables from .env.sample to the compose file --- .env.sample | 76 ++++++++++++++++++++++++++--------------------------- compose.yml | 68 ++++++++++++++++++++++++----------------------- 2 files changed, 73 insertions(+), 71 deletions(-) diff --git a/.env.sample b/.env.sample index eae52d2..3df55c3 100644 --- a/.env.sample +++ b/.env.sample @@ -25,42 +25,42 @@ SECRET_SUPERUSER_PASSWORD_VERSION=v1 ################# # MUMBLE CONFIG # ################# -# Documentation for the following options is here: +# Documentation for the following options can be found here: # https://github.com/mumble-voip/mumble/blob/v1.6.870/auxiliary_files/mumble-server.ini -WELCOME_TEXT="
Welcome to this server running Mumble.
Enjoy your stay!
" -BANDWIDTH=558000 -TIMEOUT=30 -USERS=100 -USERS_PER_CHANNEL=0 -MESSAGE_BURST=5 -MESSAGE_LIMIT=1 -PLUGIN_MESSAGE_LIMIT=1 -PLUGIN_MESSAGE_BURST=5 -ALLOW_PING=true -OPUS_THRESHOLD=0 -CHANNEL_NESTING_LIMIT=10 -CHANNEL_COUNT_LIMIT=1000 -CHANNEL_NAME=[ \\-=\\w#\\[\\]\\{\\}\\(\\)\\@\\|]+ -USERNAME=[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+ -DEFAULT_CHANNEL=0 -REMEMBER_CHANNEL=true -REMEMBER_CHANNEL_DURATION=0 -TEXT_MESSAGE_LENGTH=5000 -IMAGE_MESSAGE_LENGTH=1048576 -ALLOW_HTML=true -BONJOUR=true -OBFUSCATE=false -CERT_REQUIRED=false -SEND_VERSION=true -SUGGEST_VERSION= -SUGGEST_POSITIONAL= -SUGGEST_PUSH_TO_TALK= -KDF_ITERATIONS=-1 -AUTO_BAN_ATTEMPTS=10 -AUTO_BAN_TIMEFRAME=120 -AUTO_BAN_TIME=300 -AUTO_BAN_SUCCESSFUL_CONNECTIONS=true -ALLOW_RECORDING=true -ROLLING_STATS_WINDOW=300 -LISTENERS_PER_CHANNEL=5 -LISTENERS_PER_USER=2 +#WELCOME_TEXT="
Welcome to this server running Mumble.
Enjoy your stay!
" +#BANDWIDTH=558000 +#TIMEOUT=30 +#USERS=100 +#USERS_PER_CHANNEL=0 +#MESSAGE_BURST=5 +#MESSAGE_LIMIT=1 +#PLUGIN_MESSAGE_LIMIT=1 +#PLUGIN_MESSAGE_BURST=5 +#ALLOW_PING=true +#OPUS_THRESHOLD=0 +#CHANNEL_NESTING_LIMIT=10 +#CHANNEL_COUNT_LIMIT=1000 +#CHANNEL_NAME=[ \\-=\\w#\\[\\]\\{\\}\\(\\)\\@\\|]+ +#USERNAME=[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+ +#DEFAULT_CHANNEL=0 +#REMEMBER_CHANNEL=true +#REMEMBER_CHANNEL_DURATION=0 +#TEXT_MESSAGE_LENGTH=5000 +#IMAGE_MESSAGE_LENGTH=1048576 +#ALLOW_HTML=true +#BONJOUR=true +#OBFUSCATE=false +#CERT_REQUIRED=false +#SEND_VERSION=true +#SUGGEST_VERSION= +#SUGGEST_POSITIONAL= +#SUGGEST_PUSH_TO_TALK= +#KDF_ITERATIONS=-1 +#AUTO_BAN_ATTEMPTS=10 +#AUTO_BAN_TIMEFRAME=120 +#AUTO_BAN_TIME=300 +#AUTO_BAN_SUCCESSFUL_CONNECTIONS=true +#ALLOW_RECORDING=true +#ROLLING_STATS_WINDOW=300 +#LISTENERS_PER_CHANNEL=5 +#LISTENERS_PER_USER=2 diff --git a/compose.yml b/compose.yml index 93707aa..e9f373b 100644 --- a/compose.yml +++ b/compose.yml @@ -12,43 +12,45 @@ services: - 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_WELCOMETEXT: ${WELCOME_TEXT:-"
Welcome to this server running Mumble.
Enjoy your stay!
"} + MUMBLE_CONFIG_BANDWIDTH: ${BANDWIDTH:-558000} + MUMBLE_CONFIG_TIMEOUT: ${TIMEOUT:-30} + MUMBLE_CONFIG_USERS: ${USERS:-100} + MUMBLE_CONFIG_USERSPERCHANNEL: ${USERS_PER_CHANNEL:-0} + MUMBLE_CONFIG_MESSAGEBURST: ${MESSAGE_BURST:-5} + MUMBLE_CONFIG_MESSAGELIMIT: ${MESSAGE_LIMIT:-1} + MUMBLE_CONFIG_PLUGINMESSAGELIMIT: ${PLUGIN_MESSAGE_LIMIT:-1} + MUMBLE_CONFIG_PLUGINMESSAGEBURST: ${PLUGIN_MESSAGE_BURST:-5} + MUMBLE_CONFIG_ALLOWPING: ${ALLOW_PING:-true} + MUMBLE_CONFIG_OPUSTHRESHOLD: ${OPUS_THRESHOLD:-0} + MUMBLE_CONFIG_CHANNELNESTINGLIMIT: ${CHANNEL_NESTING_LIMIT:-10} + MUMBLE_CONFIG_CHANNELCOUNTLIMIT: ${CHANNEL_COUNT_LIMIT:-1000} + # 2026-04-28 @amras - the missing } in the following lines is intentional + # otherwise compose will pass that character to the env. + MUMBLE_CONFIG_CHANNELNAME: ${CHANNEL_NAME:-[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+ + MUMBLE_CONFIG_USERNAME: ${USER_NAME:-[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+ 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_REMEMBERCHANNEL: ${REMEMBER_CHANNEL:-true} + MUMBLE_CONFIG_REMEMBERCHANNELDURATION: ${REMEMBER_CHANNEL_DURATION:-0} + MUMBLE_CONFIG_TEXTMESSAGELENGTH: ${TEXT_MESSAGE_LENGTH:-5000} + MUMBLE_CONFIG_IMAGEMESSAGELENGTH: ${IMAGE_MESSAGE_LENGTH:-1048576} + MUMBLE_CONFIG_ALLOWHTML: ${ALLOW_HTML:-true} + MUMBLE_CONFIG_BONJOUR: ${BONJOUR:-true} + MUMBLE_CONFIG_OBFUSCATE: ${OBFUSCATE:-false} + MUMBLE_CONFIG_CERTREQUIRED: ${CERT_REQUIRED:-false} + MUMBLE_CONFIG_SENDVERSION: ${SEND_VERSION:-true} 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} + MUMBLE_CONFIG_KDFITERATIONS: ${KDF_ITERATIONS:--1} + MUMBLE_CONFIG_AUTOBANATTEMPTS: ${AUTOBAN_ATTEMPTS:-10} + MUMBLE_CONFIG_AUTOBANTIMEFRAME: ${AUTOBAN_TIMEFRAME:-120} + MUMBLE_CONFIG_AUTOBANTIME: ${AUTOBAN_TIME:-300} + MUMBLE_CONFIG_AUTOBANSUCCESSFULCONNECTIONS: ${AUTOBAN_SUCCESSFUL_CONNECTIONS:-true} + MUMBLE_CONFIG_ALLOWRECORDING: ${ALLOW_RECORDING:-true} + MUMBLE_CONFIG_ROLLINGSTATSWINDOW: ${ROLLING_STATS_WINDOW:-300} + MUMBLE_CONFIG_LISTENERSPERCHANNEL: ${LISTENERS_PER_CHANNEL:--1} + MUMBLE_CONFIG_LISTENERSPERUSER: ${LISTENERS_PER_USER:--1} deploy: restart_policy: condition: on-failure -- 2.49.0 From e4eba96d530a4ae7c5a5ca5fb3b5ae16294e9f28 Mon Sep 17 00:00:00 2001 From: Amras Date: Tue, 28 Apr 2026 13:50:55 +0000 Subject: [PATCH 6/6] [chore] update minor version Previous commits introduced new config options: - passwords - several misc mumble-server.ini settings since the new setup requires superuser-pw to be set, it is a breaking change compared to 0.1.0 however, 0.y.z is not considered stable by semver, so we're free to increment the minor version. --- compose.yml | 2 +- release/0.2.0+v1.6.870-0 | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 release/0.2.0+v1.6.870-0 diff --git a/compose.yml b/compose.yml index e9f373b..a618d6b 100644 --- a/compose.yml +++ b/compose.yml @@ -64,7 +64,7 @@ services: - "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" + - "coop-cloud.${STACK_NAME}.version=0.2.0+v1.6.870-0" secrets: superuser-pw: diff --git a/release/0.2.0+v1.6.870-0 b/release/0.2.0+v1.6.870-0 new file mode 100644 index 0000000..0e57ae7 --- /dev/null +++ b/release/0.2.0+v1.6.870-0 @@ -0,0 +1,3 @@ +- Added support for optional server passwords +- Added support for misc options from mumble-server.ini +- Important: superuser-pw must now be set as a secret -- 2.49.0