You are currently viewing How to setup Mumble server on Synology Docker

How to setup Mumble server on Synology Docker

This post is created to redirect my old post about installing Mumble through SynoCommunity packages.

I would now recommend getting the Docker version of Mumble than using any Synology package, as they tends to be out of date quite often. But if you cannot run Docker than you have to wait for people to maintain the Synology package.

Within the “Registry” tab, find the mumble docker coppit/mumble-server.

In the “Image” tab wait for the Docker image to be downloaded, double click to initialise the setup

Go to “Advanced Settings”

Select a folder to store the mumble-server.ini config file, I’ve decided to put it in “/docker/mumble-data” ensure you reference the mount path correctly “/data”.

Keep it simple override Local port “auto” to “64738”, this prevent the Docker changing the port on every startup.

Lets run the Docker

You will notice that the Docker will shut down unexpectedly, this is normal as it’s instructed to create the setting first and shut down.

Get “Text Editor” from the Package Center.

Find the folder that has the “mumble-server.ini”, right click and “Open with Text Editor”.

Begin editing the file by adding password and SSL certificate.

# Murmur configuration file.
#
# General notes:
# * Settings in this file are default settings and many of them can be overridden
#   with virtual server specific configuration via the Ice or DBus interface.
# * Due to the way this configuration file is read some rules have to be
#   followed when specifying variable values (as in variable = value):
#     * Make sure to quote the value when using commas in strings or passwords.
#        NOT variable = super,secret BUT variable = "super,secret"
#     * Make sure to escape special characters like '\' or '"' correctly
#        NOT variable = """ BUT variable = "\""
#        NOT regex = \w* BUT regex = \\w*

# Path to database. If blank, will search for
# murmur.sqlite in default locations or create it if not found.
database=/data/mumble-server.sqlite

# If you wish to use something other than SQLite, you'll need to set the name
# of the database above, and also uncomment the below.
# Sticking with SQLite is strongly recommended, as it's the most well tested
# and by far the fastest solution.
#
#dbDriver=QMYSQL
#dbUsername=
#dbPassword=
#dbHost=
#dbPort=
#dbPrefix=murmur_
#dbOpts=

# Murmur defaults to not using D-Bus. If you wish to use dbus, which is one of the
# RPC methods available in Murmur, please specify so here.
#
dbus=system

# Alternate D-Bus service name. Only use if you are running distinct
# murmurd processes connected to the same D-Bus daemon.
#dbusservice=net.sourceforge.mumble.murmur

# If you want to use ZeroC Ice to communicate with Murmur, you need
# to specify the endpoint to use. Since there is no authentication
# with ICE, you should only use it if you trust all the users who have
# shell access to your machine.
# Please see the ICE documentation on how to specify endpoints.
ice="tcp -h 127.0.0.1 -p 6502"

# Ice primarily uses local sockets. This means anyone who has a
# user account on your machine can connect to the Ice services.
# You can set a plaintext "secret" on the Ice connection, and
# any script attempting to access must then have this secret
# (as context with name "secret").
# Access is split in read (look only) and write (modify)
# operations. Write access always includes read access,
# unless read is explicitly denied (see note below).
#
# Note that if this is uncommented and with empty content,
# access will be denied.

#icesecretread=
icesecretwrite=

# How many login attempts do we tolerate from one IP
# inside a given timeframe before we ban the connection?
# Note that this is global (shared between all virtual servers), and that
# it counts both successfull and unsuccessfull connection attempts.
# Set either Attempts or Timeframe to 0 to disable.
#autobanAttempts = 10
#autobanTimeframe = 120
#autobanTime = 300

# Specifies the file Murmur should log to. By default, Murmur
# logs to the file 'murmur.log'. If you leave this field blank
# on Unix-like systems, Murmur will force itself into foreground
# mode which logs to the console.
logfile=/data/mumble-server.log

# If set, Murmur will write its process ID to this file
# when running in daemon mode (when the -fg flag is not
# specified on the command line). Only available on
# Unix-like systems.
pidfile=/var/run/mumble-server/mumble-server.pid

# The below will be used as defaults for new configured servers.
# If you're just running one server (the default), it's easier to
# configure it here than through D-Bus or Ice.
#
# Welcome message sent to clients when they connect.
welcometext="<br />Welcome to this server running <b>Murmur</b>.<br />Enjoy your stay!<br />"

# Port to bind TCP and UDP sockets to.
port=64738

# Specific IP or hostname to bind to.
# If this is left blank (default), Murmur will bind to all available addresses.
#host=

# Password to join server.
serverpassword=

# Maximum bandwidth (in bits per second) clients are allowed
# to send speech at.
bandwidth=72000

# Maximum number of concurrent clients allowed.
users=100

# Amount of users with Opus support needed to force Opus usage, in percent.
# 0 = Always enable Opus, 100 = enable Opus if it's supported by all clients.
#opusthreshold=100

# Maximum depth of channel nesting. Note that some databases like MySQL using
# InnoDB will fail when operating on deeply nested channels.
#channelnestinglimit=10

# Regular expression used to validate channel names.
# (Note that you have to escape backslashes with \ )
#channelname=[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+

# Regular expression used to validate user names.
# (Note that you have to escape backslashes with \ )
#username=[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+

# Maximum length of text messages in characters. 0 for no limit.
#textmessagelength=5000

# Maximum length of text messages in characters, with image data. 0 for no limit.
#imagemessagelength=131072

# Allow clients to use HTML in messages, user comments and channel descriptions?
#allowhtml=true

# Murmur retains the per-server log entries in an internal database which
# allows it to be accessed over D-Bus/ICE.
# How many days should such entries be kept?
# Set to 0 to keep forever, or -1 to disable logging to the DB.
#logdays=31

# To enable public server registration, the serverpassword must be blank, and
# this must all be filled out.
# The password here is used to create a registry for the server name; subsequent
# updates will need the same password. Don't lose your password.
# The URL is your own website, and only set the registerHostname for static IP
# addresses.
# Only uncomment the 'registerName' parameter if you wish to give your "Root" channel a custom name.
#
#registerName=Mumble Server
#registerPassword=secret
#registerUrl=https://www.mumble.info/
#registerHostname=

# If this option is enabled, the server will announce its presence via the
# bonjour service discovery protocol. To change the name announced by bonjour
# adjust the registerName variable.
# See http://developer.apple.com/networking/bonjour/index.html for more information
# about bonjour.
#bonjour=True

# If you have a proper SSL certificate, you can provide the filenames here.
# Otherwise, Murmur will create it's own certificate automatically.
#sslCert=
#sslKey=

# The sslCiphers option chooses the cipher suites to make available for use
# in SSL/TLS. This option is server-wide, and cannot be set on a
# per-virtual-server basis.
#
# This option is specified using OpenSSL cipher list notation (see
# https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT).
#
# It is recommended that you try your cipher string using 'openssl ciphers <string>'
# before setting it here, to get a feel for which cipher suites you will get.
#
# After setting this option, it is recommend that you inspect your Murmur log
# to ensure that Murmur is using the cipher suites that you expected it to.
#
# Note: Changing this option may impact the backwards compatibility of your
# Murmur server, and can remove the ability for older Mumble clients to be able
# to connect to it.
#sslCiphers=EECDH+AESGCM:AES256-SHA:AES128-SHA

# If Murmur is started as root, which user should it switch to?
# This option is ignored if Murmur isn't started with root privileges.
uname=mumble-server

# If this options is enabled, only clients which have a certificate are allowed
# to connect.
#certrequired=False

# If enabled, clients are sent information about the servers version and operating
# system.
#sendversion=True

# You can configure any of the configuration options for Ice here. We recommend
# leave the defaults as they are.
# Please note that this section has to be last in the configuration file.
#
[Ice]
Ice.Warn.UnknownProperties=1
Ice.MessageSizeMax=65536

Recommend that you apply a password to your server on line 98

serverpassword=

Also add in your SSL certificate location on line 160 and 161, remember that you need to use a fullchain and a priv.key. Just add the required files in the /data folder where the mumble-server.ini is located.

sslCert=/data/fullchain.pem
sslKey=/data/privkey.pem

Run the Mumble Docker, you should be able to connect to it locally.

This Post Has 4 Comments

  1. ChrisD

    I have tried to follow this guide step by step but it does not create the .SQLite file nor the log file for me. Are there any additional settings (maybe in the Environments tab) that need to be done?

    Would love if you could be a little more specific, as following the guide step by step has not worked for me.

  2. ChrisD

    I am trying to follow your guide step by step but it is just not working for me. I have the latest version of Synology DSM 6.2 (update 2) and following all your steps I get the following errors in the Docker Container log:

    murmurd: failed to open logfile /data/mumble-server.log: no logging will be done

    2018-07-18 23:11:32.319 ServerDB: Failed initialization: unable to open database file Error opening database

    When I check the mumble-server folder, I see that only the .ini file was made but not the log file and not the .SQLite file. What is going on? Would really appreciate the help!

    1. poyu

      It seems like the permission for your Docker is incorrect, I’ve did the tutorial and tested this via DS218+ with the latest update.

      When linking the folder, put the folder in the “docker” folder, this is where the “Docker” application have full access to. If that doesn’t work, toggle “Execute container using high privilege” let me know how that goes.

      There is a command to give full access to the folder, if that fails.

    2. poyu

      To do command line:
      1)
      start the mumble Docker
      2)
      Double click on docker to bring up Docker options
      3)
      Go to the "Terminal" tab, click on create "bash".
      4)
      type "cd /data" this would move you to data folder where this Mumble docker uses.
      5)
      type "ls" this would list all files and folders, check that the mumble-server.ini is there, to know you in the right location
      6)
      type "chown -R mumble-server:mumble-server /data"
      7)
      restart docker container.

      This command “chown” changes the ownership of the files and folder, “-R” is recursive which perform for all files and folders, “mumble-server” is the user that is required, “mumble-server” is the user group that is allowed, “/data” is the folder inside the docker that store mumble-server.ini, log and sql database.
      “mumble-server” user uid is 108
      “mumble-server” group gui is 111.
      technically the command “chown -R 108:111 /data” should works aswell

Leave a Reply to poyu Cancel reply