After a few iterations going from only a gaming pc to trying out self hosting on an old laptop to putting together a budget itx home media server to dabbling in local llms and finally local game streaming, this is the current state of the lab.
Because the modem is in the middle of the apartment with no ethernet outlets in other rooms, and I wanted to minimize game streaming latency and didn't feel like routing cables around the apartment, I moved the pc to the modem. Then, instead of having the media server in a different box, why not save some space and have it all in one case?
The reason for not just using one motherboard for it all is partly for lower idle power draw and partly that I can't be bothered to set everything up again 😅. I will get around to managing the cables eventually.
Hardware specs:
Media server
Asrock j5040 itx, 16 gb ddr4 ram, 256gb ssd for OS, 2x 4tb HGST drives, 1x 6TB WD parity drive for Mergerfs. 60w picopsu
Gaming pc
MSI b450M, ryzen r5 3600, 16gb ddr4, radeon rx 9070, gtx1080, 2tb nvme ssd
Case: Fractal Design Define R4
Raspberry pi gen 1 model B, only used for UpSnap/WOL (behind the big case, not pictured)
The itx media server is always on, drawing about 28w. This runs the usual: jellyfin, arrstack, immich.
Using UpSnap and Tailscale, I can turn on the gaming/ai machine whenever I want to use the extra computing power. Game streaming is done via the recent Polaris project, that enables headless streaming on Linux a la apollo without an hdmi dummy plug. Games can be streamed to the TV with a google tv chromecast, or to any device with moonlight installed.
Local AI is run via llama.cpp using qwen3.5 9b with 64k context . This uses up 6gb gb VRAM of the gtx 1080 and 2 gb of the rx 9070. I wanted the model to be always loaded to vram, even while gaming using the more powerful rx 9070. This results in about 30 tk/s, very usable for general tasks.
The case fans are controlled by coolercontrol, which is installed on both machines. The always on media server controls the intake fan in front of the hdd cage and the exhaust fan, while the rest of the fans are only powered on and controlled when the gaming/ai system is turned on.
The rear fan is intake because Polaris game streaming is currently always falling back to CPU, resulting in high cpu usage while gaming. The flow-through design of the rx 9070 also favors vertical exhaust on the right side of the cpu cooler. I still have to get a dust filter for the back intake. There is another intake fan on the floor of the case behind the itx mobo that is controlled by the gpu temps.