From ca13076b0396e2c3e12bd7c3ea623e58fd64de6c Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Wed, 25 Mar 2026 08:13:15 +0300 Subject: [PATCH 01/20] Remove xvfb code and wine related stuff --- docker/dedicated-server/entrypoint.sh | 97 +-------------------------- 1 file changed, 2 insertions(+), 95 deletions(-) diff --git a/docker/dedicated-server/entrypoint.sh b/docker/dedicated-server/entrypoint.sh index 26b40da981..8d5a8a29f0 100644 --- a/docker/dedicated-server/entrypoint.sh +++ b/docker/dedicated-server/entrypoint.sh @@ -8,7 +8,6 @@ SERVER_PORT="25565" SERVER_BIND_IP="0.0.0.0" PERSIST_DIR="/srv/persist" -WINE_CMD="" ensure_persist_file() { local persist_path="$1" @@ -30,64 +29,6 @@ ensure_persist_file() { ln -sfn "${persist_path}" "${runtime_path}" } -wait_for_xvfb_ready() { - local display="$1" - local xvfb_pid="$2" - local wait_seconds="${XVFB_WAIT_SECONDS:-10}" - local wait_ticks=$((wait_seconds * 10)) - local display_number="${display#:}" - display_number="${display_number%%.*}" - - if [ -z "${display_number}" ] || ! [[ "${display_number}" =~ ^[0-9]+$ ]]; then - echo "[error] Invalid DISPLAY format for Xvfb wait: ${display}" >&2 - return 1 - fi - - local socket_path="/tmp/.X11-unix/X${display_number}" - local elapsed=0 - - while [ "${elapsed}" -lt "${wait_ticks}" ]; do - if ! kill -0 "${xvfb_pid}" 2>/dev/null; then - echo "[error] Xvfb exited before the display became ready." >&2 - if [ -f /tmp/xvfb.log ]; then - echo "[error] ---- /tmp/xvfb.log ----" >&2 - tail -n 200 /tmp/xvfb.log >&2 || true - echo "[error] ----------------------" >&2 - fi - return 1 - fi - - if [ -S "${socket_path}" ]; then - # Keep a short extra delay so Wine does not race display handshake. - sleep 0.2 - if kill -0 "${xvfb_pid}" 2>/dev/null && [ -S "${socket_path}" ]; then - return 0 - fi - fi - - # One more liveness check after the ready probe branch. - if ! kill -0 "${xvfb_pid}" 2>/dev/null; then - echo "[error] Xvfb exited during display readiness probe." >&2 - if [ -f /tmp/xvfb.log ]; then - echo "[error] ---- /tmp/xvfb.log ----" >&2 - tail -n 200 /tmp/xvfb.log >&2 || true - echo "[error] ----------------------" >&2 - fi - return 1 - fi - - sleep 0.1 - elapsed=$((elapsed + 1)) - done - - echo "[error] Timed out waiting for Xvfb display ${display}." >&2 - if [ -f /tmp/xvfb.log ]; then - echo "[error] ---- /tmp/xvfb.log ----" >&2 - tail -n 200 /tmp/xvfb.log >&2 || true - echo "[error] ----------------------" >&2 - fi - return 1 -} if [ ! -d "$SERVER_DIR" ]; then echo "[error] Server directory not found: $SERVER_DIR" >&2 @@ -117,47 +58,13 @@ if [ -e "Windows64/GameHDD" ] && [ ! -L "Windows64/GameHDD" ]; then fi ln -sfn "${PERSIST_DIR}/GameHDD" "Windows64/GameHDD" -# for compatibility with other images -if command -v wine64 >/dev/null 2>&1; then - WINE_CMD="wine64" -elif [ -x "/usr/lib/wine/wine64" ]; then - WINE_CMD="/usr/lib/wine/wine64" -elif command -v wine >/dev/null 2>&1; then - WINE_CMD="wine" -else - echo "[error] No Wine executable found (wine64/wine)." >&2 - exit 1 -fi +# do umu-run stuff + if [ ! -d "${WINEPREFIX}" ] || [ -z "$(ls -A "${WINEPREFIX}" 2>/dev/null)" ]; then mkdir -p "${WINEPREFIX}" fi -# in the current implementation, a virtual screen is required because the client-side logic is being called for compatibility -if [ -z "${DISPLAY:-}" ]; then - export DISPLAY="${XVFB_DISPLAY:-:99}" - XVFB_SCREEN="${XVFB_SCREEN:-64x64x16}" - DISPLAY_NUMBER="${DISPLAY#:}" - DISPLAY_NUMBER="${DISPLAY_NUMBER%%.*}" - if [ -z "${DISPLAY_NUMBER}" ] || ! [[ "${DISPLAY_NUMBER}" =~ ^[0-9]+$ ]]; then - echo "[error] Invalid XVFB_DISPLAY format: ${DISPLAY}" >&2 - exit 1 - fi - XVFB_SOCKET="/tmp/.X11-unix/X${DISPLAY_NUMBER}" - XVFB_LOCK="/tmp/.X${DISPLAY_NUMBER}-lock" - # The check is performed assuming the same container will be restarted. - if [ -S "${XVFB_SOCKET}" ] || [ -e "${XVFB_LOCK}" ]; then - echo "[warn] Removing stale Xvfb state for ${DISPLAY} before startup." >&2 - rm -f "${XVFB_SOCKET}" "${XVFB_LOCK}" - fi - Xvfb "${DISPLAY}" -nolisten tcp -screen 0 "${XVFB_SCREEN}" >/tmp/xvfb.log 2>&1 & - XVFB_PID=$! - wait_for_xvfb_ready "${DISPLAY}" "${XVFB_PID}" - echo "[info] Xvfb ready on ${DISPLAY} (pid=${XVFB_PID}, screen=${XVFB_SCREEN})" -else - echo "[info] Using existing DISPLAY=${DISPLAY}; skipping Xvfb startup" -fi - args=( -port "${SERVER_PORT}" -bind "${SERVER_BIND_IP}" From d6e34e09670be1e2f37a2c5b3025ec1aa89a6448 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Wed, 25 Mar 2026 08:20:13 +0300 Subject: [PATCH 02/20] add docker to nightly ci ignore --- .github/workflows/nightly.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 789db3e84f..0e1a602c36 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -10,6 +10,7 @@ on: - '*.md' - '.github/**' - '!.github/workflows/nightly.yml' + - '!docker/**' permissions: contents: write From df8afa9e50e2fb119350905cb88c8867d627fae3 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Wed, 25 Mar 2026 08:22:53 +0300 Subject: [PATCH 03/20] Change to debian trixie, proton and wayland changes --- docker/dedicated-server/Dockerfile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index 14760afdc3..95909508af 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:bookworm-slim +FROM debian:trixie-slim ARG DEBIAN_FRONTEND=noninteractive # basically, it only works with a Release build.(libs are not included in Debug build) @@ -11,12 +11,14 @@ RUN dpkg --add-architecture i386 \ wine \ wine64 \ wine32:i386 \ - xvfb \ + xwayland-run \ + cage \ tini \ && rm -rf /var/lib/apt/lists/* +ENV PROTON_ENABLE_WAYLAND=1 ENV WINEARCH=win64 -ENV WINEPREFIX=/var/opt/wineprefix64 +ENV WINEPREFIX=/var/opt/minecraft_lce WORKDIR /srv/mc From ab8669ac906a14e2cf62d737f18e25c813481df7 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Thu, 26 Mar 2026 01:05:48 +0300 Subject: [PATCH 04/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index 95909508af..e2dd48610b 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -8,14 +8,34 @@ RUN dpkg --add-architecture i386 \ && apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ - wine \ - wine64 \ - wine32:i386 \ xwayland-run \ cage \ + curl \ tini \ && rm -rf /var/lib/apt/lists/* +# Wine from the upstream repo +RUN mkdir -pm755 /etc/apt/keyrings && \ + curl -fsSL https://dl.winehq.org/wine-builds/winehq.key \ + -o /etc/apt/keyrings/winehq-archive.key && \ + curl -fsSL https://dl.winehq.org/wine-builds/debian/dists/trixie/winehq-trixie.sources \ + -o /etc/apt/sources.list.d/winehq-trixie.sources && \ + apt-get update && \ + apt-get install -y --install-recommends winehq-devel + +# UMU +RUN set -eux; \ + ver="$( \ + curl -sIL https://github.com/Open-Wine-Components/umu-launcher/releases/latest \ + | grep -i '^location:' \ + | sed -E 's|.*tag/||' \ + | tr -d '\r' \ + )"; \ + curl -Lo /tmp/umu-launcher.deb \ + "https://github.com/Open-Wine-Components/umu-launcher/releases/download/${ver}/python3-umu-launcher_${ver}-1_amd64_ubuntu-noble.deb"; \ + apt-get install -y /tmp/umu-launcher.deb; \ + rm -f /tmp/umu-launcher.deb; + ENV PROTON_ENABLE_WAYLAND=1 ENV WINEARCH=win64 ENV WINEPREFIX=/var/opt/minecraft_lce From e182a8d5e9a8c304b25cbf83f623b09f3fe155ee Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Thu, 26 Mar 2026 01:14:13 +0300 Subject: [PATCH 05/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index e2dd48610b..fe294fcf4b 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -36,9 +36,10 @@ RUN set -eux; \ apt-get install -y /tmp/umu-launcher.deb; \ rm -f /tmp/umu-launcher.deb; +ENV PROTONPATH=GE-Proton ENV PROTON_ENABLE_WAYLAND=1 ENV WINEARCH=win64 -ENV WINEPREFIX=/var/opt/minecraft_lce +ENV WINEPREFIX=/var/opt/wineprefix64 WORKDIR /srv/mc From 43e7f6a32f624d77351757f8e7afacf9c95e6e5c Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Thu, 26 Mar 2026 01:15:39 +0300 Subject: [PATCH 06/20] Update entrypoint.sh --- docker/dedicated-server/entrypoint.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docker/dedicated-server/entrypoint.sh b/docker/dedicated-server/entrypoint.sh index 8d5a8a29f0..b2b1fbe367 100644 --- a/docker/dedicated-server/entrypoint.sh +++ b/docker/dedicated-server/entrypoint.sh @@ -29,7 +29,6 @@ ensure_persist_file() { ln -sfn "${persist_path}" "${runtime_path}" } - if [ ! -d "$SERVER_DIR" ]; then echo "[error] Server directory not found: $SERVER_DIR" >&2 exit 1 @@ -58,9 +57,6 @@ if [ -e "Windows64/GameHDD" ] && [ ! -L "Windows64/GameHDD" ]; then fi ln -sfn "${PERSIST_DIR}/GameHDD" "Windows64/GameHDD" -# do umu-run stuff - - if [ ! -d "${WINEPREFIX}" ] || [ -z "$(ls -A "${WINEPREFIX}" 2>/dev/null)" ]; then mkdir -p "${WINEPREFIX}" fi @@ -71,4 +67,4 @@ args=( ) echo "[info] Starting ${SERVER_EXE} on ${SERVER_BIND_IP}:${SERVER_PORT}" -exec "${WINE_CMD}" "${SERVER_EXE}" "${args[@]}" +exec "umu-run" "${SERVER_EXE}" "${args[@]}" From 4fbf0ce0179f4e560f97df64f8fac699e627a111 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Thu, 26 Mar 2026 01:17:35 +0300 Subject: [PATCH 07/20] Update entrypoint.sh --- docker/dedicated-server/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/dedicated-server/entrypoint.sh b/docker/dedicated-server/entrypoint.sh index b2b1fbe367..79bb28b275 100644 --- a/docker/dedicated-server/entrypoint.sh +++ b/docker/dedicated-server/entrypoint.sh @@ -67,4 +67,4 @@ args=( ) echo "[info] Starting ${SERVER_EXE} on ${SERVER_BIND_IP}:${SERVER_PORT}" -exec "umu-run" "${SERVER_EXE}" "${args[@]}" +exec wlheadless-run -c cage -- "${SERVER_EXE}" "${args[@]}" From dadac32e60e67a331223d34881818531201f2a0f Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Thu, 26 Mar 2026 01:41:39 +0300 Subject: [PATCH 08/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index fe294fcf4b..8cf12e05cb 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -2,7 +2,7 @@ FROM debian:trixie-slim ARG DEBIAN_FRONTEND=noninteractive # basically, it only works with a Release build.(libs are not included in Debug build) -ARG MC_RUNTIME_DIR=x64/Minecraft.Server/Release +ARG MC_RUNTIME_DIR=srv/mc RUN dpkg --add-architecture i386 \ && apt-get update \ @@ -43,11 +43,13 @@ ENV WINEPREFIX=/var/opt/wineprefix64 WORKDIR /srv/mc -COPY ${MC_RUNTIME_DIR}/Minecraft.Server.exe /srv/mc/Minecraft.Server.exe -COPY ${MC_RUNTIME_DIR}/iggy_w64.dll /srv/mc/iggy_w64.dll -COPY ${MC_RUNTIME_DIR}/Common /srv/mc/Common -COPY ${MC_RUNTIME_DIR}/Windows64 /srv/mc/Windows64 -COPY docker/dedicated-server/entrypoint.sh /usr/local/bin/entrypoint.sh +# latest server build +RUN curl -Lo /tmp/LCEServerWindows64.zip \ + "https://github.com/smartcmd/MinecraftConsoles/releases/download/nightly-dedicated-server/LCEServerWindows64.zip" \ + && unzip /tmp/LCEServerWindows64.zip -d /srv/mc \ + && rm /tmp/LCEServerWindows64.zip + +COPY entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod 0755 /usr/local/bin/entrypoint.sh \ && mkdir -p /var/opt/wineprefix64 /srv/mc \ From 103f32544554691180855d3e5134f5adb3417e93 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Thu, 26 Mar 2026 01:50:56 +0300 Subject: [PATCH 09/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index 8cf12e05cb..c71c110e85 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -12,6 +12,7 @@ RUN dpkg --add-architecture i386 \ cage \ curl \ tini \ + unzip \ && rm -rf /var/lib/apt/lists/* # Wine from the upstream repo From 8affeaa0f8a20583cf39c3f1c546a65c03a215aa Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Thu, 26 Mar 2026 02:04:06 +0300 Subject: [PATCH 10/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index c71c110e85..7a82d34a81 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -33,7 +33,7 @@ RUN set -eux; \ | tr -d '\r' \ )"; \ curl -Lo /tmp/umu-launcher.deb \ - "https://github.com/Open-Wine-Components/umu-launcher/releases/download/${ver}/python3-umu-launcher_${ver}-1_amd64_ubuntu-noble.deb"; \ + "https://github.com/Open-Wine-Components/umu-launcher/releases/download/${ver}/python3-umu-launcher_${ver}-1_amd64_debian-13.deb"; \ apt-get install -y /tmp/umu-launcher.deb; \ rm -f /tmp/umu-launcher.deb; From 49836aeb6f1f65061cbfc831496027fb8eb2479d Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 09:59:46 +0300 Subject: [PATCH 11/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index 7a82d34a81..301ab0da33 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -4,6 +4,11 @@ ARG DEBIAN_FRONTEND=noninteractive # basically, it only works with a Release build.(libs are not included in Debug build) ARG MC_RUNTIME_DIR=srv/mc +ENV PROTONPATH=GE-Proton +ENV PROTON_ENABLE_WAYLAND=1 +ENV WINEARCH=win64 +ENV WINEPREFIX=/var/opt/wineprefix64 + RUN dpkg --add-architecture i386 \ && apt-get update \ && apt-get install -y --no-install-recommends \ @@ -37,12 +42,17 @@ RUN set -eux; \ apt-get install -y /tmp/umu-launcher.deb; \ rm -f /tmp/umu-launcher.deb; -ENV PROTONPATH=GE-Proton -ENV PROTON_ENABLE_WAYLAND=1 -ENV WINEARCH=win64 -ENV WINEPREFIX=/var/opt/wineprefix64 +# Create user +RUN useradd -m -s /bin/bash mclce -WORKDIR /srv/mc +# Give maxima sudo without password +RUN echo "maxima ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/mclce \ + && chmod 0440 /etc/sudoers.d/mclce + +USER mclce + +# games dir +RUN sudo chmod 0755 /srv/mc # latest server build RUN curl -Lo /tmp/LCEServerWindows64.zip \ @@ -56,4 +66,6 @@ RUN chmod 0755 /usr/local/bin/entrypoint.sh \ && mkdir -p /var/opt/wineprefix64 /srv/mc \ && test -f /srv/mc/Minecraft.Server.exe +WORKDIR /srv/mc + ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/entrypoint.sh"] From cea96d8413e7e7c2292bf105badeb97cb910d279 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:00:25 +0300 Subject: [PATCH 12/20] Update entrypoint.sh --- docker/dedicated-server/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/dedicated-server/entrypoint.sh b/docker/dedicated-server/entrypoint.sh index 79bb28b275..c3b2349ee3 100644 --- a/docker/dedicated-server/entrypoint.sh +++ b/docker/dedicated-server/entrypoint.sh @@ -67,4 +67,4 @@ args=( ) echo "[info] Starting ${SERVER_EXE} on ${SERVER_BIND_IP}:${SERVER_PORT}" -exec wlheadless-run -c cage -- "${SERVER_EXE}" "${args[@]}" +exec wlheadless-run -c cage -- umu-run "${SERVER_EXE}" "${args[@]}" From cc3f290d3bd12957b5765eb115e356e2fb47a6b6 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:00:41 +0300 Subject: [PATCH 13/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index 301ab0da33..12b640454d 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -52,7 +52,8 @@ RUN echo "maxima ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/mclce \ USER mclce # games dir -RUN sudo chmod 0755 /srv/mc +RUN sudo chmod 0755 /srv/mc && \ + sudo chmod 0755 /srv/persist # latest server build RUN curl -Lo /tmp/LCEServerWindows64.zip \ From c57e85c7a24dae4d743ddbf14c445394cef7d0ad Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:07:47 +0300 Subject: [PATCH 14/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index 12b640454d..7bdbb04e53 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -12,6 +12,7 @@ ENV WINEPREFIX=/var/opt/wineprefix64 RUN dpkg --add-architecture i386 \ && apt-get update \ && apt-get install -y --no-install-recommends \ + sudo \ ca-certificates \ xwayland-run \ cage \ @@ -45,7 +46,7 @@ RUN set -eux; \ # Create user RUN useradd -m -s /bin/bash mclce -# Give maxima sudo without password +# Give sudo without password RUN echo "maxima ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/mclce \ && chmod 0440 /etc/sudoers.d/mclce From a3c03c7f8167efd35dbd7b14a3a7cda65017af2f Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:13:49 +0300 Subject: [PATCH 15/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index 7bdbb04e53..aad2e16a27 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -47,14 +47,15 @@ RUN set -eux; \ RUN useradd -m -s /bin/bash mclce # Give sudo without password -RUN echo "maxima ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/mclce \ +RUN echo "mclce ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/mclce \ && chmod 0440 /etc/sudoers.d/mclce USER mclce -# games dir +# ownership RUN sudo chmod 0755 /srv/mc && \ - sudo chmod 0755 /srv/persist + sudo chmod 0755 /srv/persist && \ + sudo chmod 0755 /var/opt/wineprefix64 # latest server build RUN curl -Lo /tmp/LCEServerWindows64.zip \ From 90649d8062f43498fcaef27e1221ef6a217138b1 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:19:12 +0300 Subject: [PATCH 16/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index aad2e16a27..a3cba897b1 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -52,6 +52,8 @@ RUN echo "mclce ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/mclce \ USER mclce +WORKDIR /srv/mc + # ownership RUN sudo chmod 0755 /srv/mc && \ sudo chmod 0755 /srv/persist && \ @@ -69,6 +71,4 @@ RUN chmod 0755 /usr/local/bin/entrypoint.sh \ && mkdir -p /var/opt/wineprefix64 /srv/mc \ && test -f /srv/mc/Minecraft.Server.exe -WORKDIR /srv/mc - ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/entrypoint.sh"] From c60fa7e19f67cf2f4651af17625dac13af214d9b Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:26:00 +0300 Subject: [PATCH 17/20] Update entrypoint.sh --- docker/dedicated-server/entrypoint.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/dedicated-server/entrypoint.sh b/docker/dedicated-server/entrypoint.sh index c3b2349ee3..2fd4e2a399 100644 --- a/docker/dedicated-server/entrypoint.sh +++ b/docker/dedicated-server/entrypoint.sh @@ -43,6 +43,7 @@ if [ ! -f "$SERVER_EXE" ]; then fi mkdir -p "${PERSIST_DIR}" +chmod 0755 "${PERSIST_DIR}" # created because it is not implemented on the server side mkdir -p "${PERSIST_DIR}/GameHDD" From a5ca388b637ad6aa769528ce87b6068d1c093829 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:26:03 +0300 Subject: [PATCH 18/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index a3cba897b1..aad2e16a27 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -52,8 +52,6 @@ RUN echo "mclce ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/mclce \ USER mclce -WORKDIR /srv/mc - # ownership RUN sudo chmod 0755 /srv/mc && \ sudo chmod 0755 /srv/persist && \ @@ -71,4 +69,6 @@ RUN chmod 0755 /usr/local/bin/entrypoint.sh \ && mkdir -p /var/opt/wineprefix64 /srv/mc \ && test -f /srv/mc/Minecraft.Server.exe +WORKDIR /srv/mc + ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/entrypoint.sh"] From e7528c9d84699d3556868ad407e9221235391aa5 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:34:34 +0300 Subject: [PATCH 19/20] Update Dockerfile --- docker/dedicated-server/Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docker/dedicated-server/Dockerfile b/docker/dedicated-server/Dockerfile index aad2e16a27..babd324fc1 100644 --- a/docker/dedicated-server/Dockerfile +++ b/docker/dedicated-server/Dockerfile @@ -53,9 +53,7 @@ RUN echo "mclce ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/mclce \ USER mclce # ownership -RUN sudo chmod 0755 /srv/mc && \ - sudo chmod 0755 /srv/persist && \ - sudo chmod 0755 /var/opt/wineprefix64 +RUN mkdir -p /srv/mc && sudo chmod 0755 /srv/mc # latest server build RUN curl -Lo /tmp/LCEServerWindows64.zip \ From e8d691aadfbeabf7ce9bf4b4e4fcb3e8fadc8efb Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Fri, 27 Mar 2026 10:35:21 +0300 Subject: [PATCH 20/20] Update entrypoint.sh --- docker/dedicated-server/entrypoint.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/dedicated-server/entrypoint.sh b/docker/dedicated-server/entrypoint.sh index 2fd4e2a399..b63eb175d6 100644 --- a/docker/dedicated-server/entrypoint.sh +++ b/docker/dedicated-server/entrypoint.sh @@ -60,6 +60,7 @@ ln -sfn "${PERSIST_DIR}/GameHDD" "Windows64/GameHDD" if [ ! -d "${WINEPREFIX}" ] || [ -z "$(ls -A "${WINEPREFIX}" 2>/dev/null)" ]; then mkdir -p "${WINEPREFIX}" + sudo chmod 0755 "${WINEPREFIX}" fi args=(