Steam Machine · Guides
How to Run a Media Server on Steam Machine: Jellyfin and Plex
Summary
Keep a Jellyfin or Plex setup outside SteamOS's replaceable system image with a rootless container. Jellyfin has an experimental community helper. Plex needs more manual setup.
Run the server in a rootless container and keep its configuration on writable storage. That avoids tying the setup to SteamOS's replaceable system image. Jellyfin has a possible SteamOS-specific path through an unaffiliated community helper. Plex has a maintained Linux container image, but no equivalent SteamOS setup wrapper in the sources reviewed for this guide.
Neither path has been hands-on tested by SteamHardware.io on a retail Steam Machine. The Jellyfin helper describes SteamOS generally and was built around Steam Deck and other AMD handhelds. Treat its Steam Machine install, Gaming Mode shortcut, hardware transcoding, and sleep behavior as unverified until they have been tested on the device.
Why a container fits SteamOS
Valve's Desktop Mode FAQ describes SteamOS's read-only filesystem and warns that changes made with pacman may be lost after an OS update. A direct system-package install can therefore work today and disappear after a later update.
A container keeps the application separate from that system image. Its persistent configuration, cache, and media mounts still need to point to writable storage, such as your home folder or an external drive. The container image can then be replaced without replacing those files.
This is also the installation model covered by Jellyfin's official container documentation, which recommends rootless Podman for its Linux example. A container is not a backup, though. Keep a copy of the server configuration before changing images, mounts, or hardware-acceleration settings.
Jellyfin: an experimental SteamOS helper
jellyfin-on-steamOS is a community project, not a Valve or Jellyfin release. Its installer combines an official Jellyfin server container with the Jellyfin Desktop Flatpak and a Steam shortcut.
When reviewed on August 29, 2026, the repository had one commit and no tagged release. That is not enough operational history to treat an approximately 800-line system-management script as an established installation path. The reviewed checkpoint is commit 154a34452320514ddbc8df9250070560fe10bf9f. Do not execute a later mutable main version as if it were the same code.
Pinning the script does not pin the Jellyfin server. Its default configuration pulls the jellyfin/jellyfin:latest image. Record the resolved image digest during testing so a later image update cannot be mistaken for the reviewed setup.
The helper currently says it will:
- Run the official Jellyfin image as a rootless Podman container managed by a systemd user service
- Store server configuration and cache under your home folder
- Mount the media folders you choose as read-only container paths
- Install Jellyfin Desktop from Flathub and add it to Steam with artwork
- Enable the user service at boot and offer an optional /etc/fstab entry for an external drive
- Provide status, settings, artwork, and uninstall commands
Most of that stays within your user account. The optional persistent-drive mount edits /etc/fstab, and enabling user lingering may request sudo. The installer also masks podman-user-wait-network-online.service for the current user and records the prior state so the uninstaller can try to restore it. The uninstaller does not remove an /etc/fstab entry that you accepted. Read both scripts before running them, keep their prompts visible, and do not run the installer itself as root.
Check the prerequisites
Open Desktop Mode and use Konsole. If you have not set a local password, the Steam Machine Desktop Mode and sudo guide explains the account boundary and the read-only filesystem.
The helper says SteamOS includes systemd, Podman 4.4 or newer, Flatpak, Python 3, and curl. Confirm those assumptions on the Machine before installing:
- podman --version
- systemctl --user --version
- flatpak --version
- python3 --version
- curl --version
Stop if a command is missing. Do not use pacman to fill the gap and then assume the fix will survive an update.
Install the community helper
Close Steam before the install. The helper edits Steam's non-Steam shortcut file, and Steam can overwrite that file when it exits.
Clone the repository, pin the reviewed commit, and inspect both scripts before starting the interactive installer. This is a controlled installation and rollback checklist, not a one-command recommendation:
- git clone https://github.com/28allday/jellyfin-on-steamOS.git
- cd jellyfin-on-steamOS
- git checkout 154a34452320514ddbc8df9250070560fe10bf9f
- less steamos-jellyfin.sh
- less steamos-jellyfin-uninstall.sh
- ./steamos-jellyfin.sh
Choose media folders when prompted. Use read-only mounts unless Jellyfin has a specific reason to change the files themselves. If the media lives on an external drive, decide separately whether you want the helper to add a UUID-based /etc/fstab entry. It backs up the file, but that remains a system-level change worth reviewing.
After installation, restart Steam, open Jellyfin from Desktop Mode for the first sign-in, and add the libraries in Jellyfin's dashboard. Then run the helper's health check:
Run ./steamos-jellyfin.sh status to check the service.
Confirm that the server returns after a reboot before trusting it as an always-available appliance. Also test its uninstall path while you still know where the config and media mounts live.
Plex: supported container, manual SteamOS work
The LinuxServer.io Plex image supports x86-64 and documents the settings needed for its container: host networking, a writable config path, media mounts, the host user and group IDs, a timezone, and the image update policy. It also documents /dev/dri access for Intel and AMD hardware acceleration.
On SteamOS, you still need to translate that container configuration into a rootless Podman command or quadlet, connect it to a systemd user service, enable lingering, and decide how to expose the Plex web interface on the local network. The practical sequence is:
- Create a writable Plex config directory under your home folder.
- Confirm each media drive mounts at the same path after a reboot.
- Map the config directory read-write and the media directories read-only.
- Use host networking so local Plex clients can identify the server correctly.
- Add /dev/dri only if you intend to test hardware transcoding.
- Start the container, open http://machine-ip:32400/web, and complete Plex's server setup.
- Convert the working configuration into a systemd user service so it starts after boot.
That is more work than the Jellyfin helper because there is no Steam shortcut, client setup, artwork step, or uninstall wrapper included. Keep the configuration in a versioned local file with any claim token or other short-lived secret removed.
Check Plex's account and paid-feature boundaries
Plex lists clients for browsers, phones, smart TVs, streaming boxes, game consoles, and desktop operating systems. That broad client coverage is the main reason to keep an existing Plex household on Plex rather than moving it for this device.
A normal claimed Plex setup is account-linked, and some relevant features are paid. Hardware-accelerated streaming requires Plex Pass. Plex's documented Linux hardware-transcoding paths name 64-bit Ubuntu and Fedora, not SteamOS or Arch, and Plex says dedicated AMD graphics-card support has not received the same full testing as its preferred paths. Start with software transcoding and treat Steam Machine hardware transcoding as unsupported and unverified unless Plex expands that support or device testing proves a reliable path.
Remote video playback now has a separate subscription boundary. Plex's current remote-playback requirements say the server administrator or viewer needs Plex Pass, or the viewer needs Remote Watch Pass, on affected apps. Playback detected on the same local subnet is not subject to that remote-video rule.
Which one should you use?
Choose Jellyfin if you want a local, open-source server and are comfortable reviewing and testing a small community SteamOS helper. Its setup is more integrated, but that integration has not yet been verified here on Steam Machine.
Choose Plex if your household already uses its clients or library and you are comfortable maintaining the Podman service yourself. Check the account, remote-playback, and Plex Pass requirements before investing time in hardware-transcoding setup.
Do not install either server with pacman and call the job finished. Whichever server you choose, keep its config outside the system image and document the container settings you used.
Sleep is a test, not a solved detail
Valve's Steam Machine support guide documents normal sleep and wake behavior, including controller wake and HDMI CEC options. It does not say that a media-server stream will keep the Machine awake.
There is also a closed Jellyfin issue about a host sleeping during playback, but the report describes Windows 11. It is a useful failure mode to test, not proof that SteamOS behaves the same way.
Before relying on the Machine as a server:
- Start playback from another device and leave the Machine at its normal sleep setting for longer than the timer.
- Repeat with a direct-play file and a file that transcodes.
- Confirm playback continues and the server remains reachable after the display turns off.
- If the Machine sleeps, choose an explicit always-awake power policy or a deliberate wake routine and test that exact setup again.
Controller wake is useful when you are in the room. It does not by itself make a smart-TV or phone client capable of waking the server.
Storage, networking, and gaming tradeoffs
Prefer direct play. Transcoding consumes CPU or GPU resources. Concurrent gaming and transcoding on the same Machine remains an untested workload, so do not promise smooth performance from either server until you have measured your files and clients.
Use Ethernet when practical. Plex's network guidance recommends a wired connection for the server as the most useful place to remove Wi-Fi variability.
Keep media off the game drive when the library is large. The Steam Machine storage guide covers external-drive choices. Use stable mount paths, and verify the drive is present before the container starts.
Keep the first test local. Do not expose container ports to the public internet just to make the initial setup convenient. Local playback, authenticated remote access, backups, and software updates are separate decisions.
Use media you are entitled to store and stream. Jellyfin and Plex organize files. Neither service supplies a media library.