Skip to content

[BUG] Steam Game Streaming is not working #9

Closed

Description

@QuaiGoner

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Client does not connect - you can spam "Streaming" button , but no stream is started

Expected Behavior

  1. Load a game in Steam Container on Server
  2. Start a Steam client on a Client
  3. Try to start game session via streaming on a client
  4. Game launches in container
  5. Stream starts on a container

Steps To Reproduce

  1. Load a game in Steam Container on Server
  2. Start a Steam client on a Client
  3. Try to start game session via streaming on a client
  4. Game launches in container
  5. Client does not connect - you can spam "Connect" button , but no stream is started, but it indicates that server correctly starts a game and reports that it is ready for streaming

Environment

- OS: TrueNAS SCALE 25.04
- How docker service was installed: pre-installed
- OS Client 1 - Steam Deck Steam OS Latest
- OS Client 2 - Windows 11

CPU architecture

x86-64

Docker creation

docker-compose:
services:
  steam:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4096M
    devices:
      - /dev/dri:/dev/dri
    environment:
      NVIDIA_VISIBLE_DEVICES: void
      PIXELFLUX_WAYLAND: 'true'
    group_add:
      - 44
      - 107
      - 568
    hostname: server101
    image: lscr.io/linuxserver/steam:latest
    network_mode: host
    platform: linux/amd64
    privileged: True
    pull_policy: missing
    restart: unless-stopped
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    shm_size: 1gb
    stdin_open: False
    tty: False
    volumes:
      - bind:
          create_host_path: False
          propagation: rprivate
        read_only: False
        source: /mnt/apps101/docker101/steamheadless/config
        target: /config
        type: bind
      - bind:
          create_host_path: False
          propagation: rprivate
        read_only: False
        source: /mnt/vault101/vault101/Games101/Emulation/roms/ports
        target: /mnt/vault101/vault101/Games101/Emulation/roms/ports
        type: bind

Container logs

no specifc logs:


size: 1354, First 16 bytes: 4d6963726f736f667420582d426f7820
INFO:selkies_gamepad:Gamepad /tmp/selkies_js3.sock Client  (JS): Handler started.
INFO:selkies_gamepad:Gamepad /tmp/selkies_js3.sock Client  (JS): Preparing to send config payload. Length: 1360, Expected C size: 1354, First 16 bytes: 4d6963726f736f667420582d426f7820
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1003.sock Client  (EVDEV): Handler started.
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1003.sock Client  (EVDEV): Preparing to send config payload. Length: 1360, Expected C size: 1354, First 16 bytes: 4d6963726f736f667420582d426f7820
INFO:selkies_gamepad:Gamepad /tmp/selkies_js0.sock Client  (JS): Received arch specifier: 8 bytes (64-bit).
INFO:selkies_gamepad:Gamepad /tmp/selkies_js0.sock Client  (JS): Added to active list. Total JS clients: 4.
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1000.sock Client  (EVDEV): Received arch specifier: 8 bytes (64-bit).
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1000.sock Client  (EVDEV): Added to active list. Total EVDEV clients: 8.
INFO:selkies_gamepad:Gamepad /tmp/selkies_js1.sock Client  (JS): Received arch specifier: 8 bytes (64-bit).
INFO:selkies_gamepad:Gamepad /tmp/selkies_js1.sock Client  (JS): Added to active list. Total JS clients: 4.
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1001.sock Client  (EVDEV): Received arch specifier: 8 bytes (64-bit).
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1001.sock Client  (EVDEV): Added to active list. Total EVDEV clients: 6.
INFO:selkies_gamepad:Gamepad /tmp/selkies_js2.sock Client  (JS): Received arch specifier: 8 bytes (64-bit).
INFO:selkies_gamepad:Gamepad /tmp/selkies_js2.sock Client  (JS): Added to active list. Total JS clients: 4.
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1002.sock Client  (EVDEV): Received arch specifier: 8 bytes (64-bit).
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1002.sock Client  (EVDEV): Added to active list. Total EVDEV clients: 6.
INFO:selkies_gamepad:Gamepad /tmp/selkies_js3.sock Client  (JS): Received arch specifier: 8 bytes (64-bit).
INFO:selkies_gamepad:Gamepad /tmp/selkies_js3.sock Client  (JS): Added to active list. Total JS clients: 4.
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1003.sock Client  (EVDEV): Received arch specifier: 8 bytes (64-bit).
INFO:selkies_gamepad:Gamepad /tmp/selkies_event1003.sock Client  (EVDEV): Added to active list. Total EVDEV clients: 6.
INFO:webrtc_input:Set clipboard content, length: 19
INFO:webrtc_input:Set clipboard content, length: 19
INFO:webrtc_input:Set clipboard content, length: 19
INFO:webrtc_input:Set clipboard content, length: 19
INFO:data_websocket:Cleaning up Data WS handler for ('127.0.0.1', 42006) (Display ID: primary)...
INFO:data_websocket:Client for 'primary' disconnected. Removing and triggering full display reconfiguration.
INFO:data_websocket:Starting display reconfiguration...
INFO:data_websocket:Stopping all existing capture and backpressure tasks...
[Wayland] Capture loop stopped.
INFO:data_websocket:All capture instances, senders, and backpressure tasks stopped.
WARNING:data_websocket:No display clients connected. Video pipelines remain stopped.
INFO:data_websocket:Video chunk sender for 'primary' cancelled.
INFO:data_websocket:Video chunk sender for 'primary' finished.
INFO:data_websocket:Reconfiguration process complete (state unlocked).
INFO:data_websocket:Keyboard reset completed (('127.0.0.1', 42006)) disconnect.
INFO:data_websocket:Last client (('127.0.0.1', 42006)) disconnected. All pipelines should have been stopped by reconfigure_displays.
INFO:main:Initiating unified pipeline shutdown...
WARNING:data_websocket:Reconfiguration already in progress. Ignoring concurrent request.
INFO:data_websocket:Stopping pcmflux audio pipeline...
INFO:data_websocket:pcmflux audio chunk broadcasting task cancelled.
INFO:data_websocket:pcmflux audio chunk broadcasting task finished.
[pcmflux] Stop requested. Cleaning up capture loop...
[pcmflux] Audio capture loop finished. Resources released.
INFO:data_websocket:pcmflux audio pipeline stopped.
INFO:main:Unified pipeline shutdown complete.
INFO:data_websocket:Data WS handler for ('127.0.0.1', 42006) finished all cleanup.
INFO:data_websocket:Stats sender: WS connection closed.

Activity

  1. github-actions commented on Jun 19, 2026

    @github-actions

    Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.

  2. QuaiGoner commented on Jun 19, 2026

    @QuaiGoner
    Author

    After some tries on SteamDeck ive got a crash of GUI in container with following error in logs:

    INFO:webrtc_input:Set clipboard content, length: 18
    INFO:webrtc_input:Clipboard changed. Sending content (text/plain)
    INFO:data_websocket:Received STOP_VIDEO for 'primary'. Stopping stream.
    INFO:data_websocket:Stopping all streams for display 'primary'...
    [Wayland] Capture loop stopped.
    INFO:data_websocket:Successfully stopped all streams for display 'primary'.
    INFO:data_websocket:Video chunk sender for 'primary' cancelled.
    INFO:data_websocket:Video chunk sender for 'primary' finished.
    INFO:data_websocket:Received START_VIDEO for 'primary'. Starting its stream.
    INFO:data_websocket:Found existing layout for 'primary'. Starting capture with: {'x': 0, 'y': 0, 'w': 1920, 'h': 908}
    INFO:data_websocket:Preparing to start capture for display='primary': Res=1920x908, Offset=0x0
    INFO:main:Parsed DRI node '/dev/dri/renderD128' to index 0.
    INFO:data_websocket:Registered Wayland cursor callback for 'primary'
    INFO:data_websocket:Video chunk sender started for display 'primary'.
    INFO:data_websocket:SUCCESS: Capture started for 'primary'.
    [Wayland] Encode Node Index: 0 | Driver: ../../../../bus/pci/drivers/amdgpu
    [Wayland] Initializing Unified VAAPI Encoder...
    [Wayland] VAAPI Encoder initialized successfully.
    [Wayland] Decision: Zero-Copy path active.
    Stream settings active -> Res: 1920x908 | FPS: 60.0 | Stripes: 1 | Mode: H264 (VAAPI) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f
    INFO:webrtc_input:Set clipboard content, length: 18
    INFO:data_websocket:Cleaning up Data WS handler for ('127.0.0.1', 60148) (Display ID: primary)...
    INFO:data_websocket:Client for 'primary' disconnected. Removing and triggering full display reconfiguration.
    INFO:data_websocket:Starting display reconfiguration...
    INFO:data_websocket:Stopping all existing capture and backpressure tasks...
    [Wayland] Capture loop stopped.
    INFO:data_websocket:All capture instances, senders, and backpressure tasks stopped.
    WARNING:data_websocket:No display clients connected. Video pipelines remain stopped.
    INFO:data_websocket:Video chunk sender for 'primary' cancelled.
    INFO:data_websocket:Video chunk sender for 'primary' finished.
    INFO:data_websocket:Reconfiguration process complete (state unlocked).
    INFO:data_websocket:Keyboard reset completed (('127.0.0.1', 60148)) disconnect.
    INFO:data_websocket:Last client (('127.0.0.1', 60148)) disconnected. All pipelines should have been stopped by reconfigure_displays.
    INFO:main:Initiating unified pipeline shutdown...
    WARNING:data_websocket:Reconfiguration already in progress. Ignoring concurrent request.
    INFO:data_websocket:Stopping pcmflux audio pipeline...
    INFO:data_websocket:pcmflux audio chunk broadcasting task cancelled.
    INFO:data_websocket:pcmflux audio chunk broadcasting task finished.
    [pcmflux] Stop requested. Cleaning up capture loop...
    [pcmflux] Audio capture loop finished. Resources released.
    INFO:data_websocket:pcmflux audio pipeline stopped.
    INFO:main:Unified pipeline shutdown complete.
    INFO:data_websocket:Data WS handler for ('127.0.0.1', 60148) finished all cleanup.
    INFO:data_websocket:Stats sender: WS connection closed.
    Waiting up to 5 seconds for desktop processes to terminate...
    /defaults/startwm_wayland.sh: line 42:   606 Aborted                 (core dumped) labwc > /dev/null 2>&1
    All desktop processes terminated cleanly.
    
  3. thelamer commented on Jun 19, 2026

    @thelamer
    Member

    https://github.com/linuxserver/docker-steam/blob/master/README.md?plain=1#L63-L64

    This image is only made to access and play games via a web browser, it is not meant to do what you are doing I would highly recommend using Games on Whales for your usecase and leveraging Sunshine/Moonlight.

  4. QuaiGoner commented on Jun 19, 2026

    @QuaiGoner
    Author

    Thank you for response, i only thougth about it working because its one of a core Steam functionality, but i get it.

    Maybe if want to to revisit it later, here is some logs from the server about why session is not started:

    ==> console-linux.txt <==
    [2026-06-19 23:30:47] ERROR: ld.so: object '/usr/lib/selkies_joystick_interposer_32.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    [2026-06-19 23:30:47] ERROR: ld.so: object '/usr/lib/libudev.so.1.0.0-fake_32' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
    [2026-06-19 23:30:47] ERROR: ld.so: object '/usr/lib/selkies_joystick_interposer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
    [2026-06-19 23:30:47] ERROR: ld.so: object '/usr/lib/libudev.so.1.0.0-fake' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
    [2026-06-19 23:30:47] 06/19 23:30:47 minidumps folder is set to /tmp/dumps
    [2026-06-19 23:30:47] 06/19 23:30:47 Init: Installing breakpad exception handler for appid(steam_monitor)/version(20260609211042)/tid(104886)
    [2026-06-19 23:30:47] 06/19 23:30:47 Init: Installing breakpad exception handler for appid(steam_monitor)/version(1.0)/tid(104886)
    
    ==> console_log.txt <==
    [2026-06-19 23:41:23] GameAction [AppID 2508816897, ActionID 15] : LaunchApp changed task to Completed with ""
    
    ==> streaming_log.txt <==
    [2026-06-19 23:41:23][10548.396647] Clearing capture only gameID
    
    ==> console-linux.txt <==
    [2026-06-19 23:41:23] Clearing capture only gameID
    [2026-06-19 23:41:23] 
    ==> streaming_log.txt <==
    [2026-06-19 23:41:23][10548.413072] Streaming initialized and listening on port 27031
    
    ==> console-linux.txt <==
    Streaming initialized and listening on port 27031
    
    ==> console_log.txt <==
    [2026-06-19 23:41:23] Warning: thread priority outside allowed range 15
    [2026-06-19 23:41:23] Warning: failed to set thread priority: set failed for 15: setpriority() failed
    
    ==> appinfo_log.txt <==
    
    ==> console-linux.txt <==
    [2026-06-19 23:41:29] reaping pid: 110700 -- IPC:CSteamEngin
    
    ==> appinfo_log.txt <==
    
    ==> cef_log.txt <==
    [1087:1105:0619/234139.082500:WARNING:net_errors_posix.cc(127)] Unknown error Required key not available (126) mapped to net::ERR_FAILED
    
    
    
    
  5. thelamer commented on Jun 19, 2026

    @thelamer
    Member

    I mean it is technically possible, but it breaks from the purpose of this image, stuff like GOW locks the resolution and uses gamescope to specifically create a compatible env while the target here for this image is to actually play the games using your web browser.

    The userspace gamepad interposer could definitely be messing with it, I know steam remote play needs udev and such to properly setup its remote controllers.

  6. QuaiGoner commented on Jun 19, 2026

    @QuaiGoner
    Author

    I agree, but yours image have some advantages:

    • No need for dummy plug (like with steam-headless)
    • Single image app
    • Installable on TrueNAS like systems

    Also i dont think problem is in gamepad interposer, i added some logs to the post above

  7. QuaiGoner commented on Jun 20, 2026

    @QuaiGoner
    Author

    Problem was in my setup - hardware accelerated streaming does not work, but if i disable it in advanced settings in steam container - it works (partially - there is known limitation around steam input which makes using steamdeck impossible with that and also perfomance drasticaly worsens when browser windows is closed)

  8. moved this from Issues to Done in Issue & PR Trackeron Jun 20, 2026
  9. Joly0 commented on Oct 16, 2026

    @Joly0

    Hey, btw, i made a docker-mod for this here https://github.com/Joly0/docker-mods/tree/steam-remoteplay that works on my setup, not sure if it works for others aswell.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions