forked from pterodactyl/yolks
-
Notifications
You must be signed in to change notification settings - Fork 247
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
681ffc4
commit f888177
Showing
3 changed files
with
150 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,40 @@ | ||
FROM --platform=$TARGETOS/$TARGETARCH alpine:edge | ||
FROM --platform=$TARGETOS/$TARGETARCH debian:bookworm-slim AS builder | ||
|
||
LABEL author="Michael Parker" maintainer="[email protected]" | ||
# 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" | ||
LABEL org.opencontainers.image.licenses=MIT | ||
FROM --platform=$TARGETOS/$TARGETARCH debian:bookworm-slim | ||
|
||
## install dependencies | ||
RUN apk add --no-cache murmur tini | ||
# Create necessary directories | ||
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 | ||
ENV USER=container HOME=/home/container | ||
# Install runtime dependencies | ||
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 | ||
|
||
# Set the stop signal | ||
STOPSIGNAL SIGINT | ||
|
||
COPY --chown=container:container ./entrypoint.sh /entrypoint.sh | ||
RUN chmod +x /entrypoint.sh | ||
ENTRYPOINT ["/sbin/tini", "-g", "--"] | ||
CMD ["/entrypoint.sh"] | ||
# Copy and set up the entrypoint script | ||
COPY --chown=container:container ./entrypoint.sh /entrypoint.sh | ||
RUN chmod +x /entrypoint.sh | ||
|
||
# Define entrypoint and command | ||
ENTRYPOINT ["/usr/bin/tini", "-g", "--"] | ||
CMD ["/entrypoint.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,17 @@ | ||
#!/bin/ash | ||
#!/bin/bash | ||
cd /home/container | ||
|
||
# Make internal Docker IP address available to processes. | ||
INTERNAL_IP=$(ip route get 1 | awk '{print $(NF-2);exit}') | ||
export INTERNAL_IP | ||
|
||
# Print the Muble server version | ||
mumble-server --version | ||
echo -e "Mumble release version:" | ||
cat /usr/local/share/mumble/latest_tag.txt | ||
|
||
# Replace Startup Variables | ||
MODIFIED_STARTUP=$(echo -e $(echo -e ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')) | ||
echo -e ":/home/container$ ${MODIFIED_STARTUP}" | ||
|
||
# Run the Server | ||
eval ${MODIFIED_STARTUP} | ||
eval ${MODIFIED_STARTUP} |