mirror of
https://github.com/nestriness/nestri.git
synced 2025-12-12 08:45:38 +02:00
## Description **What(what issue does this code solve/what feature does it add):** We do not need the ffmpeg and recorder all sitting differently, as this will increase our docker image size **How(how does it solve it):** ## Required Checklist: - [ ] I have added any necessary documentation and comments in my code (where appropriate) - [ ] I have added tests to make sure my code runs in all contexts ## Further comments
135 lines
3.9 KiB
Docker
135 lines
3.9 KiB
Docker
#This contains all the necessary libs for the server to work.
|
|
#NOTE: KEEP THIS IMAGE AS LEAN AS POSSIBLE.
|
|
FROM ghcr.io/wanjohiryan/netris/recorder:nightly as recorder
|
|
|
|
FROM ghcr.io/wanjohiryan/netris/ffmpeg:nightly
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
TIMEZONE=Africa/Nairobi
|
|
|
|
#Install base libs
|
|
RUN apt update && \
|
|
dpkg --add-architecture i386 && \
|
|
apt install -y \
|
|
software-properties-common \
|
|
curl \
|
|
libcap2-bin \
|
|
apt-transport-https \
|
|
apt-utils \
|
|
wget \
|
|
git \
|
|
jq \
|
|
locales \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& locale-gen en_US.UTF-8
|
|
|
|
#Set language variables
|
|
ENV LANG=en_US.UTF-8 \
|
|
LANGUAGE=en_US:en \
|
|
LC_ALL=en_US.UTF-8
|
|
|
|
# Expose NVIDIA libraries and paths
|
|
ENV PATH=/usr/local/nvidia/bin:${PATH} \
|
|
LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 \
|
|
# Make all NVIDIA GPUs visible by default
|
|
NVIDIA_VISIBLE_DEVICES=all \
|
|
# All NVIDIA driver capabilities should preferably be used, check `NVIDIA_DRIVER_CAPABILITIES` inside the container if things do not work
|
|
NVIDIA_DRIVER_CAPABILITIES=all \
|
|
# Disable VSYNC
|
|
__GL_SYNC_TO_VBLANK=0
|
|
|
|
ENV XDG_RUNTIME_DIR=/tmp/runtime-user \
|
|
# DISPLAY=:0 \
|
|
WAYLAND_DISPLAY=wayland-0 \
|
|
PUID=0 \
|
|
PGID=0 \
|
|
HOME="/root" \
|
|
UNAME="root"
|
|
|
|
RUN apt-get update -y \
|
|
&& apt-get install -y --no-install-recommends \
|
|
libwayland-server0 \
|
|
libwayland-client0 \
|
|
xwayland \
|
|
xdg-user-dirs \
|
|
xdg-utils \
|
|
#Vulkan
|
|
mesa-vulkan-drivers \
|
|
mesa-vulkan-drivers:i386 \
|
|
libvulkan-dev \
|
|
libvulkan-dev:i386 \
|
|
vulkan-tools \
|
|
# Install OpenGL libraries
|
|
libglvnd0 \
|
|
libglvnd0:i386 \
|
|
libgl1 \
|
|
libgl1:i386 \
|
|
libglx0 \
|
|
libglx0:i386 \
|
|
libegl1 \
|
|
libegl1:i386 \
|
|
libgles2 \
|
|
libgles2:i386 \
|
|
libglu1 \
|
|
libglu1:i386 \
|
|
libsm6 \
|
|
libsm6:i386 \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf \
|
|
&& echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf \
|
|
# Configure Vulkan manually
|
|
&& VULKAN_API_VERSION=$(dpkg -s libvulkan1 | grep -oP 'Version: [0-9|\.]+' | grep -oP '[0-9]+(\.[0-9]+)(\.[0-9]+)') \
|
|
&& mkdir -pm755 /etc/vulkan/icd.d/ \
|
|
&& echo "{\n\
|
|
\"file_format_version\" : \"1.0.0\",\n\
|
|
\"ICD\": {\n\
|
|
\"library_path\": \"libGLX_nvidia.so.0\",\n\
|
|
\"api_version\" : \"${VULKAN_API_VERSION}\"\n\
|
|
}\n\
|
|
}" > /etc/vulkan/icd.d/nvidia_icd.json \
|
|
# Configure EGL manually
|
|
&& mkdir -pm755 /usr/share/glvnd/egl_vendor.d/ \
|
|
&& echo "{\n\
|
|
\"file_format_version\" : \"1.0.0\",\n\
|
|
\"ICD\": {\n\
|
|
\"library_path\": \"libEGL_nvidia.so.0\"\n\
|
|
}\n\
|
|
}" > /usr/share/glvnd/egl_vendor.d/10_nvidia.json \
|
|
# Prepare the XDG_RUNTIME_DIR for wayland
|
|
&& mkdir -p ${XDG_RUNTIME_DIR} && chmod 0700 ${XDG_RUNTIME_DIR}
|
|
|
|
#Install Mangohud, gamemode and gamescope
|
|
RUN apt-get update -y \
|
|
&& add-apt-repository -y multiverse \
|
|
&& apt-get install -y --no-install-recommends \
|
|
flatpak \
|
|
mangohud \
|
|
gamescope \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
#Install pulseaudio
|
|
RUN apt-get update -y \
|
|
&& apt-get install -y --no-install-recommends \
|
|
alsa-utils \
|
|
libasound2 \
|
|
libasound2-plugins \
|
|
pulseaudio \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY .scripts/ /usr/bin/netris/
|
|
COPY warp /usr/bin/netris/
|
|
RUN ls -la /usr/bin/netris \
|
|
&& chmod +x /usr/bin/netris/proton /usr/bin/netris/entrypoint.sh /usr/bin/netris/warp
|
|
|
|
#Install proton
|
|
RUN /usr/bin/netris/proton -i
|
|
|
|
ENV TINI_VERSION v0.19.0
|
|
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
|
|
RUN chmod +x /tini
|
|
ENTRYPOINT ["/tini", "--"]
|
|
|
|
COPY --from=recorder /usr/bin/gpu-screen-recorder /usr/bin/gpu-screen-recorder
|
|
COPY --from=recorder /usr/bin/gsr-kms-server /usr/bin/gsr-kms-server
|
|
|
|
CMD [ "/usr/bin/netris/entrypoint.sh" ] |