Steam cache/steam library on home server

I have for some time been thinking about putting together some kind of nas or home server or hybrid of the 2. I have never put any operating system other than Windows on a pc build but im thinking of trying something like freenas.
I have an old pc with specs I think would be good for what I want to use it for.
Its an A8-3850 quad core Lliano chip, 2x 4gb sticks of DDR3 and it has a 60gb SSD.

Before I go and buy like 4x 4tb drives to turn it into some kind of storage server/nas I would like to take advice from you guys on if its even worth my while.

So heres MY use case. Both of my PC’s now only have solid state storage. I do not want that to change but id would cost a fortune to buy enough storage to have all my games downloaded and installed.
I also have a large music and video library I would like to store on this machine.

So I want plex server potentially and more importantly I want a steam cache system of some sort.

Q 1. Can steam be installed natively to freenas like plex?
Q 2. If it can would that mean I would look like im online but away all the time?

I really want something that holds my entire game library but that keeps all of the games up to date automatically. So a folder on a shared storage pool is not really what I am looking for as any updates would go through my pc when im using it. I kinda want a self updating folder so to speak and it would be cool if I could either download from the cache folder to a local pc or play directly from it as though its a drive in the pc.

Does such a solution exist? My current understanding of steam caches is they are pretty dumb and do none of the things which would make it a great idea for me.

I would really like peoples input if they have something like this set up and what the difficulties are.

Possible to do, but FreeNAS is really meant to be for storage stuff only. You can run some non-storage server stuff on it like plex but a lot of server applications are much easier to set up on Linux.

No. Even Plex is not native, it is running in a jail. AFAIK, there is no offical support for running steam itself on BSD, although there may be hacks to make it run.

Again, AFAIK I don’t think that is possible. How the caches work currently work is that they cache the download from steam servers, so when you download something the second time from steam, the cache intercepts it and you download from the cache instead.

So it is only faster if you are downloading to multiple computers. And you still have to update each computer the game is installed on.

2 Likes

seems to me Gaben has been caught napping here. Hes usually so good at doing obscure things like this, steam link/in home streaming etc so maybe he needs a rocket up his ass on making something that can be put on systems like freenas or on actual nas systems like sinology, like a plug in that does this would be great

Steam can read directly off a share, so if you just host a SMB share with your library it will be accessible on any PC with access to that share. Yes updating will be “through your PC” but so will playing the game, as you need something with a GPU. If you want to have a “home gaming server using steamlink” you need a full fat OS, like windows or Linux to run the game and stream it. That will be a high power machine and expensive to use as a NAS.

There are various guides for setting up steamcache if you want to go that route. As others have said this would need virtualisation in a jail.

2 Likes

seems to me GabeN is missing a trick here and steam should do some kind of app/program for this use case.

I have to be honest, beyond archiving, I don’t entirely see the usecase. Wouldn’t reading off of the HDD still be extremely slow? Simplest solution to me is grabbing an external USB or something, and downloading games to that, or just mount SMB on the NAS and point Steam there.

Or simply run SteamCMD on the NAS and use that to keep everything downloaded?

steam cache only caches games when a client downloads it… so unless you also planned to create a vm with enough storage to constantly be online and downloading the games so the cache system can have an up to date version… doesnt sound like what you are looking for

Are you suggesting that you Dont have a vm running to constantly check for, and download updates to your entire steam library?

i just let my desktop download them when I boot it and open steam.

1 Like

It could be worse- you might run a vm just to game, but have to wait for it to update every time you launch it :frowning:

1 Like

I don’t know. it just seems to me that its obvious that people have huge steam libraries.
From my point of view I don’t want 50 games installed on my machine updating every time I turn it on.
That said I also don’t want to wait for downloads on VDSL that were on here in the uk.

A solution to me would be a companion app/program to steam which I sign into on my home nas/server set up, it would have the entire library of my games on it and would keep them up to date. If I want top play one of them I download it from there over my internal network and off I go.

I don’t know how else to articulate what id like

The files on a steamcache server are not the same as they would be on your gaming machine with steam installed/running.

Like others said creating a network share and setting your steam client to use it might be your best bet. You’d have to have something running steam on (small vm) connected to the share as well that can run 24/7 and pull updates anything during the day.

I’m also interested in this topic because I have multiple VMs with GPU passthrough that run headless with moonlight and/or Steam streaming for friends and family around the house and over the internet. It would be great if I could have a single file share that all my VM’s can run the games out of but I haven’t yet found a good solution to this. I can run a single VM off a network share easy, that works just fine.

Unfortunately when adding the share to a second VM, everything looks fine, Steam sees the games as installed, but they won’t launch. I get a quick flash of something and the game closes instantly.

Of course this could have other ramifications, what happens when one VM tries updating a game when the other is playing? What about saved games?

So far I’ve been using a single share per VM and just eat the extra data storage for now… but would be awesome if I could make this work.

1 Like

I was just going to ask if that method worked, so glad you let us know.

zfs under the hood with cron scripts running every night to mount and export shares for each user based on a “master” share that is updated via a 24/7 vm updating.

1 Like

I mapped the drive, say S: and then in Steam, go to Settings -> Downloads -> and Steam Library and add the drive as a steam library location. Right click on it and select default library (If you want that).

That should do it. Games will automatically install to the file share.

Occasionally you may have to point steam back to the file share… Its rare but sometimes Steam forgets and it will look like you don’t have any games installed.

1 Like

Yeah, that bit I’m fine with.
Wasn;t sure about two devices (physical or virtual) running steam, and each accessing the same directory at the same time.

Steam library on FreeNas has been done, but you will almost definitely have to do some research (Zvol vs Dataset, iSCSI vs SMB/CIFS, etc.) to get proper performance.

FWIW, I sometimes play my larger games off my NAS and it’s been fine (despite the nay-sayers), but I have noticed a BIG performance hit when I try to play online. It seems that my 1 Gbps NIC can’t handle streaming from the NAS and to a gamer server? Even though it’s full duplex? idk, I just don’t play NAS games online…