78 lines
1.8 KiB
Docker
78 lines
1.8 KiB
Docker
FROM ubuntu:22.04
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV WINEPREFIX=/data/wineprefix
|
|
ENV DXVK_VERSION=2.3
|
|
ENV STEAMCMD_DIR=/opt/steamcmd
|
|
|
|
# Enable 32-bit architecture and install Wine + Vulkan + dependencies
|
|
RUN dpkg --add-architecture i386 && \
|
|
apt update && \
|
|
apt install -y --no-install-recommends \
|
|
ca-certificates \
|
|
wget \
|
|
unzip \
|
|
tar \
|
|
xvfb \
|
|
xauth \
|
|
x11-apps \
|
|
libx11-6 \
|
|
libx11-dev \
|
|
libxext6 \
|
|
libxext-dev \
|
|
libxrender1 \
|
|
libxrender-dev \
|
|
libxrandr2 \
|
|
libxrandr-dev \
|
|
libfreetype6 \
|
|
libfreetype6-dev \
|
|
libfontconfig1 \
|
|
libfontconfig1-dev \
|
|
libvulkan1 \
|
|
libvulkan1:i386 \
|
|
mesa-vulkan-drivers \
|
|
mesa-vulkan-drivers:i386 \
|
|
wine64 \
|
|
wine32 \
|
|
winbind \
|
|
python3 \
|
|
git \
|
|
curl \
|
|
cabextract \
|
|
fonts-wine \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Initialize Wine prefix (prevents first-run crashes)
|
|
RUN mkdir -p /data/wineprefix && \
|
|
wine64 wineboot --init || true
|
|
|
|
# Install Node 18 LTS
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
|
|
apt install -y nodejs
|
|
|
|
# SteamCMD
|
|
RUN mkdir -p ${STEAMCMD_DIR} && \
|
|
cd ${STEAMCMD_DIR} && \
|
|
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && \
|
|
tar -xvzf steamcmd_linux.tar.gz
|
|
|
|
# DXVK
|
|
RUN mkdir -p /data/dxvk && \
|
|
cd /data/dxvk && \
|
|
wget https://github.com/doitsujin/dxvk/releases/download/v${DXVK_VERSION}/dxvk-${DXVK_VERSION}.tar.gz && \
|
|
tar -xvzf dxvk-${DXVK_VERSION}.tar.gz
|
|
|
|
# Manager service
|
|
WORKDIR /app
|
|
COPY package*.json ./
|
|
RUN npm install
|
|
COPY . .
|
|
|
|
# Entrypoint
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
VOLUME ["/data"]
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|