Build mumble from source
This commit is contained in:
@@ -1,22 +1,40 @@
|
|||||||
FROM --platform=$TARGETOS/$TARGETARCH alpine:edge
|
FROM --platform=$TARGETOS/$TARGETARCH debian:bookworm-slim AS builder
|
||||||
|
|
||||||
LABEL author="Michael Parker" maintainer="parker@pterodactyl.io"
|
# Copy and run the build script
|
||||||
|
COPY build.sh /build.sh
|
||||||
|
RUN chmod +x /build.sh
|
||||||
|
RUN cd / && ./build.sh
|
||||||
|
|
||||||
LABEL org.opencontainers.image.source="https://github.com/pterodactyl/yolks"
|
FROM --platform=$TARGETOS/$TARGETARCH debian:bookworm-slim
|
||||||
LABEL org.opencontainers.image.licenses=MIT
|
|
||||||
|
|
||||||
## install dependencies
|
# Create necessary directories
|
||||||
RUN apk add --no-cache murmur tini
|
RUN mkdir -p /usr/local/bin /usr/local/share/mumble
|
||||||
|
|
||||||
RUN adduser -D container
|
# 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
|
||||||
|
|
||||||
USER container
|
# Install runtime dependencies
|
||||||
ENV USER=container HOME=/home/container
|
RUN apt update \
|
||||||
|
&& apt -y install curl tar tzdata file ca-certificates sqlite3 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
|
||||||
WORKDIR /home/container
|
WORKDIR /home/container
|
||||||
|
|
||||||
|
# Set the stop signal
|
||||||
STOPSIGNAL SIGINT
|
STOPSIGNAL SIGINT
|
||||||
|
|
||||||
COPY --chown=container:container ./entrypoint.sh /entrypoint.sh
|
# Copy and set up the entrypoint script
|
||||||
RUN chmod +x /entrypoint.sh
|
COPY --chown=container:container ./entrypoint.sh /entrypoint.sh
|
||||||
ENTRYPOINT ["/sbin/tini", "-g", "--"]
|
RUN chmod +x /entrypoint.sh
|
||||||
CMD ["/entrypoint.sh"]
|
|
||||||
|
# Define entrypoint and command
|
||||||
|
ENTRYPOINT ["/usr/bin/tini", "-g", "--"]
|
||||||
|
CMD ["/entrypoint.sh"]
|
||||||
|
115
voice/mumble/build.sh
Normal file
115
voice/mumble/build.sh
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
#!/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 \
|
||||||
|
g++-multilib \
|
||||||
|
jq \
|
||||||
|
python3 \
|
||||||
|
curl \
|
||||||
|
git
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
log "Failed to install dependencies"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
log "Dependencies 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_dep
|
||||||
|
clone_mumble
|
||||||
|
build_mumble
|
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/ash
|
#!/bin/bash
|
||||||
cd /home/container
|
cd /home/container
|
||||||
|
|
||||||
# Make internal Docker IP address available to processes.
|
# Make internal Docker IP address available to processes.
|
||||||
@@ -6,11 +6,12 @@ INTERNAL_IP=$(ip route get 1 | awk '{print $(NF-2);exit}')
|
|||||||
export INTERNAL_IP
|
export INTERNAL_IP
|
||||||
|
|
||||||
# Print the Muble server version
|
# Print the Muble server version
|
||||||
mumble-server --version
|
echo -e "Mumble release version:"
|
||||||
|
cat /usr/local/share/mumble/latest_tag.txt
|
||||||
|
|
||||||
# Replace Startup Variables
|
# Replace Startup Variables
|
||||||
MODIFIED_STARTUP=$(echo -e $(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g'))
|
MODIFIED_STARTUP=$(echo -e $(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g'))
|
||||||
echo -e ":/home/container$ ${MODIFIED_STARTUP}"
|
echo -e ":/home/container$ ${MODIFIED_STARTUP}"
|
||||||
|
|
||||||
# Run the Server
|
# Run the Server
|
||||||
eval ${MODIFIED_STARTUP}
|
eval ${MODIFIED_STARTUP}
|
Reference in New Issue
Block a user