[mumble] broken, no package downloads available with release 1.4.230
With the latest release of mumble server (murmur), the minor version increased to v1.4. With that, the murmur-static_x86.tar.bz2 file (linux server) is no longer available in the release assets in github.
So the download instructions from the guide will no longer work by copy & paste:
wget https://github.com/mumble-voip/mumble/releases/download/66.6.6/murmur-static_x86-66.6.6.tar.bz2
The Mumble download site does also not provide official packages of linux mumble server. Instead it states:
Your distribution probably provides official packages for Mumble. Please refer to your OS packages. Distributions with official packages include Debian, Ubuntu, Fedora, openSUSE, Arch Linux, Mandriva/ROSA/Unity.
Nothing mentioned about CentOS.
The previous release 1.3.4 also contains the following phrase in its release notes:
Warning ⚠️
The static server binary for Linux is using an outdated version of OpenSSL - see 4001 for details. This warning only applies to the package released by us named murmur-static_x86. It does not apply to our Ubuntu PPA releases or other maintained packages.
tl;dr of mumble issue no. 4001: won't fix! ⚠️
We will most likely not provide new builds for the 1.3.x series though. We are preparing to release 1.4.x that does not have this issue in the first place so that should cover it.
So people should probably update any mumble-server instance to 1.4.x if it was installed following the instructions from the guide.
I'm stopping my investigations here. @Stunkymonkey, as you initially wrote the mumble guide, do you have time to check on this (and eventually update the guide)?
This change makes it much more complicate... Thanks for summarizing the current situation.
I do not have much time currently to rewrite this guide, but I would like to continue using mumble. If someone wants to drop in, they are warmly welcome.
there is a small guide on how to compile it for CentOS 8: https://github.com/mumble-voip/mumble/blob/master/docs/dev/build-instructions/build_linux.md
but a lot of things have to be adapted. Not sure if we really want to do this.
Instead maybe we could use some binaries from https://centos.pkgs.org/8/epel-x86_64/murmur-1.3.4-4.el8.x86_64.rpm.html instead and not compile them ourselfs. The only problem... this is currently not up-to-date.
I also had another look at this topic in the last 3 weeks and worked on a docker build container for compiling a static murmur v1.4.230. The build instructions (which you also linked) however are for centos8, but isn't Uberspace7 on centos7? Maybe that's what you meant with
but a lot of things have to be adapted
I tried it anyways... Background story, can skip this pararaph: I wanted to create build for centos7, but some packages were not found (probably they are named differently in centos8 than centos7) and also there are more dependencies needed that are not listed. For a first shot, I decided to go for ubuntu-20.04 and see if I would be successful in compiling murmur in a distro which I'm more familiar with. I ended up in a trial & error process for several hours, waiting for the compiler to fail in the next iteration. In the end, I succeeded and got a compiled murmur-static-linux-x86-1.4.230 binary out of the docker build environment. So the build is working, but there are runtime errors: the server won't start up, complaining about some .so libs that are not found (guess I missed them at build time).
tl;dr I did not yet succeed to self-compile a working murmur server, but mostly because it's time consuming and I didn't have a lot free time in the last days to continue my efforts. However it is possible!
But even if we managed to get a centos7 murmur (static) build for v1.4.230, this would not be a solution for everyone, for several reasons:
- compilation is not for beginners (even though a working docker-build-container would make it easier)
- compilation takes a lot of time (several hours, at least on my 6 year old consumer hardware with 4 CPU cores)
So self-compilation is not an option for the average uberspace user. This brings up new questions:
- If we had a murmur-server binary, where could we provide the package for download?
- Who would take over maintainance? Especially if newer mumble releases come out, this is an important question!
So it's just as @Stunkymonkey said:
Not sure if we really want to do this.
Instead maybe we could use some binaries from https://centos.pkgs.org/8/epel-x86_64/murmur-1.3.4-4.el8.x86_64.rpm.html instead and not compile them ourselfs. The only problem... this is currently not up-to-date.
Yeah.. and that's why I also think it is a pity that the mumble project does not provide pre-packaged linux builds anymore. (I'm not criticizing anyone, especially not the people of the mumble project, they do a good job. I'm just a little disappointed.). I can understand the decision to outsource compilation for linux distros. But the statement on their website really leaves us in an unsatisfying situation:
Linux: Your distribution probably provides official packages for Mumble. Please refer to your OS packages. Distributions with official packages include Debian, Ubuntu, Fedora, openSUSE, Arch Linux, Mandriva/ROSA/Unity.
I can agree with all your points.
What I did not expect:
compilation takes a lot of time (several hours, at least on my 6 year old consumer hardware with 4 CPU cores)
I tried it today as well, but did not succeed. Maybe we can work here together.
Dockerfile
FROM ubuntu:latest
ARG VERSION=1.4.230
ENV DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC
RUN apt-get update
RUN apt-get install -y \
# get cmake
build-essential \
cmake \
# for cloning
git \
# for configuring
pkg-config \
# for vcpkg
curl tar unzip zip \
# needed for compilation
bison
# install dependecies from dist
RUN apt-get install -y \
bison \
libgl1-mesa-dev \
libx11-dev \
libxi-dev \
libxext-dev \
libglu1-mesa-dev \
mesa-common-dev \
libxrandr-dev \
libxxf86vm-dev \
libbluetooth-dev \
libx11-xcb-dev
# install python
RUN apt-get install -y \
python \
python-distutils-extra \
python2 \
python3 \
python3-distutils
# make sure all qt5-base libraries are there (not all are needed)
RUN apt-get install -y \
libqt5svg5-dev \
libxfixes-dev \
libxrender-dev \
'^libxcb.*-dev' \
libxkbcommon-dev \
libxkbcommon-x11-dev \
qtbase5-dev \
qttools5-dev
# install not mentioned dependencies
RUN apt-get install -y \
gperf \
libdbus-1-dev \
libssl-dev \
libprotobuf-dev \
libpoco-dev \
libsndfile-dev \
libspeechd-dev \
libavahi-compat-libdnssd-dev \
libasound2-dev \
libzeroc-ice-dev
RUN git clone --depth 1 --branch v$VERSION --recursive https://github.com/mumble-voip/mumble.git
WORKDIR "mumble"
# check dependencies
RUN ./scripts/vcpkg/get_mumble_dependencies.sh
# run configure
RUN mkdir -p build
WORKDIR "build"
RUN cmake ..
# compilation
RUN cmake --build .
Finally the compilation works :tada:
The used Dockerfile:
FROM ubuntu:latest
ARG VERSION="1.4.230"
# install timezone asking for interactive shell
RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get update && apt-get -y install tzdata
RUN apt-get update && apt-get install -y \
# cloning
git \
# to make mumble-scripts work
sudo \
# vcpkg
curl tar unzip zip \
# configure
cmake
RUN git clone --depth 1 --branch v$VERSION --recursive https://github.com/mumble-voip/mumble.git
WORKDIR "mumble"
# temporary fix of missing newline escape
RUN sed -i 's/libxcb-xinput-dev/libxcb-xinput-dev \\/g' .github/actions/install-dependencies/install_ubuntu_static_64bit.sh
# temporary fix for different name of package
RUN sed -i 's/libl1-mesa-dev/libgl1-mesa-dev/g' .github/actions/install-dependencies/install_ubuntu_static_64bit.sh
# install dependencies & ignore error
RUN .github/actions/install-dependencies/install_ubuntu_static_64bit.sh; exit 0
# install NOT mentioned dependencies
RUN apt-get update && apt-get install -y \
autoconf \
bison \
gperf \
'^libxcb.*-dev' \
libx11-xcb-dev \
libbluetooth-dev
# check dependencies
RUN ./scripts/vcpkg/get_mumble_dependencies.sh
# run configure
RUN mkdir -p build
WORKDIR "build"
RUN cmake \
-G "Ninja" \
"-DVCPKG_TARGET_TRIPLET=x64-linux" \
"-Dstatic=ON" \
"-Dclient=OFF" \
"-DCMAKE_TOOLCHAIN_FILE=/root/vcpkg/scripts/buildsystems/vcpkg.cmake" \
"-DIce_HOME=/root/vcpkg/installed/x64-linux" \
"-DCMAKE_BUILD_TYPE=Release" \
..
# compilation
RUN cmake --build . --config Release
I think we have to adjust the enabled features.
Nice! (and cool you found the scripts in the .github/actions folder - I didn't see them when I gave it a try 🙈 )
How long did the compilation take? Did you already try if the murmur_static_server runs on a uberspace? If not, I might find some time at the weekend to test this :)
the compilation took about 3h on my laptop. It did not run on uberspace, because of zeroconf:
error while loading shared libraries: libdns_sd.so.1: cannot open shared object file: No such file or directory
but this could be disabled by adding -Dzeroconf=OFF to the configuring part
sadly I forgot to save the state while compiling. So I would have to recompile again.
I just stumbled upon the same problem that the static version isn't available anymore. Unfortunately, I'm not that familiar with compiling Mumble/Murmur myself but I found a binary file at Mumbles official downloads: mumble_server-1.4.230.x64.linux. Might this help as it's an already compiled binary?
oh wow. that is interesting. Thanks for sharing. Sadly it throws exactly the same error as posted above by me.
Hey, I hope it's ok if I refresh this issue. After realizing that the static-version is missing in the 1.4.x-releases (@biolauri 's link isn't working anymore), I spent quiet some time now compiling murmur (on Ubuntu 22.04) successfully. Had the same problem as @Stunkymonkey with the libdns_sd.so and found this thread, then recompiled as suggested with -Dzeroconf=OFF When I'm launching the static executable now on uberspace, I sadly get the following errors:
./mumble-server: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by ./mumble-server)
./mumble-server: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by ./mumble-server)
./mumble-server: /lib64/libm.so.6: version `GLIBC_2.35' not found (required by ./mumble-server)
./mumble-server: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by ./mumble-server)
./mumble-server: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./mumble-server)
./mumble-server: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./mumble-server)
./mumble-server: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./mumble-server)
./mumble-server: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by ./mumble-server)
./mumble-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./mumble-server)
./mumble-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by ./mumble-server)
./mumble-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./mumble-server)
./mumble-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by ./mumble-server)
./mumble-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.28' not found (required by ./mumble-server)
./mumble-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./mumble-server)
./mumble-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by ./mumble-server)
./mumble-server: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./mumble-server)
./mumble-server: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./mumble-server)
Some ideas on how to compile to overcome these? Or is compiling on Ubuntu the problem here? (sorry, I'm not very savvy at compiling and even less so with mumble it seems.)
PS: I'm able to start it on my local machine. PPS: I used the following cmake flags:
- "-Dzeroconf=OFF"
- "-Dclient=OFF"
- "-Dice=OFF"
- "-Dspeechd=OFF"
- "-Dalsa=OFF"
- "-Dstatic=ON"
Hey, I hope it's ok if I refresh this issue.
Very welcome!
Or is compiling on Ubuntu the problem here?
Yes, this is the problem, I guess. You need to compile on the OS you are targeting (which is why we use docker for that task).
The mumble project mentions some instructions for compiling on CentOS 8, but the section about CentOS 8 was written 2 years ago. Also, I'm in doubt if this would work on CentOS 7 (probably some dependencies have different names).
sorry, I'm not very savvy at compiling and even less so with mumble it seems.)
Unfortunately I'm not very savvy at compiling, either... Maybe it is worth to ask some of the (active) mumble contributors for help? Either ping them directly, or open an issue at the project and reference our issue there?
Or is compiling on Ubuntu the problem here?
Yes, this is the problem, I guess. You need to compile on the OS you are targeting (which is why we use docker for that task).
Just to add to this: According to ldd --version, you will need to target GLIBC 2.17, while Ubuntu 22.04 apparently ships with GLIBC 2.35 by default. While not really intended for this, you might want to try building it with the CentOS 7 Docker images for manylinux2014 (see https://github.com/pypa/manylinux).
You need to compile on the OS you are targeting (which is why we use docker for that task).
Ah. So I misinterpreted the "static" as "build it here (Ubuntu), run it there (anyLinux)". :disappointed: Have to say I used docker only a couple of times (and not thoroughly, I guess), so just to understand:
Could I use @Stunkymonkey 's Dockerfile on Ubuntu, or would I have to use it on CentOS7 (and paying attention to the dependencies mentioned in ".github/actions/install-dependencies/install_ubuntu_static_64bit.sh" and the ones needed additionally)?
The mumble project mentions some instructions for compiling on CentOS 8, but the section about CentOS 8 was written 2 years ago. Also, I'm in doubt if this would work on CentOS 7 (probably some dependencies have different names).
Thank you for the hint. I was so focused on creating a static build that I completely missed out on the (general) instructions to build on Linux :blush:
Maybe it is worth to ask some of the (active) mumble contributors for help? Either ping them directly, or open an issue at the project and reference our issue there?
I thought of that as well, but given the high number of issues already open and the static-build not being on their radar for months now, I was not sure if this "niche" problem with a static build for CentOS7 / Uberspace would get much attention. Would have been nice though to have an info somewhere on why they don't offer a static build anymore (or did I miss it?).
Just to add to this: According to ldd --version, you will need to target GLIBC 2.17, while Ubuntu 22.04 apparently ships with GLIBC 2.35 by default. While not really intended for this, you might want to try building it with the CentOS 7 Docker images for manylinux2014 (see https://github.com/pypa/manylinux).
Thank you for the info about Uberspaces GLIBC 2.17 (it surely would have taken me some time to think of checking for that :cold_sweat: ) and for the Link to manylinux, did not know that project! Guess I really need to get familiar with Docker :sweat_smile:
I just gave it a try, but linking seems to fail for now:
[ 98%] Building CXX object src/murmur/CMakeFiles/mumble-server.dir/Murmur.cpp.o
[100%] Linking CXX executable ../../mumble-server
/opt/rh/devtoolset-10/root/usr/libexec/gcc/x86_64-redhat-linux/10/ld: CMakeFiles/mumble-server.dir/mumble-server_plugin_import.cpp.o: in function `_GLOBAL__sub_I_mumble_server_plugin_import.cpp':
mumble-server_plugin_import.cpp:(.text.startup+0x5): undefined reference to `qt_static_plugin_QSQLiteDriverPlugin()'
collect2: error: ld returned 1 exit status
make[2]: *** [mumble-server] Error 1
make[1]: *** [src/murmur/CMakeFiles/mumble-server.dir/all] Error 2
make: *** [all] Error 2
Error: Process completed with exit code 2.
If someone has an idea about this, I am open for it. I have been using GitHub Actions for building, so the build script is available at https://github.com/FriedrichFroebel/murmur_tests/. By the way: The build seems to take about 6 minutes there.
In the meantime I set up a CentOS-7 in a VM and tried to install all dependency packages. For now I failed finding the following packages:
- qt5-devel (found qt5-qtbase-devel installed by default, could not find other qt5-devel package with yum)
- gcc-toolset-9-gcc-c++
(mentioned in compiling on CentOS 8, installed
gcc-x86_64-linux-gnuinstead) - libx11-xcb-devel
- mesa-common-dev
(installed
mesa-libGL-develmesa-libEGL-develmesa-libGLU-develmesa-libGLES-develinstead)
When executing ~/mumble/scripts/vcpkg/get_mumble_dependencies.sh I get 9 errors with the same text and different targets:
Target requires the language dialect "CXX17" (with compiler extensions). But the current compiler "GNU" does not support this, or CMake does not know the flags to enable it.
The targets are:
- angle_common
- angle_compression_utils
- angle_image_util
- angle_translator
- angle_preprocessor
- angle_gpu_info_util
- libANGLE
- libGLESv2
- libEGL
I did install cmake3 and used alternatives so that cmake3 gets executed, when cmake is called (because cmake is only available as v2.8.12.2)
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
ldd (GNU libc) 2.17
cmake3 version 3.17.5
undefined reference to `qt_static_plugin_QSQLiteDriverPlugin()'
On Ubuntu I needed to install the vcpkg-package libmariadb (and uninstall libmysql as they don't go together) ... might that help with your error?
Sadly (if I don't bother about the vcpkg dependency errors) my build process fails already at the beginning on ~/mumble/src/MumbleUDP.proto and ~/mumble/src/Mumble.proto, because it needs proto3 (from package protobuf), but i have only proto2 and have not found a way to install protobuf v3 for now...
So as @franok mentioned, there are vast problems with dependencies in CentOS 7 :disappointed:
Thank you @franok, @Stunkymonkey, @FriedrichFroebel, @MerlinZero for your efforts so far. I found this issue when trying to update Mumble myself. I'm happy to announce that I got Mumble 1.4 working on Uberspace.
I took a differenct approach by using udocker, I'm afraid that's our only option atm.
Here's a quick and dirty guide, for those of you who are familiar with Mumble already. Maybe we can work out a official Lab guide later.
murmur.ini from v1.3.4 is re-used here and port 77777 here will be our hypothetical Uberspace port added for Mumble.
This installation is using the default SQLite database. When Mumble is started it will be placed to ~/data/config/murmur.sqlite.
Download udocker
cd ~
wget https://github.com/indigo-dc/udocker/releases/download/1.3.5/udocker-1.3.5.tar.gz
tar zxvf udocker-1.3.5.tar.gz
Add to path
nano ~/bin/udocker
~/bin/udocker
#!/bin/sh
exec $HOME/udocker/udocker "$@"
chmod 0740 ~/bin/udocker
Install udocker
udocker install
Check if udocker is working
udocker version
Open dedicated port / Use port already added for Mumble
uberspace port add
Create Mumble data directory
mkdir -p ~/data/mumble
Create Mumble config file / Use old murmur.ini from Mumble 1.3.4
mkdir ~/data/mumble/config
nano ~/data/mumble/config/murmur.ini
murmur.ini
PLEASE NOTE: DO NOT CHANGE THE PORT AND SSLCERT & SSLKEY PATHS HERE (they will be mapped by udocker later)
welcometext="<br />Welcome to this server running <b>Murmur</b>.<br />Enjoy your stay!<br />"
port=64738
users=100
serverpassword=MYSUPERSECRETPASSWORD
allowping=true
bonjour=false
sslCert=/data/certificates/isabell.uber.space.crt
sslKey=/data/certificates/isabell.uber.space.key
Pull latest container image from docker repository
udocker pull mumblevoip/mumble-server
Check if mumble-server image is available to create
udocker images
Extract a container from an image available in the local repository
udocker create --name=mumble-server mumblevoip/mumble-server
Run mumble with udocker
udocker run --volume=/home/isabell/data/mumble:/data --volume=/home/isabell/data/mumble/config/murmur.ini:/data/config/murmur.ini --volume=/home/isabell/etc/certificates/isabell.uber.space.crt:/data/certificates/isabell.uber.space.crt --volume=/home/isabell/etc/certificates/isabell.uber.space.key:/data/certificates/isabell.uber.space.key --workdir=/ --env="MUMBLE_CUSTOM_CONFIG_FILE=/data/config/murmur.ini" --publish=77777:64738 mumblevoip/mumble-server
Now sit back and check if Mumble is starting successfully and note down the SuperUser password.
If it works, exit with CTRL+C.
Add service to supervisord
nano ~/etc/services.d/mumble.ini
~/etc/services.d/mumble.ini
[program:mumble]
command=bash -c '
%(ENV_HOME)s/bin/udocker run \
--volume=/home/isabell/data/mumble:/data \
--volume=/home/isabell/data/mumble/config/murmur.ini:/data/config/murmur.ini \
--volume=/home/isabell/etc/certificates/isabell.uber.space.crt:/data/certificates/isabell.uber.space.crt \
--volume=/home/isabell/etc/certificates/isabell.uber.space.key:/data/certificates/isabell.uber.space.key \
--workdir=/ \
--env="MUMBLE_CUSTOM_CONFIG_FILE=/data/config/murmur.ini" \
--publish=77777:64738 \
mumble-server
'
startsecs=60
autorestart=yes
stopasgroup=yes
killasgroup=yes
Add cronjob to have mumble server restarted every month (cause of certificate renewal)
crontab -e
cronjob
@monthly supervisorctl restart mumble > /dev/null
reload cronjobs
crontab -l
Let daemon refresh its configuration and start the service
supervisorctl reread
supervisorctl update
supervisorctl status
~~Please note that the daemon currently does not terminate when using supervisorctl stop mumble, I'm not sure why, maybe someone else knows how to fix that.~~
EDIT: Tried setting all up again on another instance and daemon stopped/started/restarted successfully. Added cronjob to guide. Guide should now be final.
📢 Meanwhile (and with some help) I managed to compile a v1.4 static mumble server binary that runs on centos7/uberspace7. 🥳
You can download the static binary from my github repository /release section and use it as a drop-in replacement for your current mumble-server installation on uberspace. ℹ️ You might need to change the murmur-binary's name in your run configs.
Get the static murmur server binary v1.4.287 here: https://github.com/franok/mumble-build-container/releases
If you encounter errors, file a github issue. I'll try to create new static builds with every mumble release.
Thanks for all the input to this issue, that finally led to a solution. Also thanks @custompyramidfellow for bringing up the udocker alternative. I think we could update the official guide with both variants, the udocker approach and the self-compiled version as a drop-in replacement (--> link to the build-repo).
Once the guide is updated, this issue can be closed. I will probably find some time to update the guide, latest by xmas 2022.
Hi, thanks for all the effort!
When installing on Uberspace from the new static following the Lab instructions, I encountered the following error:
<F>2022-12-11 19:50:38.110 ServerDB: Database driver QMYSQL not available
Support recommended using an older official static and/or asking about possible errors on my side here.
@bookshelfninja my self-compiled static murmur does not contain MySQL drivers -- maybe I should have mentioned that somewhere.
If your use case does not require running on mysql, I suggest you switch over to SQLite (change config in murmur.ini).
I will also update the guide accordingly, as long as mysql/mariadb is not supported.