--- 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