After watching Lawrence Systems' video about why it’s time to move off TrueNAS CORE—which I had been putting off for too long already—I finally migrated to Community (SCALE). I guess it was the last push I needed, really.
I even migrated most of my services inside my VMs to either separate TrueNAS Apps, or vanilla docker containers I manage via Dockge (such as Nextcloud AIO). But then I also noticed another available TrueNAS App which piqued my interest: Steam Headless.
Since I had an old spare NVIDIA GPU left, I gave it a spin.
I enabled the Docker NVIDIA drivers via: Apps > Configuration > Settings > Install NVIDIA Drivers
, and installed Steam Headless from the Apps catalog.
I set a password for the Steam Headless user, ticked the "Enable EV Dev Input" (important!) option, and selected my GPU to use.
For good measure I also assigned half of my available CPU threads, and 16 GiB of RAM.
For game storage, I decided to use a separate dataset, which will be automatically created and mounted at /mnt/games
.
After installing, the Web VNC client worked, but Moonlight didn’t register inputs. I wanted to use Moonlight to stream from my server to my TV, as I had done before with my desktop (I wrote about that here). This proved to be an easy fix, as I just had to tick the "Enable EV Dev Input" option in the App settings, which I previously had forgotten to do.
Next, adding the /mnt/games
directory as a new Steam Library in the Steam settings didn’t work.
After some troubleshooting, I finally found out that the directory was mounted with the noexec
option, but Steam needs exec
to run (temporary) scripts in that directory, as part of adding it as a library.
Simply remount the directory with the exec
option:
user $ mount -o remount,exec /mnt/games
Then add the directory as a Steam Library, and don’t forget to remount it with the noexec
option afterwards, to prevent any security issues:
user $ mount -o remount,noexec /mnt/games
I then added a few games to the library, and I could finally start playing 🕹️.