A lightweight and unbloated Steam headless implementation. Essentially a spiritual fork of docker-steam-headless
Tip
If you're looking for the docs or configuration, please take a look at our wiki in GitHub
Plasma is a Steam headless Docker image.
It allows you to run and play Steam games from a headless (no monitor) server with a GPU. It uses Sunshine and Moonlight to achieve this.
It's meant to be used by people looking specifically for this functionality, and able to develop, maintain and deploy themselves.
If you're here, it's safe to assume you're not looking for pre-made solutions. But if Plasma does not fit your needs, please take a look to some alternative solutions.
If you're looking for Cloud gaming services, take a look at this section of our wiki
The easiest way to get started with Plasma is to run a pre-baked image. We provide
pre-built images for AMD (radeon
and amdgpu
drivers) and the latest 2 NVIDIA drivers.
These images come with sensible defaults, and are pretty much ready to use. To get readiness notifications you can talk to Plasma's Telegram bot or create your own.
If you have a specific NVIDIA driver version or wish to modify user/passwords, you'll need to build an image. Please refer to the wiki for that: https://github.com/jsmrcaga/plasma/wiki
Plasma should take about 35 to 45 seconds to boot (depending on CPU and priming), and you can check the Telegram notifications feature if you want to be notified when it's ready. This will also work in case the container restarts.
Important
I sadly don't have enourmous amounts of time for personal projects. If you have an issue, you can of course report it, but it would be extremely beneficial if you open a PR to fix it as well :)
Development of Plasma if pretty straightforward. It's a collection of Dockerfiles and boot scripts that run the necessary processes to run games. Any time you change something, you need to re-build the image, send it to your headless server, and try to run it. It's slow, but works pretty well.
Please consult the Development Wiki Section to know more about contributing.
Plasma versions are based on
- the actual version of the project
- the GPU brand
- the GPU driver version
The latest
Docker tag will only be used for the base image.
For example, a release may look like this
plasma:latest
: the latest version of the base imageplasma:v2.3.4
: v2.3.4 of the base imageplasma:v2.3.4-AMD-1.0
: v2.3.4 of the AMD image forradeon
driversplasma:v2.3.4-AMD-4.0
: v2.3.4 of the AMD image foramdgpu
driversplasma:v2.3.4-NVIDIA-570.144
: v2.3.4 of the NVIDIA image for driver version 570.144
The main version follows semver, with breaking changes or "big releases" changing the major version, while most releases with new features or non-breaking changes will change the minor version. Patch versions will change only for smaller updates.
In short, I wanted to play KSP without installing it in my personal machine.
I was a heavy user of shadow.tech, until price hiked and I could not justify the monthly cost.
Since then, I started homelabbing, and managed to get a Nvidia Quadro P400 for €20, which should run KSP. Since I'm homelabbing, my setup does not have a screen, so here we are.
If it works once, it works forever
This project should work for you, if you're willing to tinker and spend some time.
The main idea of this project is to allow you to build a durable and running image of headless Steam. Once that image is proven to work, you should have no more trouble getting it to run. So if your server/computer/homelab/supercomputer dies because your little cousin tripped over the power cable, you should be safe to just reboot the machine and not worry about libraries not being up to date or getting a 404 from some driver url.
Note that Steam is a bit different since it auto-updates, but you're free to block that feature on your first boot.
- This is a different implementation of docker-steam-headless
- This is a "the less entropy the better" solution
- This is not a magic solution to get Steam working on your specific setup
- This is not a plug-and-play solution (ie: don't expect that running this docker image will "just work")
In short: could not get it to work in ~45 minutes. At the time of writing (May 2025) the latest Docker Hub and GitHub releases are from 2023, and mirror images had basic errors of file corruption.
The last "NVIDIA commit" is not hopeful. I ended up trying the image with an AMD card but I had no input at all and Steam was stuck in "webhelper is not responding" (comes pre-installed)
Bazzite is a Linux distribution meant to look and behave like SteamOS. it does allow you to build from Containerfiles, so it might work as a replacement for headless setups with some tinkering.
Similar to Bazzite, HoloISO is a Linux distribution meant to look and behave like SteamOS. If you want to just install this to a machine, i'd suggest trying out Bazzite or HoloISO.
The main differences with these projects is that this project is not trying to work "easily" for everyone. This is for targeted setups (notably headless).
For example, the Nvidia Docker images come with drivers pre-installed (and you can build your own) to prevent any driver installation issues when executing the containers. This also allows container boot to be faster.
- Josh5
- I'd say rouglhy 80% of this project is copied or inspired by Josh5's steam-headless
- Steam-headless Dockerfile
- and a lot of setup for both Nvidia and Xorg
- Lizardbyte
- keylase
- NVENC and NvFBC patches
- And enourmous shoutout to
vojtad
for commit 95dd542 allowing us to pass driver version manually
- e-dong
- Virtual display guide Reddit
- Virtual display docs Sunshine
- goryny4
- Gun_Demirbas
- Figuring out the magic udev rules to make input work
Plasma has been tested with an AMD Radeon Pro WX 2100. Configuring Plasma to run with an AMD card is rather easy.
Plasma has been tested with an Nvidia Quadro P400. Configuring for Nvidia is considerably more involved than AMD, but it does work well.
Intel GPUs are untested. Use at your own discretion.
NVIDIA
sudo docker run -it --rm \
--entrypoint bash \
--runtime nvidia \
--gpus all \
--shm-size 1g \
-v /dev/input:/dev/input \
-v /dev/uinput:/dev/uinput \
-p 47984-47990:47984-47990/tcp \
-p 48010:48010 \
-p 47998-48000:47998-48000/udp \
--privileged \
-v <some directory>:/home/<your user> \
plasma:nvidia-570-test
AMD
sudo docker run -it --rm \
--entrypoint bash \
--shm-size 1g \
-v /dev/input:/dev/input \
-v /dev/uinput:/dev/uinput \
-v /dev/dri:/dev/dri \
-p 47984-47990:47984-47990/tcp \
-p 48010:48010 \
-p 47998-48000:47998-48000/udp \
--privileged \
-v <some directory>:/home/<your user> \
plasma:amd-test
Check the GitHub Wiki!