version: '3.8' services: Vora.api: image: ${DOCKER_REGISTRY-}voraapi build: context: . dockerfile: src/Vora.Api/Dockerfile restart: unless-stopped security_opt: - no-new-privileges:true environment: - PUID=${PUID:-99} - PGID=${PGID:-100} - ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development} - ASPNETCORE_HTTP_PORTS=8080 - ConnectionStrings__DefaultConnection=${DB_CONNECTION_STRING} - StoragePaths__CustomArtwork=/app/data/custom_artwork - StoragePaths__OriginalArtworkCache=/app/data/original_artwork_cache - StoragePaths__EpgCache=/app/data/iptv/epg_cache - StoragePaths__IptvDvr=/app/data/iptv/dvr - StoragePaths__UserImages=/app/data/users - StoragePaths__Plugins=/app/data/plugins - StoragePaths__Logs=/app/data/logs - StoragePaths__Backups=/app/data/backups - StoragePaths__DataProtection=/app/data/dp-keys - StoragePaths__VideoThumbnails=/app/data/video-thumbnails ports: - "${Vora_PORT:-8080}:8080" volumes: - ${MEDIA_MOVIES:-D:\TestServer\Movies}:/media/movies - ${MEDIA_SHOWS:-D:\TestServer\Shows}:/media/shows - ${MEDIA_MUSIC:-D:\TestServer\Music}:/media/music - ${VORA_DATA:-./Vora-data}:/app/data - ${VORA_TRANSCODE:-./Vora-transcode}:/transcode # Intel or AMD GPU (Quick Sync / VAAPI): uncomment to pass the render # devices in. Vora finds and tests them at startup; the start script # adds the app's user to the device's group, so nothing else is needed. # devices: # - /dev/dri:/dev/dri deploy: resources: reservations: devices: - driver: nvidia count: 1 # Capability map for the NVIDIA Container Toolkit: # gpu, video: NVDEC + NVENC + basic CUDA (hardware decode # + encode for h264_nvenc / hevc_nvenc). # compute: required for OpenCL on hosts that expose it # (Linux/Unraid). Not exposed on WSL2-on-Docker, so # it's a no-op there but harmless. # graphics: required for Vulkan. The toolkit mounts the # NVIDIA Vulkan ICD (libGLX_nvidia.so.0) only when # this capability is set. This is what enables # ffmpeg's libplacebo HDR tonemap filter on the GPU # across both Linux and WSL2. capabilities: [gpu, video, compute, graphics] # Unraid: the ONLY required Extra Parameter is --runtime=nvidia # The image already ships NVIDIA_VISIBLE_DEVICES=all and # NVIDIA_DRIVER_CAPABILITIES=all, so libnvidia-container injects # libcuda.so.1 + the NVENC/NVDEC and Vulkan/OpenCL driver libs on any # host that launches it with the NVIDIA runtime — including Unraid's # --runtime=nvidia path, which does NOT read the compose deploy # capabilities list above. Do not override NVIDIA_DRIVER_CAPABILITIES # with a narrower value (e.g. just "utility") — that omits libcuda and # breaks CUDA transcoding.