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/gamesThen 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/gamesI then added a few games to the library, and I could finally start playing 🕹️.