Full project state: rebuilt container + all updated files
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
/server/
|
||||
/data/
|
||||
*.log
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
# Dockerfile
|
||||
FROM ubuntu:22.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV WINEPREFIX=/data/wine/wineprefix
|
||||
ENV WINEARCH=win64
|
||||
ENV WINDROSE_HOME=/server
|
||||
ENV WINDROSE_R5=/server/R5
|
||||
ENV SAVED_DIR=/data/Saved
|
||||
|
||||
# Install WineHQ (correct method for Ubuntu 22.04)
|
||||
RUN dpkg --add-architecture i386 \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
ca-certificates wget curl gnupg2 software-properties-common \
|
||||
xvfb x11vnc pulseaudio cabextract unzip p7zip-full \
|
||||
&& mkdir -pm755 /etc/apt/keyrings \
|
||||
&& wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key \
|
||||
&& wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --install-recommends winehq-stable \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Intel ARC GPU + Vulkan support
|
||||
RUN dpkg --add-architecture i386 \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
mesa-vulkan-drivers mesa-vulkan-drivers:i386 \
|
||||
libvulkan1 libvulkan1:i386 \
|
||||
intel-media-va-driver-non-free vainfo \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install DXVK 2.3 (runtime DLLs only)
|
||||
RUN wget -O dxvk.tar.gz https://github.com/doitsujin/dxvk/releases/download/v2.3/dxvk-2.3.tar.gz \
|
||||
&& tar -xvf dxvk.tar.gz \
|
||||
&& rm dxvk.tar.gz \
|
||||
&& mv dxvk-2.3 /opt/dxvk
|
||||
|
||||
# Create directories for mounts
|
||||
RUN mkdir -p ${WINDROSE_HOME} ${WINDROSE_R5}
|
||||
@@ -0,0 +1,39 @@
|
||||
services:
|
||||
windrose:
|
||||
build: .
|
||||
container_name: windrose-servermanager
|
||||
|
||||
# IMPORTANT: Linux/TrueNAS paths ONLY
|
||||
volumes:
|
||||
- /mnt/tank/windrose/server:/server:rw
|
||||
- /mnt/tank/windrose/server/R5:/server/R5:rw
|
||||
- /mnt/tank/windrose/data/Saved:/data/Saved:rw
|
||||
|
||||
ports:
|
||||
- "27015:27015/udp"
|
||||
- "27015:27015/tcp"
|
||||
|
||||
environment:
|
||||
- WINEPREFIX=/data/wine/wineprefix
|
||||
- WINEARCH=win64
|
||||
- WINDROSE_HOME=/server
|
||||
- WINDROSE_R5=/server/R5
|
||||
- SAVED_DIR=/data/Saved
|
||||
|
||||
# Intel ARC GPU Vulkan
|
||||
- LIBVA_DRIVER_NAME=iHD
|
||||
- VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/intel_icd.x86_64.json:/usr/share/vulkan/icd.d/intel_icd.i686.json
|
||||
|
||||
# DXVK overrides
|
||||
- WINEDLLOVERRIDES=d3d11,dxgi,d3d10core,d3d9=native,builtin
|
||||
|
||||
# GPU passthrough
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
|
||||
# Required for Wine + GPU access
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
|
||||
tty: true
|
||||
stdin_open: true
|
||||
@@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
WINEPREFIX=${WINEPREFIX:-/data/wine/wineprefix}
|
||||
WINDROSE_HOME=${WINDROSE_HOME:-/server}
|
||||
WINDROSE_R5=${WINDROSE_R5:-/server/R5}
|
||||
SAVED_DIR=${SAVED_DIR:-/data/Saved}
|
||||
|
||||
SERVER_EXE="${WINDROSE_R5}/Binaries/Win64/WindroseServer-Win64-Shipping.exe"
|
||||
|
||||
export WINEDEBUG=-all
|
||||
export DISPLAY=
|
||||
export XDG_RUNTIME_DIR=/tmp/runtime-wine
|
||||
mkdir -p "$XDG_RUNTIME_DIR"
|
||||
|
||||
# Intel ARC Vulkan ICDs
|
||||
export VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/intel_icd.x86_64.json:/usr/share/vulkan/icd.d/intel_icd.i686.json"
|
||||
export LIBVA_DRIVER_NAME=iHD
|
||||
|
||||
DXVK_32="/opt/dxvk/x32"
|
||||
DXVK_64="/opt/dxvk/x64"
|
||||
|
||||
# Initialize wineprefix if missing
|
||||
if [ ! -d "$WINEPREFIX" ] || [ ! -f "$WINEPREFIX/system.reg" ]; then
|
||||
echo "Initializing wineprefix at $WINEPREFIX"
|
||||
mkdir -p "$WINEPREFIX"
|
||||
wineboot --init || true
|
||||
|
||||
echo "Installing DXVK DLLs into wineprefix..."
|
||||
WIN_SYS32="$WINEPREFIX/drive_c/windows/system32"
|
||||
WIN_SYSWOW64="$WINEPREFIX/drive_c/windows/syswow64"
|
||||
|
||||
mkdir -p "$WIN_SYS32" "$WIN_SYSWOW64"
|
||||
|
||||
cp "$DXVK_64"/*.dll "$WIN_SYS32"/
|
||||
cp "$DXVK_32"/*.dll "$WIN_SYSWOW64"/
|
||||
fi
|
||||
|
||||
# Force DXVK to be used
|
||||
export WINEDLLOVERRIDES="d3d11,dxgi,d3d10core,d3d9=native,builtin"
|
||||
|
||||
mkdir -p "$SAVED_DIR"
|
||||
|
||||
case "${1:-}" in
|
||||
run-server)
|
||||
echo "Starting Windrose dedicated server..."
|
||||
|
||||
if [ ! -f "$SERVER_EXE" ]; then
|
||||
echo "ERROR: Windrose server binary not found:"
|
||||
echo " $SERVER_EXE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "$(dirname "$SERVER_EXE")"
|
||||
|
||||
exec wine "$SERVER_EXE" \
|
||||
-log \
|
||||
-unattended \
|
||||
-nosteam \
|
||||
-savedir "$SAVED_DIR"
|
||||
;;
|
||||
|
||||
bash)
|
||||
exec /bin/bash
|
||||
;;
|
||||
|
||||
*)
|
||||
exec "$@"
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user