Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Support] Josh5 - Steam (Headless)

Featured Replies

If anyone is currently having issues launching Steam-Headless or launching games (assuming you can get to the desktop), and you're using Nvidia drivers, try downgrading your drivers to v580.142. This is what finally fixed my issues.

  • 3 weeks later...
  • Replies 796
  • Views 276.8k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • Over the past month I have been slowly improving various aspects of Steam Headless. Here are some of the recently added updates: - Added neko as an optional alternative to noVNC (This must ne con

  • @ich777 was just telling me that apparently some games do not like some of the magic that exists in our Linux file systems and one possibly solution is to use a direct path to the disk rather than the

  • its already included - just set a docker environment variable ENABLE_SUNSHINE to true   it should be available after the container start at: https://[unraid-ip]:47990/ (where you can also en

Posted Images

Hey guys,

I need your help. I'm running Unraid 7.2.4/6.12.54-Unraid on a AM5/Ryzen 7 machine with a NVIDIA GeForce RTX 5060 Ti, currently

Nvidia Driver Version: 595.58.03

Open Source Kernel Module: Yes

Since the upgrade, I'm running into unfixable erros in a steam-headless container I'm using since more than a year for moonlight based game streaming to different devices in my network. At the moment, there's a X11 related boot loop, which I can't fix with my very basic knowledge/abilities and also some research didn't help. For details, see the attached log-File.

Claude 4.6 Sonnet Thinking states the following:
"The root cause is a confirmed bug in NVIDIA driver 595.58.03 combined with the RTX 5060 Ti (Blackwell GB206) in headless containers:

•  nv_drm_atomic_commit  flip timeouts in headless mode → Xorg watchdog kills it (exit 130)

• GSP firmware polls display hotplug every ~50ms with no monitor connected → infinite DFP loop →  Deleting GPU-0 

• No fix from NVIDIA yet for this specific scenario"

Is this plausible and actually the cause? I can't downgrade to for e.g. 580.142, since without the open source option, my GPU won't be detected anymore, so I'm stuck on 595.58.03 at the moment?!

I can't figure out, if there's a work around for me nad also others experiencing a comparable problem. Any help is very much appreciated! Thx in advance!

Kind regards,

Chris

steam-headless.log Xorg.55.log

Edited by anticholium

On 4/7/2026 at 3:43 PM, chesh said:

If anyone is currently having issues launching Steam-Headless or launching games (assuming you can get to the desktop), and you're using Nvidia drivers, try downgrading your drivers to v580.142. This is what finally fixed my issues.

How were you able to downgrade? If I downgrade the version to 580.142 (obviously non open source), my GPU is not detected (and consecutively not usable, sure). How to downgrade to open source 580.142? Thx!

nvidia plugin.png

I had the same issue, when attempting to downgrade my GPU drivers, my GPU was no longer detected. After a few reboots and going back to the latest driver, I was about to get the desktop to the steam headless container. And then I noticed sunshine was not starting.

I had to install the "user" version of sunshine and Firefox, for sunshine to work on restart again. From the software center.

22 minutes ago, Mrtj18 said:

I had the same issue, when attempting to downgrade my GPU drivers, my GPU was no longer detected. After a few reboots and going back to the latest driver, I was about to get the desktop to the steam headless container. And then I noticed sunshine was not starting.

I had to install the "user" version of sunshine and Firefox, for sunshine to work on restart again. From the software center.

Thanks for reaching out. I can downgrade, but the downgraded driver is the closed source version, which doesn't work with my 5060Ti...

@Josh.5 please help me out of my current steam-headless crashloop, I tried with my semi knowledge and different ai, but it seams an unbreakable downward spiral. It worked very well for more than a year, without any config change on a server with a RTX 5060Ti 16GB. The only thing which changed, were the unraid builds and the nvidia driver plugin, latest 595.58.03. Which logs or cli prompt result may I provide to get to to the crux of the matter. Thank you so much in advance!

Kind regards,

Chris

PS: it's mainly for my two sons, which really enjoyed a lot streamplay some games to the apple tv! They're so sad right now for me not being able to restart things successfully.

On 4/28/2026 at 12:19 PM, anticholium said:

@Josh.5 please help me out of my current steam-headless crashloop, I tried with my semi knowledge and different ai, but it seams an unbreakable downward spiral. It worked very well for more than a year, without any config change on a server with a RTX 5060Ti 16GB. The only thing which changed, were the unraid builds and the nvidia driver plugin, latest 595.58.03. Which logs or cli prompt result may I provide to get to to the crux of the matter. Thank you so much in advance!

Kind regards,

Chris

PS: it's mainly for my two sons, which really enjoyed a lot streamplay some games to the apple tv! They're so sad right now for me not being able to restart things successfully.

Try different driver versions. I know it's a pain, but I started at latest and downgraded to each driver lower that was compatible until one worked. I'm on a 3060 12GB and the v580.159 is what worked for my card.

1 hour ago, chesh said:

Try different driver versions. I know it's a pain, but I started at latest and downgraded to each driver lower that was compatible until one worked. I'm on a 3060 12GB and the v580.159 is what worked for my card.

That's exactly what I couldn't do, because I have a 5060Ti (Blackwell) and therefore dependent to the open kernel modules, which in turn prevented any driver downgrade under Unraid. – That said: the acutal unraid/driver upgrade (7.2.5/6.12.85/595.71.05) fixed the bug with "Failed to acquire modesetting permission" issue.

before:
NVIDIA(GPU-0): Failed to acquire modesetting permission
xorg FATAL
Sunshine Found [0] outputs
after:
xorg RUNNING
DISPLAY :55 OK
Sunshine Found [1] outputs
Detected display: HDMI-0 connected: true
Found H.264 encoder: h264_nvenc
Found HEVC encoder: hevc_nvenc
Found AV1 encoder: av1_nvenc

BUT: There is now a separate second issue in the container stack: a crash/restart loop related to Sunshine virtual input devices and /dev/input/event* handling. That appears to be separate from the original NVIDIA modesetting problem, which I was only able to "fix" with a crazy manual workaround. Ther should be a way better solution by fixing the issue upstream...

Edited by anticholium

if interested in any details

Manual workaround for input-device-related Sunshine/Xorg crash loop in steam-headless

In my setup, Moonlight could connect to Sunshine, but input devices were unreliable or missing inside the steam-headless container. Mouse and keyboard passthrough devices were created by Sunshine in /sys/class/input, but the matching /dev/input/event* nodes were missing at the moment Xorg tried to attach them. This caused repeated Xorg/Sunshine input failures, missing Moonlight input, and in some cases a startup loop where Sunshine, Xorg, desktop, and x11vnc did not stay up in the correct order.

The issue appears to be related to startup ordering and dynamic virtual input devices in a container environment:

  1. Xorg starts too early.

  2. Sunshine starts and creates virtual input devices via uinput.

  3. The corresponding /dev/input/event* and /dev/input/js* device nodes are not reliably present inside the container.

  4. Xorg attempts to attach devices that exist in sysfs but do not exist under /dev/input.

  5. Moonlight input either does not work, or services end up in a bad state.

Workaround concept

The workaround was to replace the default fragile parallel startup with a deterministic ordered startup:

  1. Disable the default autostart for udev, xorg, desktop, x11vnc, and sunshine.

  2. Start Xorg first and wait until display :55 is available.

  3. Start Sunshine so that it creates its virtual input devices.

  4. Watch /sys/class/input for Sunshine-created devices.

  5. Manually recreate the missing /dev/input/event* and /dev/input/js* character device nodes using the major/minor numbers from sysfs.

  6. Restart Xorg, desktop, and x11vnc so Xorg can attach the now-existing evdev devices.

  7. Restart Sunshine if it exited during the Xorg restart.

  8. Keep watching briefly for late-created devices, especially controller/gamepad nodes such as Sunshine X-Box One (virtual) pad.

Key implementation details

A persistent late init script was added:

/etc/cont-init.d/99-ordered-start-override.sh

This script runs after the image’s normal init scripts and overrides their autostart changes. It disables the fragile default autostart order and ensures only a custom ordered-start supervisor program is autostarted.

The custom supervisor program runs:

/usr/local/bin/steam-headless-ordered-start.sh

That script starts services in a controlled order and invokes the input repair script:

/usr/local/bin/sunshine-input-node-watch.sh

The input repair script scans sysfs paths such as:

/sys/class/input/event*/device/name
/sys/class/input/js*/device/name

It looks for devices whose names include:

passthrough
Sunshine

For each matching device, it reads the device major/minor number from:

/sys/class/input/<device>/dev

Then it recreates the matching node inside the container:

mknod /dev/input/<device> c <major> <minor>
chown root:input /dev/input/<device>
chmod 660 /dev/input/<device>

This is needed not only for mouse and keyboard:

Mouse passthrough
Mouse passthrough (absolute)
Keyboard passthrough

but also for late-created controller devices, for example:

Sunshine X-Box One (virtual) pad
/dev/input/event12
/dev/input/js2

Result

After applying the workaround:

  • WebVNC works.

  • Moonlight can connect.

  • Mouse and keyboard input work.

  • The Apple TV Bluetooth Nintendo Pro Controller is passed through successfully once Sunshine creates the virtual gamepad and the watcher creates the matching /dev/input/event* and /dev/input/js* nodes.

  • The setup survives a normal container restart because the override script is placed in /etc/cont-init.d/99-ordered-start-override.sh.

Persistence / restore note

Because this modifies files inside the container, the workaround should be backed up outside the container and restored after an image update. The important files are:

/etc/cont-init.d/99-ordered-start-override.sh
/usr/local/bin/steam-headless-ordered-start.sh
/usr/local/bin/sunshine-input-node-watch.sh

A backup was stored outside the container under:

/mnt/user/appdata/steam-headless-fix-backup/

After an image update, these files can be copied back into the container, marked executable, and the container restarted.

Edited by anticholium

Been a month of this issue now for me and No luck.

As a poster said awhile ago swap the GPU drivers around to older versions and that did not work for me at all (Ampere (Quadro), and my other Pascal (Quadro)),

Tried 3 other versions at that point.

So with the weekend here a little tinkering;

(Updated Unraid, 7.2.5 and the issue still persists, Nuked the docker, the image and the app data configs and issue still persists).

so decided to tinker IN the container while it was crashing.

just pull up the console, or bash into the container;

apt remove sunshine

And the container stopped crashing, of course not a fool proof solution but having it stable and going from there.

Then inside the container, installing latest sunshine from the repo (which is what it runs on at boot but had to see) and running it, gave some predictable response;

[2026-05-02 16:52:17.395]: Info: / Ignore any errors mentioned above, they are not relevant. I/

12026-05-02 16:52:17.395]: Info:

12026-05-02 16:52:17.395]: Info: Found H.264 encoder: h264 nvenc [nvenc)

12026-05-02 16:52:17.395]: Info: Found HEVC encoder: hevc nvenc [nvenc)

2026-05-02 16:52:17.395]: Info: Open the Web UI to set your new username and password and getting started

12026-05-02 16:52:17.396]: Info: File /root/.config/sunshine/sunshine_state.json doesn't exist

12026-05-02 16:52:17.396]: Info: Starting system tray

12026-05-02 16:52:17.397): Error: Failed to create client: Daemon not running

12026-05-02 16:52:17.399]: Info: Configuration UI available at [https://localhost:47990]

(sunshine: 21249): dbind-WARNING **: 16:52:17.426: AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.ally.Bus was not provided by any .service files

(sunshine:21249): libayatana-appindicator-WARNING **: 16:52:17.42: libayatana-appindicator is deprecated. Please use libayatana-appindicator-glib in newly written code.

12026-05-02 16:52:17.494]: Info: System tray created

12026-05-02 16:52:17.495]: Info: Starting main loop

(sunshine:21249): Gdk-CRITICAL **: 16:52:18.813: gdk_window_thaw_toplevel_updates: assertion 'window-›update_and_descendants_freeze_count > 0' failed

  • at which point the whole session crashes (VNC is taken down) and then restarts...

  • So it's showing to be stable when you are not using Sunshine in the container at all, so either x11 support or something?

    Beyond my understanding at that point.

    SIDE NOTE: doing an apt update inside the container for giggles solved that stupid 'reaped' PID error showing in the logs... so, thats nice :D

Upgrading: imagemagick imagemagick-7 - common imagemagick-7.q16 libjavascriptcoregtk-4.1-0 libmagickcore-7.q16-10 libmagickcore-7.q16-10-extra libmagickwand-7.q16-10 libwebkit2gtk-4.1-0

That is as far as I got up to at this point with this thing.

maybe someone else can poke around with it at least being in a stable state and work from there.

Unraid Ver:7.2.5

Current Unraid Nvidia Driver: 595.71.05

Other things:

Same issue on GitHub Here,

GitHub
No image preview

[Bug]: xorg exit status 1 · Issue #224 · Steam-Headless/d...

Describe the Bug Do you know any reason for my log output? I am doubting my driver version(it is 550.120) is the reason, but as you know, change nvidia driver version may cause kernel unmatched, I ...

Xorg related crashloop, somehow in the context of a udev associated script... – My complex manual workaround somewhere above wasn't very reliable, when there was a pause in input and/or temporary gamepad disconnection/reconnection, it mostly crashed. I was tired of further debugging and trying to fix issues manually.

Then I backuped everything and tried the current steam-headless via cli manually in a seperate test container, installed everything from scratch -> no crashloops, xorg and following processes running, stable, everything worked from the first try, steam, big picture, controller de-/reconnects, no issues.

I removed the temporary test-container and made a clean reinstall of steam-headless with latest container images via Unraid CA, fresh appdata folder, everything from scratch except Steam library. Container ended up in the know xorg initiated crashloop again!

So why was it, that the test container worked without any issues? I removed the whole steam-headless container and made a fresh and complete re-install via cli with docker commands etc., container starting without any issues, sunshine worked, moonlight pairing as expected, steam install, mapping of steam library, big picture -> games starting as they should, no crashes for many hour right now...

I don't get it!

Edited by anticholium

Dear All,

I was wondering if one of you may take pity on me and steer me in the correct direction. I am trying to set up the Steam Headless container. I believe I have followed the instructions and set up my container to work with my Nvidia GPU (Quadro P2200). Unfortunately, after I connect to the server and install Steam, the screen is blank barring the usual container tools options around the frame. I can also see that on the GPU Statistics App that Steam Headless is utilising the GPU as it is supposed to. I am open to all thoughts/solutions.

Unraid 7.2.5

Ryzen 5700X

Nvidia Driver 580.159.03

Thankyou

Black Rat

Quadro P2200.jpg

Steam Headless.jpg

12 minutes ago, Black Rat said:

Dear All,

I was wondering if one of you may take pity on me and steer me in the correct direction. I am trying to set up the Steam Headless container. I believe I have followed the instructions and set up my container to work with my Nvidia GPU (Quadro P2200). Unfortunately, after I connect to the server and install Steam, the screen is blank barring the usual container tools options around the frame. I can also see that on the GPU Statistics App that Steam Headless is utilising the GPU as it is supposed to. I am open to all thoughts/solutions.

Unraid 7.2.5

Ryzen 5700X

Nvidia Driver 580.159.03

Thankyou

Black Rat

Quadro P2200.jpg

Steam Headless.jpg

please provide the containers logs, docker run command and system diagnostics

23 minutes ago, Black Rat said:

Docker Run.txtSteam Headless Logs.txt

Run file and Logs for your perusal

Your having a somehow comparable crashloop I was experiecing until recently, where Xorg is exiting (status 1) and all following processes like xvnc11 and sunshine are exiting too, therefore no working webvnc and sinshine and consecutive no working moonlight streaming. In the beginning, there was a nvidia modesetting related error, which prevented a virtual display to be initialized so maybe you can provide your xorg.log (for e.g. docker exec steam-headless bash -lc 'tail -200 /home/default/.cache/log/xorg.err.log') and also some simple check if nvidia smi is working inside your container (by docker exec steam-headless bash -lc 'nvidia-smi').

Edited by anticholium

32 minutes ago, Black Rat said:

also your syslog has multiple lines with

May 2 10:58:36 Loki acpid: input device has been disconnected, fd 10

May 2 10:58:38 Loki kernel: input: Mouse passthrough as /devices/virtual/input/input275

May 2 10:58:38 Loki kernel: input: Mouse passthrough (absolute) as /devices/virtual/input/input276

May 2 10:58:38 Loki kernel: input: Keyboard passthrough as /devices/virtual/input/input277

May 2 10:58:38 Loki kernel: input: Sunshine Nintendo (virtual) pad as /devices/virtual/input/input278

May 2 10:58:38 Loki kernel: input: Sunshine X-Box One (virtual) pad as /devices/virtual/input/input279

May 2 10:58:38 Loki elogind-daemon[2149]: Watching system buttons on /dev/input/event7 (Keyboard passthrough)

May 2 10:58:38 Loki kernel: traps: light-locker[133722] trap int3 ip:14a5b214fa77 sp:7ffc59149ee0 error:0 in libglib-2.0.so.0.8400.4[66a77,14a5b2108000+a1000]

after the modesetting related bug (which was preventing a display beeing initializable and therfore no xorg etc) was resolved by the recent driverupdate to 595.71.05, I was stuck to a somehow udev realted crashloop, which I was trying to manually workaround (wihtout longlasting effect)... – I can tell you the way by which I currently have a running/working steam-headless, but let's see your results first, since your case is maybe different in detail and my workaround might not help you...

also try this docker command and provide the results:

docker exec steam-headless bash -lc '

tail -200 /home/default/.cache/log/xorg.err.log 2>/dev/null \

| grep -Ei "EE|fatal|failed|evdev|input|nvidia|screen|permission|no such|segmentation|backtrace|Server is already active"

'

Edited by anticholium

I'm guessing that's the container terminal as opposed to the Unraid terminal?

PS I am running Nvidia Driver 580.159.03 because that is the one recommended for the Quadro and newer drivers break it. If the bugs have been ironed out with later drivers, that would be an issue.

additionally post the result of this command:

docker exec steam-headless bash -lc '

echo "=== /usr/bin/start-dumb-udev.sh in current container ==="

ls -l /usr/bin/start-dumb-udev.sh

echo

nl -ba /usr/bin/start-dumb-udev.sh

'

19 minutes ago, Black Rat said:

I'm guessing that's the container terminal as opposed to the Unraid terminal?

host terminal, you execute the commands inside the docker though

9 minutes ago, Black Rat said:

PS I am running Nvidia Driver 580.159.03 because that is the one recommended for the Quadro and newer drivers break it. If the bugs have been ironed out with later drivers, that would be an issue.

well ok, I can't tell for sure, but there won't be the same modesetting driver related bug in parallel that I was experiencing with my Blackwell-GPU (5060)...

Edited by anticholium

Unless I am missing something or have the wrong end of the stick, that appears to be an issue.

No Dice.jpg

1 hour ago, Black Rat said:

Unless I am missing something or have the wrong end of the stick, that appears to be an issue.

No Dice.jpg

Just ssh in your Unraid server and execute the given command but replace 'steam-headless' with 'SteamHeadless', i.e. don‘t use the container console in this case

Edited by anticholium

Hi everyone,

if anyone could help me🥲.

I’m trying to understand why Steam Headless isn’t running anymore. It was working perfectly before but I can’t start it now. I’ve reinstalled all my Steam Headless and downgraded the Nvidia driver restart in Unraid.  The first time I tried starting Steam Headless it worked normally and I could connect to VNC after a few seconds but then it disconnected.  I’ve checked the logs and they always show a result of 11 indicating an error opening the X file.

thanks.

[ /etc/cont-init.d/70-configure_xorg.sh: executing... ]
**** Generate NVIDIA xorg.conf ****
  - Configure Xwrapper.config
  - Configure container as primary the X server
  - Enabling evdev input class on pointers, keyboards, touchpads, touch screens, etc.
  - Configuring X11 with GPU ID: 'GPU-826c22a7-f2e8-4ce0-009e-23d5ff923c58'
  - Configuring X11 with PCI bus ID: 'PCI:1:0:0'
  - Writing X11 config with Modeline "1600x900R"  201.00  1600 1648 1680 1760  900 903 908 953 +hsync -vsync
ERROR: driverInitFileInfo 578 result=11ERROR: init 664 result=11ERROR: init 250 result=11
WARNING: Unable to locate/open X configuration file.

Option "ProbeAllGpus" "False" added to Screen "Screen0".
Option "BaseMosaic" "False" added to Screen "Screen0".
Option "AllowEmptyInitialConfiguration" "True" added to Screen "Screen0".
New X configuration file written to '/etc/X11/xorg.conf'

After that, I’ll see X11vnc and Sunshine exit and restart in a loop.

026-05-05 11:17:41,656 INFO reaped unknown pid 44355 (exit status 1)
2026-05-05 11:17:41,663 INFO reaped unknown pid 44371 (exit status 1)
2026-05-05 11:17:41,664 INFO reaped unknown pid 44388 (exit status 1)
2026-05-05 11:17:41,664 INFO reaped unknown pid 44452 (exit status 1)
2026-05-05 11:17:41,664 INFO reaped unknown pid 44550 (exit status 1)
2026-05-05 11:17:41,664 INFO reaped unknown pid 44460 (exit status 1)
2026-05-05 11:17:41,733 WARN exited: sunshine (exit status 134; not expected)
2026-05-05 11:17:41,765 INFO spawned: 'sunshine' with pid 44759
2026-05-05 11:17:41,784 WARN exited: x11vnc (exit status 3; not expected)
2026-05-05 11:17:41,787 INFO spawned: 'x11vnc' with pid 44764
2026-05-05 11:17:41,794 INFO reaped unknown pid 44278 (exit status 0)
2026-05-05 11:17:41,794 INFO reaped unknown pid 44769 (exit status 0)
2026-05-05 11:17:42,805 INFO spawned: 'xorg' with pid 44816
2026-05-05 11:17:42,806 INFO success: x11vnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2026-05-05 11:17:42,806 INFO success: desktop entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2026-05-05 11:17:42,806 INFO success: sunshine entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2026-05-05 11:17:43,842 INFO success: xorg entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2026-05-05 11:17:43,942 INFO reaped unknown pid 44350 (exit status 0)
2026-05-05 11:17:44,009 INFO reaped unknown pid 44907 (exit status 1)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.