panel v0.9.1 — open-source game server manager
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# panel-native Empyrion runtime image.
|
||||
#
|
||||
# Empyrion's dedicated server is a Windows-only Unity build, so we bring
|
||||
# along just enough Wine + Xvfb to host it headlessly. SteamCMD is NOT
|
||||
# installed here — the panel's generic updater sidecar uses the official
|
||||
# steamcmd image and writes into our /game volume.
|
||||
#
|
||||
# Expected runtime layout inside the container:
|
||||
# /game — SteamCMD-installed Windows build (panel volume)
|
||||
# /game/DedicatedServer/DedicatedServer64/
|
||||
# EmpyrionDedicated.exe — the dedicated server binary
|
||||
# /game-saves — saves, dedicated.yaml, admin files
|
||||
# /entrypoint.sh — boot Xvfb, launch exe under Wine
|
||||
|
||||
FROM debian:12-slim
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive \
|
||||
TZ=Etc/UTC \
|
||||
LANG=en_US.UTF-8 \
|
||||
LC_ALL=en_US.UTF-8 \
|
||||
WINEDEBUG=-all \
|
||||
WINEPREFIX=/home/panel/.wine \
|
||||
DISPLAY=:99
|
||||
|
||||
# Wine pulls in ~500 MB of deps; keep to the 64-bit stack (Empyrion's
|
||||
# dedicated binary is x86_64). winetricks isn't strictly required — the
|
||||
# game's Mono runtime ships with the install — but it's 8 MB and saves
|
||||
# future debugging headaches.
|
||||
RUN dpkg --add-architecture i386 \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
locales \
|
||||
tini \
|
||||
curl \
|
||||
xvfb \
|
||||
xauth \
|
||||
wine64 \
|
||||
wine \
|
||||
winbind \
|
||||
cabextract \
|
||||
procps \
|
||||
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
|
||||
&& locale-gen \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Unprivileged user owning /game + /game-saves. The SteamCMD sidecar
|
||||
# writes as root (official image runs as root); we chown once at start
|
||||
# time so the long-running game process stays non-root.
|
||||
RUN groupadd -g 1000 panel \
|
||||
&& useradd -u 1000 -g 1000 -m -s /bin/bash panel \
|
||||
&& mkdir -p /game /game-saves \
|
||||
&& chown -R panel:panel /game /game-saves /home/panel
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
# Pre-staged EPM mod (TCP relay for the Eleon Mod API). Entrypoint copies
|
||||
# this into /game/Content/Mods/EPM/ on first boot so every empyrion
|
||||
# instance comes EAH-bridge-ready out of the box. See modules/empyrion/epm-mod/.
|
||||
COPY epm-mod/ /opt/panel-epm/
|
||||
|
||||
# Empyrion default ports (see module.yaml comment for reference).
|
||||
EXPOSE 30000/udp 30001/udp 30002/udp 30003/udp
|
||||
EXPOSE 30004/tcp
|
||||
|
||||
ENTRYPOINT ["/usr/bin/tini", "--", "/entrypoint.sh"]
|
||||
Reference in New Issue
Block a user