Delivers a range of games straight to a computer's desktop.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Andrey Arapov 80201252b2 fix TZ 3 months ago
data trivial 6 months ago
.dockerignore Do not copy data/ folder. Fix #15 2 years ago
DEBUGGING.md the remake 6 months ago
Dockerfile add vkd3d for Direct3D 12 support libs 5 months ago
LICENSE the remake 6 months ago
Makefile trivial 6 months ago
README.md update readme 5 months ago
dnsmasq.conf use localhost for dnsmasq 2 years ago
docker-compose.yml fix TZ 3 months ago
launch make sure steam can be safely restarted 6 months ago
resolv.dnsmasq the remake 6 months ago

README.md

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)

You can use the following alias:

add this to your ~/.bash_alias file

function docker_helper_up() {
  command cd ~/git/$1
  docker-compose up -d "$1"
  command cd ~-
}

function steam() {
  docker_helper_up "$FUNCNAME"
}

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 Direct3D 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.