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 Jellyfin or Plex in a rootless container with configuration on writable storage. Jellyfin has an unaffiliated SteamOS helper; Plex requires manual container setup.
We have not tested either path on a retail Steam Machine. The Jellyfin helper targets SteamOS on Steam Deck and other AMD handhelds, so its install, shortcut, transcoding, and sleep behavior remain unverified on the Machine.
Why a container fits SteamOS
Valve warns that pacman changes may disappear after a SteamOS update. A container avoids that system image, but its config, cache, and media mounts must use persistent writable paths.
Jellyfin's container guide uses rootless Podman for its Linux example. Back up the server config before changing images, mounts, or acceleration settings; a container is not a backup.
Jellyfin: an experimental SteamOS helper
jellyfin-on-steamOS combines the official Jellyfin server image, Jellyfin Desktop Flatpak, and a Steam shortcut. It is not a Valve or Jellyfin project.
On August 29, 2026, the repository had one commit and no tagged release. Review and pin commit 154a34452320514ddbc8df9250070560fe10bf9f rather than trusting a later mutable main branch. The helper still pulls jellyfin/jellyfin:latest, so record the resolved image digest separately.
The helper says it will:
- Run Jellyfin in rootless Podman under a systemd user service.
- Store config and cache in your home folder.
- Mount selected media folders read-only.
- Install Jellyfin Desktop and a Steam shortcut with artwork.
- Enable startup and optionally add an external drive to /etc/fstab.
- Provide status, settings, artwork, and uninstall commands.
The /etc/fstab option and user lingering may request sudo. The installer also masks podman-user-wait-network-online.service for your user and records its prior state for rollback. Its uninstaller does not remove an accepted /etc/fstab entry. Read both scripts, keep prompts visible, and do not run the installer as root.
Check the prerequisites
Open Konsole in Desktop Mode. If needed, follow the sudo guide first. Confirm the helper's required tools before installing:
- podman --version
- systemctl --user --version
- flatpak --version
- python3 --version
- curl --version
Stop if a command is missing. A pacman fix may not survive an update.
Install the community helper
Close Steam first because it can overwrite the shortcut file when exiting. Then clone the repository, pin the reviewed commit, and inspect the installer and uninstaller:
- 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 read-only media mounts unless Jellyfin must modify the files. Review any UUID-based /etc/fstab entry as a separate system change.
Restart Steam, sign in through Jellyfin Desktop, add libraries, and run ./steamos-jellyfin.sh status. Then test a reboot and the uninstall path while the config and mount locations are still clear.
Plex: supported container, manual SteamOS work
The LinuxServer.io Plex image supports x86-64 and documents host networking, config and media mounts, user and group IDs, time zone, updates, and /dev/dri access.
On SteamOS, translate that configuration into rootless Podman or a quadlet, then:
- Create a writable config directory in your home folder.
- Give media drives stable mount paths.
- Mount config read-write and media read-only.
- Use host networking for local client discovery.
- Add /dev/dri only when testing hardware transcoding.
- Open http://machine-ip:32400/web and finish setup.
- Put the working configuration in a systemd user service and enable lingering.
Keep the configuration in a versioned local file with claim tokens and other secrets removed. Plex provides no Steam shortcut or uninstall wrapper here.
Check Plex's account and paid-feature boundaries
Plex supports browsers, phones, TVs, streaming boxes, consoles, and desktops, which favors households already using its clients.
Hardware-accelerated streaming requires Plex Pass. Plex's documented Linux hardware-transcoding paths cover Ubuntu and Fedora, not SteamOS, and give dedicated AMD graphics less testing. Start with software transcoding and treat Steam Machine acceleration as unverified.
For affected apps, remote video playback requires Plex Pass for the administrator or viewer, or Remote Watch Pass for the viewer. Local-subnet playback is excluded from that rule.
Which one should you use?
- Choose Jellyfin for a local, open-source server if you are prepared to audit and test the young community helper.
- Choose Plex for an existing Plex household if you can maintain the Podman service and accept its account and paid-feature boundaries.
For either one, keep config outside the system image and record the container settings.
Sleep is a test, not a solved detail
Valve documents sleep, controller wake, and HDMI CEC, but not whether a media stream prevents sleep. A Jellyfin sleep report describes Windows 11, so use it only as a test case.
Before relying on the Machine as a server:
- Play from another device beyond the normal sleep timer.
- Test one direct-play file and one transcode.
- Confirm playback and server access after the display turns off.
- If the Machine sleeps, set an explicit power or wake routine and retest.
Controller wake does not make a TV or phone client able to wake the server.
Storage, networking, and gaming tradeoffs
Prefer direct play. Transcoding consumes CPU or GPU resources, and concurrent gaming remains untested.
Use Ethernet when practical. Plex recommends wiring the server to remove Wi-Fi variability.
Plan large libraries separately. The storage guide covers external drives. Use stable paths and ensure the drive mounts before the container starts.
Test locally first. Do not expose container ports publicly for initial setup. Remote access, backups, and updates are separate decisions.
Use media you are entitled to store and stream. Neither service supplies a library.