Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« Gowstream » : différence entre les versions

De Le Wiki de Lug
 
(21 versions intermédiaires par le même utilisateur non affichées)
Ligne 164 : Ligne 164 :
   | texte  = A noter que contrairement à ROMM Retroarch réclame d'avoir tous les bios dans le même dossier.
   | texte  = A noter que contrairement à ROMM Retroarch réclame d'avoir tous les bios dans le même dossier.
  }}
  }}
=== Images personnalisées ===
Le paramètre <code>icon_png_path</code> indique l’icône qui sera affichée dans les clients Moonlight pour chaque application.
L’image doit être au format PNG, idéalement en 200x266 ou 628x888 pixels.
L’emplacement de l’image peut être indiqué de trois manières différentes :


* Une URL, par exemple :
"<nowiki>https://</nowiki>games-on-whales.github.io/wildlife/apps/steam/assets/icon.png"
* Un chemin relatif à HOST_APPS_STATE_FOLDER, par exemple :
"icons/icon.png"
* Un chemin absolu, par exemple :
"/mnt/path/to/files/icon.png"
{{Méta bandeau
  | niveau = information
  | icône = loupe
  | texte  = Par simplicité, il est conseillé de créer et d’utiliser le chemin absolu <code>/etc/wolf/icons</code>, car le répertoire /etc/wolf est déjà monté par défaut dans les conteneurs de Games on Whales.
}}
=== Changer la disposition du clavier dans une application ===
=== Changer la disposition du clavier dans une application ===
Par défaut, les applications peuvent se lancer avec une disposition de clavier US. Pour la changer, il faut ajouter la variable "XKB_DEFAULT_LAYOUT" dans le bloc "env" de l’application concernée.
Par défaut, les applications peuvent se lancer avec une disposition de clavier US. Pour la changer, il faut ajouter les variables "XKB_DEFAULT_LAYOUT" et "XKB_DEFAULT_VARIANT" dans le bloc "env" de l’application concernée.


Exemple pour un clavier français :
Exemple pour un clavier français :
Ligne 172 : Ligne 191 :
Ajouter :
Ajouter :
  <font color = grey>...</font>
  <font color = grey>...</font>
  env = [ 'PROTON_LOG=1', 'RUN_SWAY=true', 'GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*'<font color = blue>, 'XKB_DEFAULT_LAYOUT=fr'</font> ]
  env = [ 'PROTON_LOG=1', 'RUN_SWAY=true', 'GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*'<font color = blue>, 'XKB_DEFAULT_LAYOUT=fr', 'XKB_DEFAULT_VARIANT=azerty'</font> ]
  <font color = grey>...</font>
  <font color = grey>...</font>
Redémarrer ensuite le conteneur Wolf :
Redémarrer ensuite le conteneur Wolf :
  # docker restart opt-wolf-1
  # docker restart opt-wolf-1


=== Montage utile pour Pegasus ===
=== Fichier de configuration clavier ===
 
Il est possible d’utiliser un fichier de configuration Sway afin de disposer de plusieurs dispositions de clavier dans les applications Games on Whales utilisant Sway.
 
Créer le fichier de configuration :
 
# vi /etc/wolf/cfg/90-custom.conf
 
Ajouter :
 
input type:keyboard {
    xkb_layout "fr,us"
    xkb_numlock "enable"
}
 
{{Méta bandeau
  | niveau = information
  | icône = information
  | texte  = La première disposition indiquée sera utilisée par défaut. Dans cet exemple, le clavier démarre donc en français, puis peut basculer en US.
}}
 
Ensuite, utiliser [[#Monter_un_dossier_dans_une_app|un point de montage]] dans l’application concernée :
 
"/etc/wolf/cfg/90-custom.conf:/etc/sway/config.d/90-custom.conf"
 
Redémarrer ensuite le conteneur Wolf :
 
# docker restart opt-wolf-1
 
=== Code PIN ===
Exemple :
<nowiki>[[profiles]]</nowiki>
id = 'user'
name = 'Random User'
icon_png_path = '<nowiki>http://</nowiki>192.168.1.155:8888/misc/guest.png'
pin = [ 3, 2, 1, 4 ]
 
 
== Configuration avancée des conteneurs ==
=== Pegasus ===
==== Importer un thème dans Pegasus ====
# cd /etc/wolf/profile-data/<font color = blue>user</font>/WolfPegasus/.config/pegasus-frontend/themes/
Exemple avec "gameOS" (normalement déjà présent..) :
# wget <nowiki>https://</nowiki>github.com/PlayingKarrde/gameOS/archive/master.zip
# unzip master.zip
 
==== Montage utile pour Pegasus ====
Installer des bin d'émulateur :
Installer des bin d'émulateur :
  "/opt/emulator:/opt/emulator:rw",
  "/opt/emulator:/opt/emulator:rw",
Ligne 184 : Ligne 249 :
  # ln -s <font color = blue>/mnt/Emulation/roms/</font>g-and-w_artwork <font color = blue>/mnt/Emulation/bios/retroarchbioses</font>/mame/artwork
  # ln -s <font color = blue>/mnt/Emulation/roms/</font>g-and-w_artwork <font color = blue>/mnt/Emulation/bios/retroarchbioses</font>/mame/artwork


=== Pegasus : Configuration persistante multisession ===
==== Pegasus : Configuration persistante multisession ====
On utilise un montage persistant pour le dossier de configuration de chaque profil, ainsi que pour la configuration de Pegasus.
On utilise un montage persistant pour le dossier de configuration de chaque profil, ainsi que pour la configuration de Pegasus.
Cela permet de ne pas perdre les configurations et les sauvegardes des émulateurs lors des mises à jour du conteneur, tout en partageant la configuration de Pegasus entre les utilisateurs afin de conserver les mêmes dossiers de ROMs.
Cela permet de ne pas perdre les configurations et les sauvegardes des émulateurs lors des mises à jour du conteneur, tout en partageant la configuration de Pegasus entre les utilisateurs afin de conserver les mêmes dossiers de ROMs.
Ligne 215 : Ligne 280 :
  name = '<font color="blue">User2</font>'
  name = '<font color="blue">User2</font>'
   
   
     [[profiles.apps]]
     <nowiki>[[profiles.apps]]</nowiki>
     icon_png_path = '<font color="green">/etc/wolf/pegasus.png</font>'
     icon_png_path = '<font color="green">/etc/wolf/pegasus.png</font>'
     start_virtual_compositor = true
     start_virtual_compositor = true
Ligne 246 : Ligne 311 :
Enfin, on redémarre GOW :
Enfin, on redémarre GOW :
   # docker restart opt-wolf-1
   # docker restart opt-wolf-1
==== convertir les gamelist.xml en metadata.txt ====
Voir [[ROMM#convertir_les_gamelist.xml_en_metadata.txt|ce lien]]


=== Personnalisation ===
=== Heroic Game Launcher ===
==== Images personnalisées ====
Le paramètre <code>icon_png_path</code> indique l’icône qui sera affichée dans les clients Moonlight pour chaque application.


L’image doit être au format PNG, idéalement en 200x266 ou 628x888 pixels.
"Launcher" pour les jeux Epic et GOG. Pour utiliser le conteneur de GOW :


L’emplacement de l’image peut être indiqué de trois manières différentes :
  <nowiki>[[profiles.apps]]</nowiki>
    title = 'Heroic'
    icon_png_path = "<nowiki>https://</nowiki>games-on-whales.github.io/wildlife/apps/heroic-games-launcher/assets/icon.png"
    start_virtual_compositor = true
        <nowiki>[profiles.apps.runner]</nowiki>
        type = 'docker'
        name = 'WolfHeroic'
        image = 'ghcr.io/games-on-whales/heroic-games-launcher:edge'
        env = [
            'RUN_SWAY=true',
            'GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*',
            <font color="blue">'HEROIC_STARTUP_FLAGS=--ozone-platform=x11 --enable-features=UseOzonePlatform,WaylandWindowDecorations GenericName=gs_hgl'</font>
        ]
        devices = []
        mounts = []
        ports = []
        base_create_json = '''{
          "HostConfig": {
            "IpcMode": "host",
            "CapAdd": ["SYS_ADMIN", "SYS_NICE", "SYS_PTRACE", "NET_RAW", "MKNOD", "NET_ADMIN"],
            "SecurityOpt": ["seccomp=unconfined", "apparmor=unconfined"],
            "Ulimits": [{"Name":"nofile", "Hard":10240, "Soft":10240}],
            "Privileged": false,
            "DeviceCgroupRules": ["c 13:* rmw", "c 244:* rmw"]
          }
        }'''


* Une URL, par exemple :
"<nowiki>https://</nowiki>games-on-whales.github.io/wildlife/apps/steam/assets/icon.png"
* Un chemin relatif à HOST_APPS_STATE_FOLDER, par exemple :
"icons/icon.png"
* Un chemin absolu, par exemple :
"/mnt/path/to/files/icon.png"
{{Méta bandeau
{{Méta bandeau
   | niveau = information
   | niveau = information
   | icône = loupe
   | icône = information
   | texte  = Par simplicité, il est conseillé de créer et d’utiliser le chemin absolu <code>/etc/wolf/icons</code>, car le répertoire /etc/wolf est déjà monté par défaut dans les conteneurs de Games on Whales.
   | texte  = La ligne en bleu permet de contourner les problèmes de lenteur liés à Electron sur les dernières versions de Heroic Game Launcher. Voir : [https://github.com/games-on-whales/gow/issues/291 Source].
}}
}}


==== Code PIN ====
Exemple :
<nowiki>[[profiles]]</nowiki>
id = 'user'
name = 'Random User'
icon_png_path = '<nowiki>http://</nowiki>192.168.1.155:8888/misc/guest.png'
pin = [ 3, 2, 1, 4 ]
== Importer un thème dans Pegasus ==
# cd /etc/wolf/profile-data/<font color = blue>user</font>/WolfPegasus/.config/pegasus-frontend/themes/
Exemple avec "gameOS" (normalement déjà présent..) :
# wget <nowiki>https://</nowiki>github.com/PlayingKarrde/gameOS/archive/master.zip
# unzip master.zip
== convertir les gamelist.xml en metadata.txt ==
Voir [[ROMM#convertir_les_gamelist.xml_en_metadata.txt|ce lien]]
== Recréer le volume NVIDIA après mise à jour du pilote ==
== Recréer le volume NVIDIA après mise à jour du pilote ==



Dernière version du 17 juin 2026 à 19:46

LXC Debian

Source

Prérequis

  • LXC avec Privilèges et Nesting

Installation

Virtual devices support

Source

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 LXC, 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 crée le volume Docker qui contient une copie des bibliothèques 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/.config/retroarch/system: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 = []
         ...

Redémarrer ensuite le conteneur Wolf :

# docker restart opt-wolf-1

Images personnalisées

Le paramètre icon_png_path indique l’icône qui sera affichée dans les clients Moonlight pour chaque application.

L’image doit être au format PNG, idéalement en 200x266 ou 628x888 pixels.

L’emplacement de l’image peut être indiqué de trois manières différentes :

  • Une URL, par exemple :
"https://games-on-whales.github.io/wildlife/apps/steam/assets/icon.png"
  • Un chemin relatif à HOST_APPS_STATE_FOLDER, par exemple :
"icons/icon.png"
  • Un chemin absolu, par exemple :
"/mnt/path/to/files/icon.png"

Changer la disposition du clavier dans une application

Par défaut, les applications peuvent se lancer avec une disposition de clavier US. Pour la changer, il faut ajouter les variables "XKB_DEFAULT_LAYOUT" et "XKB_DEFAULT_VARIANT" dans le bloc "env" de l’application concernée.

Exemple pour un clavier français :

# vi /etc/wolf/cfg/config.toml

Ajouter :

...
env = [ 'PROTON_LOG=1', 'RUN_SWAY=true', 'GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*', 'XKB_DEFAULT_LAYOUT=fr', 'XKB_DEFAULT_VARIANT=azerty' ]
...

Redémarrer ensuite le conteneur Wolf :

# docker restart opt-wolf-1

Fichier de configuration clavier

Il est possible d’utiliser un fichier de configuration Sway afin de disposer de plusieurs dispositions de clavier dans les applications Games on Whales utilisant Sway.

Créer le fichier de configuration :

# vi /etc/wolf/cfg/90-custom.conf

Ajouter :

input type:keyboard {
    xkb_layout "fr,us"
    xkb_numlock "enable"
}

Ensuite, utiliser un point de montage dans l’application concernée :

"/etc/wolf/cfg/90-custom.conf:/etc/sway/config.d/90-custom.conf"

Redémarrer ensuite le conteneur Wolf :

# docker restart opt-wolf-1

Code PIN

Exemple :

[[profiles]]
id = 'user' 
name = 'Random User' 
icon_png_path = 'http://192.168.1.155:8888/misc/guest.png' 
pin = [ 3, 2, 1, 4 ]


Configuration avancée des conteneurs

Pegasus

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

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/.config/retroarch/system:ro") :

# mkdir -p /mnt/Emulation/bios/retroarchbioses/mame
# ln -s /mnt/Emulation/roms/g-and-w_artwork /mnt/Emulation/bios/retroarchbioses/mame/artwork

Pegasus : Configuration persistante multisession

On utilise un montage persistant pour le dossier de configuration de chaque profil, ainsi que pour la configuration de Pegasus. Cela permet de ne pas perdre les configurations et les sauvegardes des émulateurs lors des mises à jour du conteneur, tout en partageant la configuration de Pegasus entre les utilisateurs afin de conserver les mêmes dossiers de ROMs.

On crée un dossier de configuration global pour Pegasus :

# mkdir -p /etc/wolfpegasus/global
# chown -R 1000:1000 /etc/wolfpegasus/global

Optionnellement, on récupère la configuration déjà faite pour un utilisateur :

# cp -a /etc/wolf/profile-data/user/WolfPegasus/.config/pegasus-frontend/. /etc/wolfpegasus/global/
# chown -R 1000:1000 /etc/wolfpegasus/global

On crée ensuite un dossier de configuration pour chaque utilisateur. Exemple avec user2 :

# mkdir -p /etc/wolfpegasus/user2
# chown -R 1000:1000 /etc/wolfpegasus/user2

Optionnellement, on peut récupérer les cores déjà installés pour Retroarch :

# mkdir -p /etc/wolfpegasus/user2/retroarch/cores
# cp -a /etc/wolf/profile-data/user/WolfPegasus/.config/retroarch/cores/. /etc/wolfpegasus/user2/retroarch/cores/
# chown -R 1000:1000 /etc/wolfpegasus/user2

On ajoute ensuite les montages a l'utilisateur, exemple :

# vi /etc/wolf/cfg/config.toml
[[profiles]]
id = 'user2'
name = 'User2'

    [[profiles.apps]]
    icon_png_path = '/etc/wolf/pegasus.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 = [
            '/mnt/Emulation/resources:/assets/romm/resources:ro',
            '/opt/emulator:/opt/emulator:ro',
            '/mnt/Emulation/bios/retroarchbioses:/home/retro/.config/retroarch/system:ro',
            '/mnt/Emulation/roms:/ROMs:ro',
            '/etc/wolfpegasus/user2:/home/retro/.config:rw',
            '/etc/wolfpegasus/global:/home/retro/.config/pegasus-frontend:ro' # ro pour bloquer modification / rw pour modifier conf, exemple sur compte admin
        ]
        name = 'WolfPegasus'
        ports = []
        type = 'docker'

Enfin, on redémarre GOW :

 # docker restart opt-wolf-1

convertir les gamelist.xml en metadata.txt

Voir ce lien

Heroic Game Launcher

"Launcher" pour les jeux Epic et GOG. Pour utiliser le conteneur de GOW :

  [[profiles.apps]]
    title = 'Heroic'
    icon_png_path = "https://games-on-whales.github.io/wildlife/apps/heroic-games-launcher/assets/icon.png"
    start_virtual_compositor = true

        [profiles.apps.runner]
        type = 'docker'
        name = 'WolfHeroic'
        image = 'ghcr.io/games-on-whales/heroic-games-launcher:edge'
        env = [
            'RUN_SWAY=true',
            'GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*',
            'HEROIC_STARTUP_FLAGS=--ozone-platform=x11 --enable-features=UseOzonePlatform,WaylandWindowDecorations GenericName=gs_hgl'
        ]
        devices = []
        mounts = []
        ports = []
        base_create_json = {
          "HostConfig": {
            "IpcMode": "host",
            "CapAdd": ["SYS_ADMIN", "SYS_NICE", "SYS_PTRACE", "NET_RAW", "MKNOD", "NET_ADMIN"],
            "SecurityOpt": ["seccomp=unconfined", "apparmor=unconfined"],
            "Ulimits": [{"Name":"nofile", "Hard":10240, "Soft":10240}],
            "Privileged": false,
            "DeviceCgroupRules": ["c 13:* rmw", "c 244:* rmw"]
          }
        }

Recréer le volume NVIDIA après mise à jour du pilote

Après une mise à jour du pilote NVIDIA sur l’hôte, Games on Whales / Wolf peut ne plus produire de vidéo dans Moonlight, avec un symptôme du type :

No video received from host

La cause fréquente est un décalage entre :

  • la version du pilote NVIDIA chargée sur l’hôte ;
  • les bibliothèques NVIDIA stockées dans le volume Docker nvidia-driver-vol utilisé par Wolf.

Il ne suffit pas toujours de reconstruire l’image gow/nvidia-driver:latest. Il faut aussi supprimer les anciens conteneurs qui utilisent encore le volume, puis recréer le volume proprement.

  • Arrêter Games on Whales / Wolf :
# cd /opt/gow
# docker compose down
  • Supprimer tous les conteneurs qui utilisent nvidia-driver-vol :
# docker rm -f $(docker ps -aq --filter volume=nvidia-driver-vol)
  • Supprimer le volume obsolète :
# docker volume rm -f nvidia-driver-vol
  • Reconstruire l’image gow/nvidia-driver:latest avec la version actuelle du pilote 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
  • Redémarrer Games on Whales / Wolf :
# cd /opt/gow
# docker compose up -d