Delivers a range of games straight to a computer's desktop.
Go to file
2018-12-28 17:30:26 +01:00
data trivial 2018-12-27 16:52:37 +01:00
.dockerignore Do not copy data/ folder. Fix #15 2016-12-01 16:05:23 +01:00
DEBUGGING.md the remake 2018-12-21 16:52:33 +01:00
dnsmasq.conf use localhost for dnsmasq 2016-12-12 21:51:07 +01:00
docker-compose.yml support Vulkan 2018-12-22 17:46:53 +01:00
Dockerfile make sure steam can be safely restarted 2018-12-28 17:30:26 +01:00
launch make sure steam can be safely restarted 2018-12-28 17:30:26 +01:00
LICENSE the remake 2018-12-21 16:52:33 +01:00
Makefile support Vulkan 2018-12-22 17:46:53 +01:00
README.md support Vulkan 2018-12-22 17:46:53 +01:00
resolv.dnsmasq the remake 2018-12-21 16:52:33 +01:00

Steam in Docker

Changes

Dec 22 2018:

  • support Vulkan;

Dec 21 2018:

  • got rid of 'wrong ELF class' messages in the logs;
  • changed the base image debian:jessie to ubuntu:bionic;
  • significantly reduced the amount of dependencies as the image is now using the Steam runtime;
  • added SYS_PTRACE cap so Proton (modified version of Wine created by Steam) can show additional process traces;
  • removed grsecurity support since they have stopped giving us the test patches;
  • simplified the LD_LIBRARY_PATH routine in the launcher;
  • users can now control the USER_ID via the environment variable;
  • removed the old drivers support, let me know if you want it back;

Why?

  1. I want to set-up more fences when running the code I cannot always trust nor verify; issue 3671
  2. I do not want to be spending time figuring out how to install Steam (what deps) in a non-Debian (or non-SteamOS) based distro;
  3. I like cleanliness: I can erase Steam and all its dependencies in a matter of seconds by just removing this image;
  4. I can have Steam on my Ubuntu/openSUSE/[put any other distro I will want to use] in a short time that Docker takes to download this image;

Suggestions / PR's are welcome!

What's tested?

Games:

  • Counter-Strike 1.6
  • Counter-Strike: Global Offensive
  • Call of Duty 4: Modern Warfare
  • Delta Force (NovaLogic)

OS:

  • Linux: Ubuntu 18.04.1 LTS (64-bit)

HW:

  • ASUS P8Z68-V PRO/GEN3

GPU:

  • Intel HD Graphics 3000
  • NVIDIA's GeForce GTX 1060

For running games on AMD Radeon please uncomment /dev/kfd device in the docker-compose.yml file.

Requirements

Building and launching Steam

Launching Steam in Docker

git clone https://git.nixaid.com/arno/steam.git
cd steam
docker-compose build && docker-compose up

If Steam does not start, you may need to allow your user making connections to your X server:

xhost +SI:localuser:$(id -un)

Troubleshooting

You might want to modify the docker-compose.yml in case of problems, the file should be pretty self explanatory, although you may refer to the official Docker Compose file reference

Also keep in mind to uncomment or/and add your devices to the devices: section there.

The best result is when you have a similar to the following output, using the glxgears (part of mesa-utils package):

If you are getting segmentation fault error or Steam does not start, then you could try resetting its config:

docker-compose run --rm steam --reset

Vulkan / DXVK

DXVK is a Vulkan-based compatibility layer for DirectX 11.

It allows running 3D applications on Linux using Wine.

To fully leverage the DXVK, you need the following:

  1. Vulkan library installed;

  2. Capable GPU that supports Vulkan;

  3. Latest GPU drivers which support Vulkan;

  4. Wine 3.10+ with the DXVK (Steam's Proton already has DXVK installed);

  5. The game that supports DirectX 11;

$ cat /home/user/.local/share/Steam/steamapps/common/Proton\ 3.16/dist/lib64/wine/dxvk/version
60a03a29599bf1f8c73efdbcf288e91ef261bc58 dxvk (v0.90-10-g60a03a2)

Test Vulkan

$ docker-compose run --rm --entrypoint bash steam
root@steam:/# id user >/dev/null 2>&1
root@steam:/# [ $? -eq 0 ] || useradd -s /bin/bash -d /home/user -u ${USER_ID:-1000} user
root@steam:/# su -l user
user@steam:~$ LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/hostlibs/32:/hostlibs/64:"
user@steam:~$ LD_LIBRARY_PATH=${LD_LIBRARY_PATH} vulkaninfo | more
user@steam:~$ LD_LIBRARY_PATH=${LD_LIBRARY_PATH} vulkan-smoketest

Test DXVK

First, you need DirectX 10/11 game.

$ docker-compose exec steam
$ echo 'user_settings = { "DXVK_HUD": "devinfo,fps", }' > .local/share/Steam/steamapps/common/Proton\ 3.16/user_settings.py

After that, launch your game and you should be able to see DXVK HUD in the left upper corner of the screen.

Links

Below is just a bunch of links, someone might find them useful.