diff --git a/voice/mumble/Dockerfile b/voice/mumble/Dockerfile index 84ca88b..6ec964e 100644 --- a/voice/mumble/Dockerfile +++ b/voice/mumble/Dockerfile @@ -1,28 +1,10 @@ -FROM --platform=$TARGETOS/$TARGETARCH debian:bookworm-slim AS builder - -# Copy and run the build script -COPY build.sh /build.sh -RUN chmod +x /build.sh -RUN cd / && ./build.sh - -FROM --platform=$TARGETOS/$TARGETARCH debian:bookworm-slim - -# Create necessary directories -RUN mkdir -p /usr/local/bin /usr/local/share/mumble - -# Copy the built Mumble server binary and the latest tag file and the build log from the builder stage -COPY --from=builder /usr/src/mumble/git/build/mumble-server /usr/local/bin/mumble-server -COPY --from=builder /usr/src/mumble/git/build/latest_tag.txt /usr/local/share/mumble/latest_tag.txt -COPY --from=builder /usr/src/mumble/build.log /usr/local/share/mumble/build.log +FROM --platform=$TARGETOS/$TARGETARCH ghcr.io/mumble-voip/mumble-server:latest # Install runtime dependencies RUN apt update \ - && apt -y install curl tar tzdata file ca-certificates sqlite3 iproute2 tini \ + && apt -y install iproute2 tini \ && useradd -m -d /home/container container -# Needed packages to run the mumble server -RUN apt -y install libqt5sql5 libqt5sql5-sqlite libavahi-compat-libdnssd-dev libqt5dbus5 libzeroc-ice-dev libprotobuf-dev qtbase5-dev qtbase5-dev-tools - # Set up user and working directory USER container ENV USER=container HOME=/home/container @@ -37,4 +19,4 @@ RUN chmod +x /entrypoint.sh # Define entrypoint and command ENTRYPOINT ["/usr/bin/tini", "-g", "--"] -CMD ["/entrypoint.sh"] +CMD ["/entrypoint.sh"] \ No newline at end of file diff --git a/voice/mumble/build.sh b/voice/mumble/build.sh deleted file mode 100644 index f289008..0000000 --- a/voice/mumble/build.sh +++ /dev/null @@ -1,155 +0,0 @@ -#!/bin/bash - -# Mumble compile script. -# Runs on Debian 12 - -LOGFILE="/usr/src/mumble/build.log" - -log() { - echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" | tee -a $LOGFILE -} - -install_dep(){ - log "Installing dependencies..." - apt update && apt -y install \ - build-essential \ - cmake \ - pkg-config \ - qtbase5-dev \ - qtchooser \ - qt5-qmake \ - qtbase5-dev-tools \ - qttools5-dev \ - qttools5-dev-tools \ - libqt5svg5-dev \ - libboost-dev \ - libssl-dev \ - libprotobuf-dev \ - protobuf-compiler \ - libprotoc-dev \ - libcap-dev \ - libxi-dev \ - libasound2-dev \ - libogg-dev \ - libsndfile1-dev \ - libspeechd-dev \ - libavahi-compat-libdnssd-dev \ - libxcb-xinerama0 \ - libzeroc-ice-dev \ - libpoco-dev \ - jq \ - python3 \ - curl \ - git - - if [[ $? -ne 0 ]]; then - log "Failed to install dependencies" - exit 1 - fi - log "Dependencies installed successfully" -} - -# Function to install g++-multilib on amd64 -install_amd64_multilib() { - apt -y install g++-multilib - - if [[ $? -ne 0 ]]; then - log "Failed to install amd multilib dependency" - exit 1 - fi - - log "Multilib AMD64 installed successfully" -} - -# Function to install multilib support on arm64 -install_arm64_multilib() { - apt -y install g++-multilib-x86-64-linux-gnu g++-aarch64-linux-gnu libc6-dev-armhf-cross - - if [[ $? -ne 0 ]]; then - log "Failed to install amd multilib dependency" - exit 1 - fi - - log "Multilib ARM64 installed successfully" -} - -clone_mumble(){ - log "Cloning the Mumble repository..." - - # Create the necessary directories - mkdir -p /usr/src/mumble/git && cd /usr/src/mumble/git - - # Fetch the latest release tag from the GitHub API - LATEST_TAG=$(curl -s "https://api.github.com/repos/mumble-voip/mumble/releases/latest" | jq -r .tag_name) - if [[ $? -ne 0 || -z "$LATEST_TAG" ]]; then - log "Failed to fetch the latest release tag" - exit 1 - fi - echo "The latest tag is: $LATEST_TAG" | tee -a $LOGFILE - - # Clone the repository - echo "Running: git clone --branch \"$LATEST_TAG\" https://github.com/mumble-voip/mumble.git ." - git clone --branch "$LATEST_TAG" https://github.com/mumble-voip/mumble.git . - if [[ $? -ne 0 ]]; then - log "Failed to clone the repository" - exit 1 - fi - - # Clone the submodules - git submodule update --init --recursive - if [[ $? -ne 0 ]]; then - log "Failed to update submodules" - exit 1 - fi - - # Create and navigate to the build directory - mkdir -p build && cd build - - echo "$LATEST_TAG" > latest_tag.txt - - # Run cmake with the specified options - cmake -Dbundled-opus=OFF -Dclient=OFF -Dstatic=ON -DCMAKE_BUILD_TYPE=Release .. - if [[ $? -ne 0 ]]; then - log "CMake configuration failed" - exit 1 - fi - - log "Repository cloned and configured successfully" -} - -build_mumble(){ - log "Building Mumble server..." - - cd /usr/src/mumble/git/build - - echo "Using $(nproc) threads to build Mumble server" | tee -a $LOGFILE - cmake --build . -j $(nproc) - if [[ $? -ne 0 ]]; then - log "Build failed" - exit 1 - fi - - ls -la | tee -a $LOGFILE - log "Build completed successfully" -} - -# Install normal deps -install_dep - -# Detect the architecture -ARCH=$(dpkg --print-architecture) - -# Install ARCH specific deps -if [ "$ARCH" = "amd64" ]; then - echo "Detected architecture: amd64" - install_amd64_multilib -elif [ "$ARCH" = "arm64" ]; then - echo "Detected architecture: arm64" - install_arm64_multilib -else - echo "Unsupported architecture: $ARCH" - exit 1 -fi - -clone_mumble -build_mumble diff --git a/voice/mumble/entrypoint.sh b/voice/mumble/entrypoint.sh index e7c94f8..5a8756d 100644 --- a/voice/mumble/entrypoint.sh +++ b/voice/mumble/entrypoint.sh @@ -6,8 +6,7 @@ INTERNAL_IP=$(ip route get 1 | awk '{print $(NF-2);exit}') export INTERNAL_IP # Print the Muble server version -echo -e "Mumble release version:" -cat /usr/local/share/mumble/latest_tag.txt +/usr/bin/mumble-server --version # Replace Startup Variables MODIFIED_STARTUP=$(echo -e $(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g'))