In both of our homes I have a Unix server for a variety of uses, but something that has been on interest for awhile was Steam in Home Streaming. In essence it takes the frame buffer of the video card and remotely displays it on any other machine running Steam.
The benefit, for me at least, is two-fold. It is cheaper and easier to drop a GPU into the server than it is to upgrade the laptop and it allows for me to have a remote OpenCL machine that I use in my security research.
As the machine is in the closet and headless, a few things had to be done for this to work. I am sharing my notes for others to use as needed. This home server uses Arch Linux so the instructions are geared towards that config.
The specs of the machine:
- Dell T20 Server
- MSI Nvidia GTX 750ti
- I chose this card for the ease of attaching to VFIO
CompuLab Display Emulator
- Without this little device, the Nvidia card would top out at 800x600 due to the lack of EDID data. This just allows me to bypass
- Steam Client
- Big Picture Mode steam-session-git
- Nvidia Beta Drivers
- D-Bus Accounting Interface
I chose to run Steam under a dedicated user fully segmented and jailed from the rest of the system since it is an autologin user.
` /etc/lightdm/lightdm.conf `
[LightDM] start-default-seat=true run-directory=/run/lightdm [Seat:*] type=local pam-service=lightdm pam-autologin-service=lightdm-autologin session-wrapper=/etc/lightdm/Xsession autologin-user=steamuser autologin-user-timeout=0 [VNCServer] enabled=true command=Xvnc -rfbauth /etc/vncpasswd port=5900 listen-address=localhost width=1280 height=1024 depth=24
I enabled the VNC Server to ensure I could remotely access the Big Picture session as needed. In between some of the beta client updates my account would logout randomly. This will also allow you to access for the initial install.
I called my user, get this, steamuser
` sudo groupadd -r autologin`
` sudo groupadd -r nopasswdlogin`
` sudo useradd -m -g autologin,nopasswdlogin steamuser `
Since LightDM uses PAM we need to modify the configuration in ` /etc/pam.d/lightdm ` with the first two lines being the biggies. If you have any type of custom pam modules just be aware before editing this file entirely or overwriting.
#%PAM-1.0 auth sufficient pam_succeed_if.so user ingroup nopasswdlogin auth include system-login -auth optional pam_gnome_keyring.so account include system-login password include system-login session include system-login -session optional pam_gnome_keyring.so auto_start
Now to enable and/or restart LightDM with ` sudo systemctl enable lightdm && sudo systemctl restart lightdm `
As we would never leave our VNC server with no password, let’s take care of that option. If you want your VNC server to listen on the local network be sure to change the listen-address in the lightdm.conf section above. I just use SSH tunnels to encrypt.
` sudo vncpasswd /etc/vncpasswd `
Be sure to VNC into your machine which should automatically login to your new Steam Users’s Big Picture desktop. Install all the games you want and off you go! Keep in mind that after you logout of the VNC session your steam client will end (and thereby the in-house Streaming) so after you have things configured I always recommend a bounce of lightdm via ` sudo systemctl restart lightdm `.
Keep in mind that you are able to add applications to the Big Picture mode in the settings. Due to the speed of frame buffer streaming, I have added Firefox, gnome-terminal, and a few other apps that are useful for remote administration.