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 8 months ago
data trivial 11 months ago
.dockerignore Do not copy data/ folder. Fix #15 3 years ago
DEBUGGING.md the remake 11 months ago
Dockerfile add vkd3d for Direct3D 12 support libs 11 months ago
LICENSE the remake 11 months ago
Makefile trivial 11 months ago
README.md update readme 11 months ago
dnsmasq.conf use localhost for dnsmasq 3 years ago
docker-compose.yml fix TZ 8 months ago
launch make sure steam can be safely restarted 11 months ago
resolv.dnsmasq the remake 11 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.