Plenty of setups may have either nvidia container toolkit without the runtime wrapper, or no toolkit at all. These updated templates allow for all those cases while still providing support for NVIDIA GPUs.
112 lines
3.6 KiB
YAML
112 lines
3.6 KiB
YAML
---
|
|
version: "3.9"
|
|
|
|
services:
|
|
steam-headless:
|
|
image: josh5/steam-headless:latest
|
|
restart: unless-stopped
|
|
shm_size: ${SHM_SIZE}
|
|
ipc: host # Could also be set to 'shareable'
|
|
ulimits:
|
|
nofile:
|
|
soft: 1024
|
|
hard: 524288
|
|
cap_add:
|
|
- NET_ADMIN
|
|
- SYS_ADMIN
|
|
- SYS_NICE
|
|
security_opt:
|
|
- seccomp:unconfined
|
|
- apparmor:unconfined
|
|
|
|
# GPU PASSTHROUGH
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
# Enable support for NVIDIA GPUs.
|
|
#
|
|
# Ref: https://docs.docker.com/compose/gpu-support/#enabling-gpu-access-to-service-containers
|
|
devices:
|
|
- capabilities: [gpu]
|
|
device_ids: ["${NVIDIA_VISIBLE_DEVICES}"]
|
|
|
|
# NETWORK:
|
|
network_mode: host
|
|
hostname: ${NAME}
|
|
extra_hosts:
|
|
- "${NAME}:127.0.0.1"
|
|
|
|
# ENVIRONMENT:
|
|
## Read all config variables from the .env file
|
|
environment:
|
|
# System
|
|
- TZ=${TZ}
|
|
- USER_LOCALES=${USER_LOCALES}
|
|
- DISPLAY=${DISPLAY}
|
|
# User
|
|
- PUID=${PUID}
|
|
- PGID=${PGID}
|
|
- UMASK=${UMASK}
|
|
- USER_PASSWORD=${USER_PASSWORD}
|
|
# Mode
|
|
- MODE=${MODE}
|
|
# Web UI
|
|
- WEB_UI_MODE=${WEB_UI_MODE}
|
|
- ENABLE_VNC_AUDIO=${ENABLE_VNC_AUDIO}
|
|
- PORT_NOVNC_WEB=${PORT_NOVNC_WEB}
|
|
- NEKO_NAT1TO1=${NEKO_NAT1TO1}
|
|
# Steam
|
|
- ENABLE_STEAM=${ENABLE_STEAM}
|
|
- STEAM_ARGS=${STEAM_ARGS}
|
|
# Sunshine
|
|
- ENABLE_SUNSHINE=${ENABLE_SUNSHINE}
|
|
- SUNSHINE_USER=${SUNSHINE_USER}
|
|
- SUNSHINE_PASS=${SUNSHINE_PASS}
|
|
# Xorg
|
|
- ENABLE_EVDEV_INPUTS=${ENABLE_EVDEV_INPUTS}
|
|
# Nvidia specific config
|
|
- NVIDIA_DRIVER_CAPABILITIES=${NVIDIA_DRIVER_CAPABILITIES}
|
|
- NVIDIA_VISIBLE_DEVICES=${NVIDIA_VISIBLE_DEVICES}
|
|
- NVIDIA_DRIVER_VERSION=${NVIDIA_DRIVER_VERSION}
|
|
|
|
# DEVICES:
|
|
devices:
|
|
# Use the host fuse device [REQUIRED].
|
|
- /dev/fuse
|
|
# Add the host uinput device [REQUIRED].
|
|
- /dev/uinput
|
|
# Add AMD/Intel HW accelerated video encoding/decoding devices [OPTIONAL].
|
|
#- /dev/dri
|
|
# Add NVIDIA HW accelerated devices [OPTIONAL - If you use the nvidia container toolkit, this is not needed].
|
|
#- /dev/nvidia0
|
|
#- /dev/nvidiactl
|
|
#- /dev/nvidia-modeset
|
|
#- /dev/nvidia-uvm
|
|
#- /dev/nvidia-uvm-tools
|
|
#- /dev/nvidia-caps/nvidia-cap1
|
|
#- /dev/nvidia-caps/nvidia-cap2
|
|
# Ensure container access to devices 13:*
|
|
device_cgroup_rules:
|
|
- 'c 13:* rmw'
|
|
|
|
# VOLUMES:
|
|
volumes:
|
|
# The location of your home directory.
|
|
- ${HOME_DIR}/:/home/default/:rw
|
|
|
|
# The location where all games should be installed.
|
|
# This path needs to be set as a library path in Steam after logging in.
|
|
# Otherwise, Steam will store games in the home directory above.
|
|
- ${GAMES_DIR}/:/mnt/games/:rw
|
|
|
|
# The Xorg socket. This will be shared with other containers so they can access the X server.
|
|
# Select only one option or leave commented out to not share the Xorg socket with any other Docker containers.
|
|
# Option #1) Start a X server in the container to share with any other containers.
|
|
#- /opt/container-data/steam-headless/.X11-unix/:/tmp/.X11-unix/:rw
|
|
# Option #2) Use an existing X server running on the host.
|
|
#- /tmp/.X11-unix/:/tmp/.X11-unix/:rw
|
|
|
|
# Pulse audio socket. This will be shared with other containers so they can access the audio sink.
|
|
# Leave commented out to not share the pulse socket with any other Docker containers.
|
|
#- /opt/container-data/steam-headless/pulse/:/tmp/pulse/:rw
|