Найти в Дзене

Как запустить игровой сервер?

Если
честно, то я не игроман и к играм абсолютно равнодушен, но было
интересно решить вопрос с играми с инженерной точки зрения. Также меня
не устраивало, что мне могут диктовать, во что, когда и как играть. Что имеем: Как
установить драйверы Nvidia на Linux и сделать доступной видеокарту в
Docker в отдельной VM Proxmox не описываю, можете найти эту информацию в
соответствующей статье ниже.
Мой docker-compose.yml: services:
steam-headless:
image: josh5/steam-headless:latest
restart: unless-stopped
shm_size: ${SHM_SIZE}
ipc: host
ulimits:
nofile:
soft: 1024
hard: 524288
cap_add:
- NET_ADMIN
- SYS_ADMIN
- SYS_NICE
security_opt:
- seccomp:unconfined
- apparmor:unconfined
runtime: nvidia
network_mode: host
hostname: ${NAME}
extra_hosts:
- "${NAME}:127.0.0.1"
environment:
# System
- TZ=${TZ}
- USER_LOCALES=${USER_LOCALES}
- DISPLAY=${DISPLAY}
# Us
Оглавление

Если
честно, то я не игроман и к играм абсолютно равнодушен, но было
интересно решить вопрос с играми с инженерной точки зрения. Также меня
не устраивало, что мне могут диктовать, во что, когда и как играть.

Что имеем:

  1. Возможность запускать игры на любом устройстве через механизм Steam Remote Play.
    Если коротко, то вся нагрузка ложится на основной хост-компьютер, и его
    роль может выполнять сервер с настроенной для работы видеокартой Nvidia
    и запущенным 
    Steam.
-2

docker-compose

Как
установить драйверы Nvidia на Linux и сделать доступной видеокарту в
Docker в отдельной VM Proxmox не описываю, можете найти эту информацию в
соответствующей статье ниже.
Мой docker-compose.yml:

services:
steam-headless:
image: josh5/steam-headless:latest
restart: unless-stopped
shm_size: ${SHM_SIZE}
ipc: host
ulimits:
nofile:
soft: 1024
hard: 524288
cap_add:
- NET_ADMIN
- SYS_ADMIN
- SYS_NICE
security_opt:
- seccomp:unconfined
- apparmor:unconfined
runtime: nvidia
network_mode: host
hostname: ${NAME}
extra_hosts:
- "${NAME}:127.0.0.1"
environment:
# System
- TZ=${TZ}
- USER_LOCALES=${USER_LOCALES}
- DISPLAY=${DISPLAY}
# User
- PUID=${PUID}
- PGID=${PGID}
- UMASK=${UMASK}
- USER_PASSWORD=${USER_PASSWORD}
# Mode
- MODE=${MODE}
# Web UI
- WEB_UI_MODE=${WEB_UI_MODE}
- ENABLE_VNC_AUDIO=${ENABLE_VNC_AUDIO}
- PORT_NOVNC_WEB=${PORT_NOVNC_WEB}
- NEKO_NAT1TO1=${NEKO_NAT1TO1}
# Steam
- ENABLE_STEAM=${ENABLE_STEAM}
- STEAM_ARGS=${STEAM_ARGS}
# Sunshine
- ENABLE_SUNSHINE=${ENABLE_SUNSHINE}
- SUNSHINE_USER=${SUNSHINE_USER}
- SUNSHINE_PASS=${SUNSHINE_PASS}
# Xorg
- ENABLE_EVDEV_INPUTS=${ENABLE_EVDEV_INPUTS}
- FORCE_X11_DUMMY_CONFIG=${FORCE_X11_DUMMY_CONFIG}
# Nvidia specific config
- NVIDIA_DRIVER_CAPABILITIES=${NVIDIA_DRIVER_CAPABILITIES}
- NVIDIA_VISIBLE_DEVICES=${NVIDIA_VISIBLE_DEVICES}
- NVIDIA_DRIVER_VERSION=${NVIDIA_DRIVER_VERSION}
devices:
- /dev/fuse
- /dev/uinput
device_cgroup_rules:
- 'c 13:* rmw'
volumes:
- ${HOME_DIR}:/home/default/:rw
- /mnt/media/games/:/mnt/games/:rw
- ${SHARED_SOCKETS_DIR}/.X11-unix/:/tmp/.X11-unix/:rw
- ${SHARED_SOCKETS_DIR}/pulse/:/tmp/pulse/:rw

Файл-шаблон с переменными необходимо скачивать отсюда и он должен располагаться в 1 директории с docker-compose.yml. Важно помнить, что образ сначала попытается скачать драйвера с официального сайта Nvidia, а потом будет их искать в дополнительном репозитории для Flatpak.

Инструкции по запуску через docker-compose можно посмотреть также тут.
После запуска docker-compose переходим по адресу в браузере: http://<Your IP>:8083 и должны увидеть экран удаленного стола с процессом установки всех компонентов для работы.

-3

Как играть?

  1. Подключаем наше устройство ТВ/планшет (Android) к нашей локальной сети.
  2. Устанавливаем на устройство Steam Link.
  3. Подключаем джойстик к устройству.
  4. Запускаем SteamLink и наш сервер должен быть найден этим устройством.
-4

Где и как искать игры?

Где
и как искать игры не из Steam не описываю, но говорят, на части
популярных торрент-трекерах появился раздел с играми на Linux.
Действия для игр не из Steam:

  1. Возможность эффективной игры на Linux можно проверить через protondb.com
  2. Устанавливаем на сервер игру любым доступным способом.
  3. Добавляем игру через Steam: Games -> Add Non-Steam game to My Library -> Выбираем файл запуска с игрой.
  4. Картинки для игр можно искать на SteamGridDB, чтобы игра была заполнена метаданными и мало чем отличалась от установленных со Steam игр.
-5

Важно
для каждой игры включить:
Manage->Properties->Compatibility->Proton Hotfix. Что такое
Proton от Valve можно увидеть 
тут.
Эффективность
игры зависит от Вашего железа и архитектуры, например, у меня игры на
HDD и диски проброшены внутрь VM. В планах игры переместить на SSD
диски, а далее рассмотреть вопрос выделения отдельного ПК для игр.

Итог

Теперь мы можем запускать игры не только из Steam и быть автономны насколько это возможно от корпораций и их диктатуры.

-6

Ссылки:

  1. Как запустить прокси-сервер для сервисов?
  2. Как установить Docker?
  3. Как установить Proxmox?
  4. Как запустить прокси-сервер для сервисов?
  5. Как установить драйвера NVIDIA в Linux?