Installation Wolf (Multi-User Cloud Gaming)
Objectif : Faire tourner plusieurs instances de Steam indépendantes sur un ou plusieur 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 ligneappend, ajouterAjouter à la toute fin(avecdeunvotreespaceconfigurationavant)Unraid OS:
nvidia-drm.modeset=1- Redémarrer Unraid.
C. Persistance des Manettes (Fichier Go)Manettes.
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
# Le mode host est impératif pour Moonlight (découverte réseau)
network_mode: host
privileged: true
environment:
- PUID=1000
- PGID=1000
- NVIDIA_DRIVER_CAPABILITIES=all
- NVIDIA_VISIBLE_DEVICES=all
- WOLF_LOG_LEVEL=INFO
volumes:
# SocketCRITIQUE : Permet à Wolf de piloter le Docker (Vitald'Unraid pour que Wolf lancelancer les jeux)jeux
- /var/run/docker.sock:/var/run/docker.sock:rw
# ConfigConfiguration et Datadonnées persistantes
- /mnt/user/appdata/wolf/config:/etc/wolf
- /mnt/user/appdata/wolf/data:/var/lib/wolf
# SocketsDossier X11où Xorg et Wayland stockent leurs sockets (utile pour la communication inter-processus)
- /tmp/.X11-unix:/tmp/.X11-unix:rw
# Périphériques (VitalIndispensable pour lescréer manettes)des périphériques
- /dev/:/dev/:rw
# Indispensable pour que Linux détecte l'insertion de la manette
- /run/udev:/run/udev:rw
# MontageConfiguration duspécifique dossierpour Jeuxle -plugin /mnt/cache/Games:/games:rwNvidia d'Unraid
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 d'un répertoire utilisateur :
# Création du dossier perso
mkdir -p /mnt/user/appdata/wolf/steam-data-larry<NOM_DU_COMPTE>
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
Pensez bien à faire ça à chaque nouvelle création d'un utilisateur. Sinon votre Moonlight se fermera à chaque lancement du Steam concerné, à cause d'un manque de droits.
B. Le contenu du config.toml
AjouterFichier lescible blocs:
nano à/mnt/user/appdata/wolf/config/cfg/config.toml
fin
À fichier.titre Notez l'ajout de la variableperso, pour le claviermoment, FR.j'ai complètement épuré l'affichage dans Moonlight.
Mais il est possible de laisser l'app Wolf UI qui permet en gros de choisir un utilisateur et dedans d'avoir les app de cet utilisateur.
Ça peut être pratique, mais là je vous montre simplement au plus simple pour Steam.
C'est tout à fait modifiable à vos souhaits plus tard. Je pourrais vous accompagner si besoin ☺️
Dans ce fichier vous supprimez tous ce qu'il y a entre :
[[profiles]]
id = 'moonlight-profile-id'
et
[[profiles]]
id = 'user'
name = 'User'
Et vous coller la conf de votre premier utilisateur :
Remplacer bien les quatre <NOM_DU_COMPTE>
Remplacer <url-image-png> par une image PNG. Dimension idéale width=112px height=150px -> Ça permettra à votre utilisateur de reconnaitre son compte dans Moonlight.
# --- Utilisateur 1 : Larry<NOM_DU_COMPTE> ---
[[profiles.apps]]
titleicon_png_path = 'Steam-Larry'<url-image-png>'
start_virtual_compositor = true
icon_png_pathtitle = 'https://games-on-whales.github.io/wildlife/apps/steam/assets/icon.png'<NOM_DU_COMPTE>'
[profiles.apps.runner]
typebase_create_json = 'docker'''{
image"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"]
}
}
'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'
]
image = 'ghcr.io/games-on-whales/steam:edge'
mounts = [
'/mnt/cache/Games:/games:home/retro/games-unraid:rw',
'/mnt/user/appdata/wolf/steam-data-thymon:<NOM_DU_COMPTE>:/home/retro/.steam:rw'
]
devicesname = '<NOM_DU_COMPTE>'
ports = []
type = 'docker'
On peut aussi faire une configuration qui isole tout, c'est-à-dire que personne ne voit les Steam de personne.
Mais ça implique qu'une instance Steam est installé pour autant de Moonlight installé.
Donc vu que j'ai 1 tel / 1 tablette / 2 TV, je n'ai pas envie que ça installe quatre instances rien que pour mon compte.
Mais sachez que c'est possible.
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. - Ça vous ouvre une page web qui demande de renseigner le PIN pour dévérouiller le Moonlight.
À la première ouverture de Steam ça installe le dépot puis il faut vous connecter à votre compte avec le Steam Guard.
B. Déclaration des Jeux dans Steam
Par défaut, Steam ne voit pas le disque mappé. Si vous ne fite rien il va installer les jeux dans votre répertoire appdata et il ne sera pas commun à tous compte.
- Lancer Steam via Moonlight.
- Aller dans Paramètres > Stockage.
- Ajouter un lecteur > Remonter à la racine
/> Sélectionner le dossier/.gamesgames-unraid - Le définir comme lecteur par défaut (étoile).
Il faudra faire ça pour chaque compte Steam.
5. AstucesAccès &à DépannageDistance (Ouverture de Ports)
Wolf ne gère pas l'UPnP. Pour jouer depuis l'extérieur, vous avez deux options :
Option A : VPN (Recommandé)
Utilisez Tailscale ou Wireguard (Plugins Unraid). C'est plus sécurisé et ne nécessite aucune ouverture de port.
Plus chiant côté FireTV ou autre :)
Option B : Ouverture de Ports (NAT)
Si vous n'utilisez pas de VPN, redirigez les ports suivants sur votre routeur vers l'IP de votre serveur Unraid :
LeTCPclavier est en QWERTY47984 :AjouterHTTPS'XKB_DEFAULT_LAYOUT=fr'dans la sectionenvdu fichierconfig.tomlet redémarrer Wolf.(Sécurité)LeTCPconteneur Steam s'ouvre et se ferme instantanément47989 :C'estHTTPun(Appairageproblème de droits. Relancer la commandechown -R 1000:1000sur le dossier de données de l'utilisateur.Web)LagTCP/ Image figée sur FireTV48010 :VérifiezRTSPle(Initialisationcâbleduréseau ! Wolf est très sensible aux câbles défectueux. Préférez le WiFi 5GHz si le câble est douteux.stream)ManetteUDPnon détectée47999 :VérifiezContrôleque(Manettes)
/boot/config/go: