« Gowstream » : différence entre les versions
| (23 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 54 : | Ligne 54 : | ||
On install le docker NVidia : | On install le docker NVidia : | ||
# cd /opt/ | # 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) . | # curl <nowiki>https://</nowiki>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 | # docker create --rm --mount source=nvidia-driver-vol,destination=/usr/nvidia gow/nvidia-driver:latest sh | ||
On installe le conteneur de GOW : | On installe le conteneur de GOW : | ||
# mkdir /opt/gow | |||
# cd /opt/gow/ | |||
# vi docker-compose.yml | # vi docker-compose.yml | ||
| Ligne 93 : | Ligne 95 : | ||
# docker compose up -d | # docker compose up -d | ||
= Autoriser client = | = 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 : | 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 : | ||
| Ligne 145 : | Ligne 148 : | ||
image = 'ghcr.io/games-on-whales/pegasus:edge'</font> | image = 'ghcr.io/games-on-whales/pegasus:edge'</font> | ||
<font color = blue>mounts = [ | <font color = blue>mounts = [ | ||
"/mnt/ | "/mnt/Emulation/resources:/assets/romm/resources:<font color = red>ro</font>",<font color = black># exemple de compatibilite avec assets ROMM</font> | ||
"/mnt/Emulation/bios/retroarchbioses:/home/retro/bioses:<font color = red>ro</font>",<font color = black># pack de bios pour retroarch</font> | |||
"/mnt/Emulation/roms:/ROMs:<font color = red>ro</font>"<font color = black># roms dans le dossier par default, a ajouter dans le menu de Pegasus pour certains dossiers..</font> | |||
]</font> | ]</font> | ||
<font color = grey>name = 'WolfPegasus' | <font color = grey>name = 'WolfPegasus' | ||
| Ligne 153 : | Ligne 158 : | ||
On redémarre le conteneur : | On redémarre le conteneur : | ||
# docker restart opt-wolf-1 | # docker restart opt-wolf-1 | ||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = A noter que contrairement à ROMM Retroarch réclame d'avoir tous les bios dans le même dossier. | |||
}} | |||
== Montage utile pour Pegasus == | |||
Installer des bin d'émulateur : | |||
"/opt/emulator:/opt/emulator:rw", | |||
Artwork pour Game and Watch (mame) ( exemple avec "/mnt/Emulation/bios/retroarchbioses:/home/retro/bioses:ro") : | |||
# mkdir -p <font color = blue>/mnt/Emulation/bios/retroarchbioses</font>/mame | |||
# ln -s <font color = blue>/mnt/Emulation/roms/</font>g-and-w_artwork <font color = blue>/mnt/Emulation/bios/retroarchbioses</font>/mame/artwork | |||
= Importer un thème dans Pegasus = | = Importer un thème dans Pegasus = | ||
# cd /etc/wolf/profile-data/<font color = blue>user</font>/WolfPegasus/.config/pegasus-frontend/themes/ | # cd /etc/wolf/profile-data/<font color = blue>user</font>/WolfPegasus/.config/pegasus-frontend/themes/ | ||
| Ligne 158 : | Ligne 176 : | ||
# wget <nowiki>https://</nowiki>github.com/PlayingKarrde/gameOS/archive/master.zip | # wget <nowiki>https://</nowiki>github.com/PlayingKarrde/gameOS/archive/master.zip | ||
# unzip master.zip | # unzip master.zip | ||
= | = convertir les gamelist.xml en metadata.txt = | ||
[ | Voir [[ROMM#convertir_les_gamelist.xml_en_metadata.txt|ce lien]] | ||
[ | |||
Dernière version du 22 mars 2026 à 16:14
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 :
# mkdir /opt/gow # cd /opt/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/Emulation/resources:/assets/romm/resources:ro",# exemple de compatibilite avec assets ROMM
"/mnt/Emulation/bios/retroarchbioses:/home/retro/bioses:ro",# pack de bios pour retroarch
"/mnt/Emulation/roms:/ROMs:ro"# roms dans le dossier par default, a ajouter dans le menu de Pegasus pour certains dossiers..
]
name = 'WolfPegasus'
ports = []
...
On redémarre le conteneur :
# docker restart opt-wolf-1
Montage utile pour Pegasus
Installer des bin d'émulateur :
"/opt/emulator:/opt/emulator:rw",
Artwork pour Game and Watch (mame) ( exemple avec "/mnt/Emulation/bios/retroarchbioses:/home/retro/bioses:ro") :
# mkdir -p /mnt/Emulation/bios/retroarchbioses/mame # ln -s /mnt/Emulation/roms/g-and-w_artwork /mnt/Emulation/bios/retroarchbioses/mame/artwork
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
convertir les gamelist.xml en metadata.txt
Voir ce lien