Skip to main content

Installation Wolf (Multi-User Cloud Gaming)

Guide d'Installation : Wolf (Multi-User Cloud Gaming)

Objectif :

Faire tourner plusieurs instances de Steam indépendantes sur un seul GPU, accessibles via Moonlight.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.

  1. Aller dans PluginMain Nvidia> 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 section env du fichier config.toml et 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:1000 sur 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/go contient bien le bloc UDEV et redémarrez le serveur.