« Gowstream » : différence entre les versions
Aller à la navigation
Aller à la recherche
| Ligne 171 : | Ligne 171 : | ||
container_name: moonlight-web | container_name: moonlight-web | ||
restart: unless-stopped | restart: unless-stopped | ||
ports: | |||
- "<font color = green>8080:8080</font>" | |||
- "<font color = green>40000-40100:40000-40100/udp</font>" | |||
Version du 7 mars 2026 à 18:35
LXC Debian
Prérequis
- LXC avec Privilèges et Nesting
Installation
Virtual devices support
Depuis le serveur :
# vi /etc/udev/rules.d/85-wolf-virtual-inputs.rules
# Allows Wolf to acces /dev/uinput (only needed for joypad support)
KERNEL=="uinput", SUBSYSTEM=="misc", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput", TAG+="uaccess"
# Allows Wolf to access /dev/uhid (only needed for DualSense emulation)
KERNEL=="uhid", GROUP="input", MODE="0660", TAG+="uaccess"
# Joypads
KERNEL=="hidraw*", ATTRS{name}=="Wolf PS5 (virtual) pad", GROUP="input", MODE="0660", ENV{ID_SEAT}="seat9"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf X-Box One (virtual) pad", MODE="0660", ENV{ID_SEAT}="seat9"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf PS5 (virtual) pad", MODE="0660", ENV{ID_SEAT}="seat9"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf gamepad (virtual) motion sensors", MODE="0660", ENV{ID_SEAT}="seat9"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf Nintendo (virtual) pad", MODE="0660", ENV{ID_SEAT}="seat9"
On redémarre le serveur ou l'on charge la configuration avec la commande :
# udevadm control --reload-rules && udevadm trigger
NVidia
Après création du conteneur, depuis le serveur :
# vi /etc/pve/lxc/100.conf
... dev0: /dev/uinput dev1: /dev/uhid dev2: /dev/nvidia0 dev3: /dev/nvidiactl dev4: /dev/nvidia-modeset dev5: /dev/nvidia-uvm dev6: /dev/nvidia-uvm-tools dev7: /dev/nvidia-caps/nvidia-cap1 dev8: /dev/nvidia-caps/nvidia-cap2 lxc.cgroup2.devices.allow: a lxc.cap.drop: lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir lxc.mount.entry: /run/udev mnt/udev none bind,optional,create=dir lxc.mount.entry: /dev mnt/dev none bind,optional,create=dir
On démarre le LXC, ensuite depuis le LXC :
# apt update && apt upgrade
On installe le pilote NVidia (référence), exemple :
# bash /opt/nvidia-driver/NVIDIA-Linux-x86_64-590.48.01.run --no-kernel-module # bash /opt/nvidia-driver/nvidia-patch/patch.sh # bash /opt/nvidia-driver/nvidia-patch/patch-fbc.sh
On installe docker et docker-compose :
# apt install docker.io docker-compose-plugin curl
On install le docker NVidia :
# cd /opt/ # curl https://raw.githubusercontent.com/games-on-whales/gow/master/images/nvidia-driver/Dockerfile | docker build -t gow/nvidia-driver:latest -f - --build-arg NV_VERSION=$(cat /sys/module/nvidia/version) . # docker create --rm --mount source=nvidia-driver-vol,destination=/usr/nvidia gow/nvidia-driver:latest sh
On installe le conteneur de GOW :
# vi docker-compose.yml
version: "3"
services:
wolf:
image: ghcr.io/games-on-whales/wolf:stable
environment:
- NVIDIA_DRIVER_VOLUME_NAME=nvidia-driver-vol
#- WOLF_RENDER_NODE=/dev/dri/renderD12X ##pour multiGPU
volumes:
- /etc/wolf/:/etc/wolf:rw
- /var/run/docker.sock:/var/run/docker.sock:rw
- /mnt/udev:/run/udev:rw
- /mnt/dev:/dev:rw
- nvidia-driver-vol:/usr/nvidia:rw
devices:
- /dev/dri
- /dev/uinput
- /dev/uhid
- /dev/nvidia-uvm
- /dev/nvidia-uvm-tools
- /dev/nvidia-caps/nvidia-cap1
- /dev/nvidia-caps/nvidia-cap2
- /dev/nvidiactl
- /dev/nvidia0
- /dev/nvidia-modeset
device_cgroup_rules:
- 'c 13:* rmw'
network_mode: host
restart: unless-stopped
volumes:
nvidia-driver-vol:
external: true
# docker compose up -d
Autoriser client
Lors de la première tentative de connexion d'un client il faut rentrer le pin dans un lien web pour l'autoriser, depuis le LXC :
# docker ps
Exemple :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5e43d2fc724 ghcr.io/games-on-whales/pulseaudio:master "/entrypoint.sh" 29 minutes ago Up 29 minutes 4713/tcp WolfPulseAudio c581ab5d8827 ghcr.io/games-on-whales/wolf:stable "/entrypoint.sh" 29 minutes ago Up 29 minutes opt-wolf-1
# docker logs opt-wolf-1
... ... Insert pin at http://192.168.1.123:47989/pin/#EXEMPLE ...
Configuration
Par défaut :
WOLF_CFG_FILE=/etc/wolf/cfg/config.toml
# vi /etc/wolf/cfg/config.toml
Monter un dossier dans une app
Exemple avec Pegasus : (source)
# vi /etc/wolf/cfg/config.toml
Modifier :
[[profiles.apps]]
icon_png_path = 'https://games-on-whales.github.io/wildlife/apps/pegasus/assets/icon.png'
start_virtual_compositor = true
title = 'Pegasus'
[profiles.apps.runner]
base_create_json = {
"HostConfig": {
"IpcMode": "host",
"CapAdd": ["NET_RAW", "MKNOD", "NET_ADMIN", "SYS_ADMIN", "SYS_NICE"],
"Privileged": false,
"DeviceCgroupRules": ["c 13:* rmw", "c 244:* rmw"]
}
}
devices = []
env = [ 'RUN_SWAY=1', 'GOW_REQUIRED_DEVICES=/dev/input/event* /dev/dri/* /dev/nvidia*' ]
image = 'ghcr.io/games-on-whales/pegasus:edge'
mounts = []
name = 'WolfPegasus'
ports = []
type = 'docker'
Par, exemple :
...
devices = []
env = [ 'RUN_SWAY=1', 'GOW_REQUIRED_DEVICES=/dev/input/event* /dev/dri/* /dev/nvidia*' ]
image = 'ghcr.io/games-on-whales/pegasus:edge'
mounts = [
"/mnt/PATH_TO_ROMS_IN_YOUR_HOST/:/ROMs/:rw" # <-- EDIT HERE
]
name = 'WolfPegasus'
ports = []
...
On redémarre le conteneur :
# docker restart opt-wolf-1
Importer un thème dans Pegasus
# cd /etc/wolf/profile-data/user/WolfPegasus/.config/pegasus-frontend/themes/
Exemple avec "gameOS" (normalement déjà présent..) :
# wget https://github.com/PlayingKarrde/gameOS/archive/master.zip # unzip master.zip
Moonlight Wev Stream
Docker
# mkdir /opt/moonlightwebstream # cd /opt/moonlightwebstream # vi docker-compose.yml
services:
moonlight-web:
image: mrcreativ3001/moonlight-web-stream:latest
container_name: moonlight-web
restart: unless-stopped
ports:
- "8080:8080"
- "40000-40100:40000-40100/udp"