[Support] Josh5 - Steam (Headless)


Recommended Posts

This Docker image has been re-based to Debian Bookworm. This fixes a few issues with Flatpak mostly, but also gives us access to some newer packages.

 

I have also tidied up the Arch based Dockerfile. This Arch variant will be classed as a "community variant" and I will not be providing support for it (There may very well be dragons). This Arch variant will soon be automatically built as "josh5/steam-headless:arch" and will have updates at the same cycle as the Debian version at "josh5/steam-headless:latest" and "josh5/steam-headless:debian".


For this release of with Debian 12 Bookworm, Docker in Docker is available, but is missing 'nvidia-container-toolkit' because NVIDIA are not yet supporting Bookworm. If they do not fix that in the coming weeks, I will just explore using Debian 11's version of it.

  • Like 1
Link to comment
On 7/6/2023 at 8:19 PM, Josh.5 said:

The downgrade process is simple enough and my initial impression for the past few mins is that there are not problems with it.
I am not running any VMs so I cannot say anything about that. But for Docker containers and plugins, it is fine to downgrade to 6.11.5 as I have just done.
All I did was:

  1. Download the 6.11.5 tar from their website.
  2. Put the USB stick in my PC.
  3. Create a backup of the whole USB stick.
  4. Extract the 6.11.5 tar on my PC.
  5. Copy everything EXCEPT for the `/config` directory to the USB stick.
  6. Safely remove the USB stick, put it back in the server and boot it.
  7. Profit... All issues are now resolved if you run the older NVIDIA driver.

Decided to wait until I got my new GPU (RX 6700 non XT, so still no NVIDIA workaround for me) installed before messing with this, so just now attempting to downgrade. Downgrading makes me nervous, so if you don't mind, I just wanted to double-check some stuff before starting. 

 

After I back up the USB and download and extract the previous OS version, I can literally delete all the folders except /config from the USB and just paste in the folders (except /config) from the OS download? I assume if things go bad I can similarly just copy from the backup back to the USB? I'm both on Linux, without the Windows easy installer, and also still not super comfortable in the command line. 

 

Once I'm on the prior version, will I need to do anything to prevent upgrading again? I'm not familiar with unRAID's version support, will it be okay to stay on 6.11 or will it no longer be maintained in the near future?

 

Sorry for the noob questions. Thanks so much for your help and for this container! I'm really excited about the idea of it. 

Link to comment
On 7/6/2023 at 8:23 PM, Josh.5 said:

Do not upgrade to Unraid 6.12. I cannot express enough how annoyed I am with the amount of time I've wasted this week upgrading my system to 6.12 to explore this issue. This is headache inducing. The OS version has so many underlying issues that are not at all related to Steam Headless and is preventing me from be able to even improve the container. Eg. issues with the mover. Issues with services like SSH just stopping outright, issues with Dockerd.
I cannot stress enough, do not upgrade to 6.12.x. If you are on 6.12, then consider backing up your /config directory on your USB stick and downgrade back to 6.11. This is what I am doing at the moment.

 

Hello, so I have been lurking this thread and testing out this container on UnRaid 6.12, then 6.12.2 and now 6.12.3. I was also getting the never-ending "Loading User Data" screen on 6.12.2, and the -vgui launch option didn't seem to work. However I have now done a clean install on 6.12.3 and -vgui *does* work, steam launches beautifully, but some of the screens (including the library lol) do not load. The workaround for that is to hit "view"->"small mode". This will load your library list, with none of the fancy game art. It is worth noting that I am *not* using a dedicated GPU but have passed-through my Intel CPU integrated graphics (/dev/dri). I can install and launch games (tested with FTL). There is a caveat though, which kinda defeats the whole purpose of the being "headless" - with -vgui enabled, Big Picture mode is also broken. It just doesn't load. It seems like Steam has also removed the option of loading into the old Big Picture mode. I am assuming the reason the new Steam UI/BPM doesn't load is because I'm using integrated graphics, so I am hoping someone with a dedicated GPU can now test this and get it working on 6.12.3+

Link to comment
5 hours ago, chandz05 said:

 

Hello, so I have been lurking this thread and testing out this container on UnRaid 6.12, then 6.12.2 and now 6.12.3. I was also getting the never-ending "Loading User Data" screen on 6.12.2, and the -vgui launch option didn't seem to work. However I have now done a clean install on 6.12.3 and -vgui *does* work, steam launches beautifully, but some of the screens (including the library lol) do not load. The workaround for that is to hit "view"->"small mode". This will load your library list, with none of the fancy game art. It is worth noting that I am *not* using a dedicated GPU but have passed-through my Intel CPU integrated graphics (/dev/dri). I can install and launch games (tested with FTL). There is a caveat though, which kinda defeats the whole purpose of the being "headless" - with -vgui enabled, Big Picture mode is also broken. It just doesn't load. It seems like Steam has also removed the option of loading into the old Big Picture mode. I am assuming the reason the new Steam UI/BPM doesn't load is because I'm using integrated graphics, so I am hoping someone with a dedicated GPU can now test this and get it working on 6.12.3+

Hey, I finally successfully downgraded to 6.11.5, and I'm still having issues. The "loading user data" window goes away, and I think Steam is running in the system tray. But I can't actually get the Steam interface open. I only need to be able to get Steam Link connected to my TV, then I'm fine with a UI in the container. I'm on an AMD dGPU now. Forgive my not understanding what you mean, but how do you apply the -vgui workaround? How do you get the "small mode" option? 

Link to comment
On 7/17/2023 at 6:05 PM, RebelLion1519 said:

Hey, I finally successfully downgraded to 6.11.5, and I'm still having issues. The "loading user data" window goes away, and I think Steam is running in the system tray. But I can't actually get the Steam interface open. I only need to be able to get Steam Link connected to my TV, then I'm fine with a UI in the container. I'm on an AMD dGPU now. Forgive my not understanding what you mean, but how do you apply the -vgui workaround? How do you get the "small mode" option? 

 

Sure! For -vgui, in the VM, navigate to this location: 

/home/default/.config/autostart

and edit (right-click->open with->gedit) the Steam.desktop file. At the end of the "Exec" line, add "-vgui" and save. Since this is the autostart file, I would do a container restart. I believe you can edit the Steam executable itself, so it will start with -vgui enabled whenever you open Steam, but I did it the autostart way. When the container restarts, Steam should load up. At this point, only the store page was loading for me. In Steam, on the top menu, click "View -> Small Mode". Your steam library games list should pop up. You can also switch to Big Picture mode from the View menu, but like I said, I have not had success with that.

 

Edit: it is worth noting that as time goes on since the new Steam UI was launched, the old UI seems to get more and more broken, so there may be a point where this workaround will not work at all

Edited by chandz05
Link to comment
10 hours ago, chandz05 said:

 

Sure! For -vgui, in the VM, navigate to this location: 

/home/default/.config/autostart

and edit (right-click->open with->gedit) the Steam.desktop file. At the end of the "Exec" line, add "-vgui" and save. Since this is the autostart file, I would do a container restart. I believe you can edit the Steam executable itself, so it will start with -vgui enabled whenever you open Steam, but I did it the autostart way. When the container restarts, Steam should load up. At this point, only the store page was loading for me. In Steam, on the top menu, click "View -> Small Mode". Your steam library games list should pop up. You can also switch to Big Picture mode from the View menu, but like I said, I have not had success with that.

 

Edit: it is worth noting that as time goes on since the new Steam UI was launched, the old UI seems to get more and more broken, so there may be a point where this workaround will not work at all

You got me closer than I've ever gotten, I really thought it was going to work. Steam actually opened, long enough to connect on remote play. But after it's been open a few minutes, it disappears to the system try, and the TV with remote play is just showing the VM desktop. I've tried restarting multiple times, same thing every time. Steam--even the old UI--won't stay open for more than a couple of minutes. I'm really frustrated.

Link to comment

So after further fiddling, I've gotten Steam to stay open in the VM. Games themselves aren't opening, though. Steam shows they're open, and Steam Link shows that there's a game in progress. But the game never actually appears. If I go into System Settings in Steam though, I don't think it's detecting my actual graphics card. Maybe that's the problem, it's trying to run stuff on the virtual card? I have the Radeon TOP plugin installed, am I missing a step?

Link to comment
On 7/19/2023 at 9:28 PM, RebelLion1519 said:

So after further fiddling, I've gotten Steam to stay open in the VM. Games themselves aren't opening, though. Steam shows they're open, and Steam Link shows that there's a game in progress. But the game never actually appears. If I go into System Settings in Steam though, I don't think it's detecting my actual graphics card. Maybe that's the problem, it's trying to run stuff on the virtual card? I have the Radeon TOP plugin installed, am I missing a step?

Can you see your graphics card in the VM? Hopefully someone else with a discrete AMD graphics card can help you from here

Edited by chandz05
Link to comment
1 hour ago, chandz05 said:

Can you see your graphics card in the VM? Hopefully someone else with a discrete AMD graphics card can help you from here

I had decided to just use a traditional VM with GPU passthrough and give up on steam-headless, but I wasn't having much luck with GPU passthrough either, and now I've broken something and I can't get my server to boot at all. I'm at the point where I'm strongly considering buying a cheap CPU/mobo for the server, and moving my current CPU/mobo and GPU to a new gaming only rig. Which is too bad, I really loved the idea of being able to use UNRAID to have one PC do everything I needed. Sorry, just a little exasperated.

Link to comment
  • 2 weeks later...

I've installed EMU deck in this container and mounted an SSD to /mnt/games. I also installed emudeck to the same drive. I can run all my other emulators, but the PS2 one fails to launch from the script that's set up.

[default@SteamHeadless ~]$ /mnt/games/emudeck/Emulation/tools/launchers/pcsx2-qt.sh
/mnt/games/emudeck/Emulation/tools/launchers/pcsx2-qt.sh: 2: source: not found
/mnt/games/emudeck/Emulation/tools/launchers/pcsx2-qt.sh: 3: rclone_downloadEmu: not found
/mnt/games/emudeck/Emulation/tools/launchers/pcsx2-qt.sh: 11: [[: not found
/mnt/games/emudeck/Emulation/tools/launchers/pcsx2-qt.sh: 23: Bad substitution


Launching the appimage from the command line works, but launching from steam fails immediately. Is there anything I can do/change to get this working?

 

I also have no audio, in steam link or moonlight/sunshine. 
 

any help would be appreciated:)

Link to comment

Hi, my docker container runs fine and it is listening on port 8083 but docker ps shows no port. The only thing that failed seems to be "WARN exited: steam (exit status 1; not expected)". Do you know what is happening?

systemd-r     918 systemd-resolve   14u  IPv4      890      0t0  TCP 127.0.0.53:53 (LISTEN)
docker-pr  619353            root    4u  IPv4 42652820      0t0  TCP *:9696 (LISTEN)
docker-pr  619360            root    4u  IPv6 42648970      0t0  TCP *:9696 (LISTEN)
docker-pr  619616            root    4u  IPv4 42652881      0t0  TCP *:3000 (LISTEN)
docker-pr  619622            root    4u  IPv6 42656781      0t0  TCP *:3000 (LISTEN)
docker-pr  619674            root    4u  IPv4 42656802      0t0  TCP *:7878 (LISTEN)
docker-pr  619680            root    4u  IPv6 42647420      0t0  TCP *:7878 (LISTEN)
docker-pr  619697            root    4u  IPv4 42649037      0t0  TCP *:6767 (LISTEN)
docker-pr  619704            root    4u  IPv6 42656807      0t0  TCP *:6767 (LISTEN)
docker-pr  619901            root    4u  IPv4 42655842      0t0  TCP *:8090 (LISTEN)
docker-pr  619910            root    4u  IPv6 42648304      0t0  TCP *:8090 (LISTEN)
docker-pr  619979            root    4u  IPv4 42650207      0t0  TCP *:6881 (LISTEN)
docker-pr  619986            root    4u  IPv6 42647477      0t0  TCP *:6881 (LISTEN)
docker-pr  620142            root    4u  IPv4 42651238      0t0  TCP *:8989 (LISTEN)
docker-pr  620149            root    4u  IPv6 42655011      0t0  TCP *:8989 (LISTEN)
docker-pr  620286            root    4u  IPv4 42655057      0t0  TCP *:8096 (LISTEN)
docker-pr  620293            root    4u  IPv6 42655060      0t0  TCP *:8096 (LISTEN)
docker-pr  621128            root    4u  IPv4 42655164      0t0  TCP *:8080 (LISTEN)
docker-pr  621137            root    4u  IPv6 42651471      0t0  TCP *:8080 (LISTEN)
docker-pr  621177            root    4u  IPv4 42651476      0t0  TCP *:8000 (LISTEN)
docker-pr  621183            root    4u  IPv6 42651479      0t0  TCP *:8000 (LISTEN)
tcpserver 1061575        onlypepe    3u  IPv4 44075235      0t0  TCP 127.0.0.1:32039 (LISTEN)
nginx     1061578        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
websockif 1061581        onlypepe    3u  IPv4 44070334      0t0  TCP *:32038 (LISTEN)
nginx     1061596        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061597        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061600        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061602        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061606        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061607        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061608        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061609        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061610        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061611        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061613        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
nginx     1061616        onlypepe    5u  IPv4 44071837      0t0  TCP *:8083 (LISTEN)
python3   1061619        onlypepe    3u  IPv4 44063710      0t0  TCP *:32037 (LISTEN)
x11vnc    1061688        onlypepe    8u  IPv4 44072500      0t0  TCP *:32036 (LISTEN)
x11vnc    1061688        onlypepe    9u  IPv6 44072501      0t0  TCP *:5900 (LISTEN)
x11vnc    1061688        onlypepe   10u  IPv6 44072502      0t0  TCP *:32036 (LISTEN)
sunshine  1062289        onlypepe   33u  IPv4 44084226      0t0  TCP *:48010 (LISTEN)
sunshine  1062289        onlypepe   63u  IPv4 44076000      0t0  TCP *:47990 (LISTEN)
sunshine  1062289        onlypepe   66u  IPv4 44076002      0t0  TCP *:47984 (LISTEN)
sunshine  1062289        onlypepe   71u  IPv4 44072636      0t0  TCP *:47989 (LISTEN)
sshd      3570784            root    3u  IPv4 25089422      0t0  TCP *:22 (LISTEN)
sshd      3570784            root    4u  IPv6 25089424      0t0  TCP *:22 (LISTEN)

 

Link to comment

Hey All,

 

I'm was able to get this installed with no issue, I can see it on my steam link, but the steam app itself never loads completely. I was able to get logged in but it just hangs on "loading user data" so I can never input the code my steam link wants me to put in. Any idea what's causing this?

 

Thanks

2023-08-09 20_22_17-Steam Headless.png

Link to comment

Hey, I have a very similar issue. I tried almost all the troubleshooting advice from the previous pages, but they didn't help. The main loading freezes directly after it says "Loading user data...". The loading animation freezes completely. Sometimes I can click on on the steam icon and it shows me the context menu, but selecting anything does nothing.

 

I have installed the suggested older nvidia driver, reinstalled the container, deleted the .steam folder and rebooted. Nothing helped. Might try to rollback the Unraid Version as this is just a test before I decide to migrate completely.

 

Are there any relevant logs or other infos that might help narrowing it down?

 

//edit:

Turn it I'm dumb. As this was a test system I hadn't the advanced settings view enabled and therefore didn't set the extra parameter to enable the GPU. It works now as expected... Leaving this in case someone else was on autopilot while setting this up...

Unbenannt.PNG

Edited by marvelous-marv
Link to comment
On 1/27/2023 at 10:45 PM, PsYkoKeV said:

Great Project and thanks for the work. I love trying out new stuff 🙂

 

Whish to get it working and use it as a secondary (maybe as primary also) Gaming Station for my wife and maybe me. Currently im running two Windows VMs, streaming via parsec. Second VM is off to utilise the GPU for other stuff. So the docker would make it even easier to switch between gaming nad non gaming.

 

Now i got multiple Questions. 

1. How to tell the Docker it should use GPU2 (/dev/dri/card1)?

2. How to enable H265 codec for streaming?

3. I got the same artifacts like randomninjaatk a few post before. Same AMD GPU

 

To 2. Maybe iam trying out the Sunshine option and everything is working fine ;-) 

Tried the same config as on the windows machine. There i got "AMF HEVC" Codec. 

 

My Hardware: 

CPU AMD Ryzen 9 3900X

2x AMD 6700XT (MSI / XFX)

 

Maybe helpful for somebody: I got a 21:9 Monitor with a resolution of 3440x1440 and my HDMI dummy ist not showing this Resolution nativly. You can add these by: 

cvt 3440 1440 60
xrandr --newmode WHAT_THE_LINE_ABOVE_TELLS_YOU
eg. xrandr --newmode "3440x1440_60.00" 419.50 3440 3696 4064 4688 1440 1443 1453 1493 -hsync +vsync
xrandr --addmode HDMI-0 3440x1440_60.00

I havent tested if these are persistent. 

Or like someone mentioned, add Display Environment Variables. 

 

 

Where did you enter these?? 

Link to comment

I just want to say thank you for this wonderful docker. It was a pain for me to setup but I got it rolling with steam and blizzard games. ( diablo 4 and hero's of the storm run perfectly) running sunshine/moonlight included in this docker is fantastic as well!

 

Now my diablo4 deck sessions can last up to 5-6 hours as opposed to 1 1/2 hours, running the game on the device itself. Plus better graphics due to this doctker using my rtx3080. 

 

Now I just have to figure out how to run gog games inside this docker ( that's where I purchased cyberpunk) , and I'm set!

Link to comment

There is an issue in the current container with su and sudo.  As built, default user cannot sudo and cannot su to root.  The container does not have SUID set for both su and sudo commands and has 0777 set for sudo.conf and sudoers.  I initially tried running the fix in the init.d script, but that runs at user level and would not fix the problem.  You can fix it in the unraid console, but then it will break every time the container is updated.  I ended up writing a user script to fix the issue with the following commands:

 

docker exec steam-headless chmod u+s /bin/su
docker exec steam-headless chmod u+s /usr/bin/sudo
docker exec steam-headless chmod 0644 /etc/sudo.conf
docker exec steam-headless chmod 0644 /etc/sudoers

Link to comment

Hey all,

 

First of all, GREAT project. It's turned my switch running android into an all-in-one gaming solution. I read somewhere there were scripts to install other launchers like Epic games and such though I can't see anything additional. Is this something I have to create myself? What's the correct way of installing these and which ones are supported?

 

Also would this support something like Moonlight Internet Hosting Tool to get moonlight working away from the home network? I found tailscale had bandwidth issues.

 

Thanks!

Edited by Avsynthe
Link to comment
On 8/22/2023 at 11:32 PM, Avsynthe said:

 I read somewhere there were scripts to install other launchers like Epic games and such though I can't see anything additional.

 

Also would this support something like Moonlight Internet Hosting Tool to get moonlight working away from the home network? I found tailscale had bandwidth issues.

 

Thanks!

To answer your first question, you can use the built in app called Lutris. Go to applications, then games, then click on the Lutris app. Here you can install game launchers and install games from Epic store, GOG, and others.

 

And this has built in moonlight/sunshine support. after you create an account as soon as the docker starts. your good to go. I connect to it with my steam deck to play games when i dont want to use steam built in steam streaming option

Link to comment
On 8/27/2023 at 1:54 AM, Mrtj18 said:

To answer your first question, you can use the built in app called Lutris. Go to applications, then games, then click on the Lutris app. Here you can install game launchers and install games from Epic store, GOG, and others.

 

And this has built in moonlight/sunshine support. after you create an account as soon as the docker starts. your good to go. I connect to it with my steam deck to play games when i dont want to use steam built in steam streaming option

 

Thanks for your response. Under Applications > Games I have Steam and nothing else. This is where the confusion is for me, there's nothing else there. Was this removed? Searching the application finder also yielded nothing, it doesn't seem to be installed.

 

EDIT: Just learned that this was removed and is installable now through the Software program instead.

 

Regarding Moonlight/Sunshine, my question was is there a way to connect to Sunshine via Moonlight over the Internet remotely and away from the home network? I have a dynamic external IP so I'm looking for a good solution without having to check the IP of the house every time I want to connect when I'm away.

 

EDIT 2: Got this to work using Cloudflare DDNS and an unproxied CNAME. This is what I was trying the whole time but the issue was the Moonlight client didn't like the "https://" before the hostname.

Edited by Avsynthe
  • Like 1
Link to comment
11 minutes ago, Avsynthe said:

Connect to Sunshine via Moonlight over the Internet remotely and away from the home network?

The built in VPN using Wireguard can give you direct connection to the server. Easy peasy lemon squeezy. Alternatively I also use Tailscale now that it's free-ish to connect my ROG Ally and Steam Deck to Headless when I'm away from home.

Link to comment

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

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.