Installation Wolf (Multi-User Cloud Gaming)
Objectif : Faire tourner plusieurs instances de Steam indépendantes sur un seul GPU, accessibles via Moonlight avec support manettes et 4K/60fps.
1. Prérequis Système (Unraid)
A. Plugin Nvidia
Installer le plugin "Nvidia Driver" (par ich777) depuis les Community Applications.
B. Activation du "Kernel Mode Setting" (CRITIQUE)
Wolf a besoin de contrôler l'affichage au niveau du noyau pour créer les sessions graphiques. Sans ça, écran noir.
- Aller dans Main > Flash > Syslinux Configuration.
- Sur la ligne
append, ajouter à la toute fin (avec un espace avant) :nvidia-drm.modeset=1 - Redémarrer Unraid.
C. Persistance des Manettes (Fichier Go)
Pour que Unraid recrée les règles de manettes virtuelles à chaque démarrage (sinon elles disparaissent au reboot).
- Ouvrir le terminal Unraid.
- Éditer le fichier de boot :
nano /boot/config/go - Ajouter ce bloc à la fin du fichier :
# --- Wolf : Support Manettes Virtuelles ---
# 1. Permissions uinput
chmod 666 /dev/uinput
# 2. Règles UDEV
cat << 'EOF' > /etc/udev/rules.d/85-wolf-virtual-inputs.rules
KERNEL=="uinput", SUBSYSTEM=="misc", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"
KERNEL=="uhid", TAG+="uaccess"
SUBSYSTEMS=="input", ATTRS{id/vendor}=="ab00", MODE="0660", GROUP="input", ENV{ID_SEAT}="seat9"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf X-Box One (virtual) pad", MODE="0660", GROUP="input"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf PS5 (virtual) pad", MODE="0660", GROUP="input"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf gamepad (virtual) motion sensors", MODE="0660", GROUP="input"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf Nintendo (virtual) pad", MODE="0660", GROUP="input"
EOF
# 3. Recharger les règles
udevadm control --reload-rules && udevadm trigger
2. Installation de Wolf (Docker Compose)
Utiliser le plugin Docker Compose Manager. Créer une stack nommée wolf.
Fichier docker-compose.yml :
services:
wolf:
image: ghcr.io/games-on-whales/wolf:stable
container_name: wolf
restart: unless-stopped
network_mode: host
privileged: true
environment:
- PUID=1000
- PGID=1000
- NVIDIA_DRIVER_CAPABILITIES=all
- NVIDIA_VISIBLE_DEVICES=all
- WOLF_LOG_LEVEL=INFO
volumes:
# Socket Docker (Vital pour que Wolf lance les jeux)
- /var/run/docker.sock:/var/run/docker.sock:rw
# Config et Data
- /mnt/user/appdata/wolf/config:/etc/wolf
- /mnt/user/appdata/wolf/data:/var/lib/wolf
# Sockets X11
- /tmp/.X11-unix:/tmp/.X11-unix:rw
# Périphériques (Vital pour les manettes)
- /dev/:/dev/:rw
- /run/udev:/run/udev:rw
# Montage du dossier Jeux
- /mnt/cache/Games:/games:rw
runtime: nvidia
# Règle vitale pour autoriser la création des manettes virtuelles
device_cgroup_rules:
- 'c 13:* rmw'
3. Configuration des Utilisateurs (Config.toml)
Fichier cible : /mnt/user/appdata/wolf/config/cfg/config.toml
A. Préparation des dossiers (Permissions)
Avant d'ajouter un utilisateur, créer son dossier spécifique et fixer les droits :
# Création du dossier perso
mkdir -p /mnt/user/appdata/wolf/steam-data-larry
# Application des droits (Utilisateur 1000)
chown -R 1000:1000 /mnt/user/appdata/wolf
chmod -R 777 /mnt/user/appdata/wolf
# Droits sur le dossier des jeux
chown -R 1000:1000 /mnt/cache/Games
chmod -R 777 /mnt/cache/Games
B. Le contenu du config.toml
Ajouter les blocs suivants à la fin du fichier. Notez l'ajout de la variable pour le clavier FR.
# --- Utilisateur 1 : Larry ---
[[profiles.apps]]
title = 'Steam-Larry'
start_virtual_compositor = true
icon_png_path = 'https://games-on-whales.github.io/wildlife/apps/steam/assets/icon.png'
[profiles.apps.runner]
type = 'docker'
image = 'ghcr.io/games-on-whales/steam:edge'
name = 'Steam-Larry'
env = [
'PROTON_LOG=1',
'RUN_SWAY=true',
'GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*',
# Clavier AZERTY (FR)
'XKB_DEFAULT_LAYOUT=fr'
]
# Montage 1 : Le dossier de jeux commun (/games)
# Montage 2 : Le dossier de CONFIG PERSO (/home/retro/.steam) -> Isolation des sauvegardes
mounts = [
'/mnt/cache/Games:/games:rw',
'/mnt/user/appdata/wolf/steam-data-larry:/home/retro/.steam:rw'
]
devices = []
# --- Utilisateur 2 : Thymon ---
[[profiles.apps]]
title = 'Steam-Thymon'
start_virtual_compositor = true
icon_png_path = 'https://games-on-whales.github.io/wildlife/apps/steam/assets/icon.png'
[profiles.apps.runner]
type = 'docker'
image = 'ghcr.io/games-on-whales/steam:edge'
name = 'Steam-Thymon'
env = [
'PROTON_LOG=1',
'RUN_SWAY=true',
'GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*',
'XKB_DEFAULT_LAYOUT=fr'
]
mounts = [
'/mnt/cache/Games:/games:rw',
'/mnt/user/appdata/wolf/steam-data-thymon:/home/retro/.steam:rw'
]
devices = []
4. Configuration Post-Installation
A. Appairage Moonlight
- Lancer Moonlight sur le client (PC, TV, Tablette).
- Noter le code PIN affiché.
- Consulter les logs Docker :
docker logs -f wolf - Cliquer sur le lien
http://IP_UNRAID:47989/pin/visible dans les logs pour entrer le PIN.
B. Déclaration des Jeux dans Steam
Par défaut, Steam ne voit pas le disque mappé.
- Lancer Steam via Moonlight.
- Aller dans Paramètres > Stockage.
- Ajouter un lecteur > Remonter à la racine
/> Sélectionner le dossier/games. - Le définir comme lecteur par défaut (étoile).
5. Astuces & Dépannage
- Le clavier est en QWERTY : Ajouter
'XKB_DEFAULT_LAYOUT=fr'dans la sectionenvdu fichierconfig.tomlet redémarrer Wolf. - Le conteneur Steam s'ouvre et se ferme instantanément : C'est un problème de droits. Relancer la commande
chown -R 1000:1000sur le dossier de données de l'utilisateur. - Lag / Image figée sur FireTV : Vérifiez le câble réseau ! Wolf est très sensible aux câbles défectueux. Préférez le WiFi 5GHz si le câble est douteux.
- Manette non détectée : Vérifiez que le fichier
/boot/config/gocontient bien le bloc UDEV et redémarrez le serveur.