Files
2026-06-09 18:40:21 +02:00

7.4 KiB


title: Games on Whales created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, gaming, game-streaming, sunshinedeck, docker, bash] confidence: high contested: false sources: [https://selfh.st/apps/?search=Games+on+Whales]

Games on Whales 🐳

Wrapper Docker pour Moonlight/Sunshine qui transforme un serveur Linux en plateforme de streaming de jeux gaming AAA à la Steam Remote Play / NVIDIA GameStream, en HTML5 ou client natif.

Métadonnée Valeur
Site web https://games-on-whales.github.io
GitHub https://github.com/games-on-whales/gow
License MIT
Langage Bash / Docker
Étoiles 126
Dernière MAJ 2025
Catégorie cat-gaming

Description

Games on Whales (GoW) est un projet open source qui répond à une question simple : « et si mon serveur headless Linux, sans écran, sans clavier ni GPU gaming à demeure, pouvait faire tourner mes jeux AAA et les streamer vers n'importe quel client léger, partout dans le monde ? » Il encapsule Sunshine (serveur de streaming GameStream/Apollo open source, fork de NVIDIA GameStream) et un ensemble de daemons Linux dans des conteneurs Docker spécialisés, pilotés par un superviseur Bash.

L'architecture sépare proprement les responsabilités. Un conteneur base virtualise une session X11/Wayland avec Xvfb ou un GPU réel via /dev/dri (Intel/AMD/NVIDIA). Un conteneur sunshine expose le serveur de streaming sur le réseau et gère l'appairage des clients Moonlight. Un conteneur wolf (optionnel) prend en charge l'input mapping (clavier, souris, manette) et le forwarding audio via PulseAudio/PipeWire. Enfin des conteneurs applicatifs lancent les jeux : Steam, Heroic (Epic/GOG), Bottles, Lutris, ou des binaires natifs. Chaque conteneur peut être démarré/arrêté individuellement via l'API gRPC exposée par le superviseur.

L'output peut être consommé aussi bien par le client Moonlight natif (Windows, macOS, Linux, Android, iOS, TV, Steam Deck) que par un client web HTML5 basé sur WebRTC (projet wolf-ui). Cela permet de jouer depuis un navigateur sans rien installer, y compris depuis un Chromebook ou un iPad. La latence, en local LAN, descend sous les 20 ms avec encodage matériel (NVENC, VAAPI, QSV) ; en WAN, elle dépend de la bande passante et de l'encoder choisi (H.264, HEVC, AV1).

Installation

Docker Compose (méthode officielle)

version: "3.8"
services:
  gow:
    image: gamesonwhales/gow:latest
    container_name: gow
    privileged: true
    restart: unless-stopped
    network_mode: host   # requis pour streaming basse latence
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /tmp/.X11-unix:/tmp/.X11-unix
      - ./config:/config
      - ./games:/games
    devices:
      - /dev/dri:/dev/dri   # GPU Intel/AMD
      # NVIDIA : installer nvidia-container-toolkit et décommenter
      # - /dev/nvidia0:/dev/nvidia0
      # - /dev/nvidiactl:/dev/nvidiactl
      # - /dev/nvidia-uvm:/dev/nvidia-uvm
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - ENABLE_VNC=true
      - SUNSHINE_PASSWORD=changeme

Prérequis Linux

# Ubuntu 24.04
sudo apt install -y docker.io docker-compose-v2 nvidia-driver-550 nvidia-container-toolkit
sudo usermod -aG docker $USER
# Lier le socket X
sudo chmod 777 /tmp/.X11-unix
# Activer les cgroups v2 (requis par Sunshine)
sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"

Installation bare-metal

Le dépôt propose un script d'amorçage qui installe systemd, configure les cgroups et déploie les conteneurs ; cependant la voie Docker Compose est recommandée pour l'isolation, la portabilité et la mise à jour.

Configuration

Le fichier config/gow.conf (ou variables d'environnement) contrôle :

  • GPU : choix VAAPI (Intel/AMD), NVENC (NVIDIA), ou software x264. Vérifier via vainfo ou nvidia-smi côté hôte.
  • Encoder : H.264 (compatibilité max), HEVC (H.265, meilleurs débits), AV1 (NVIDIA RTX 40+, Intel Arc).
  • Résolution / framerate : 720p60, 1080p60, 1440p120, 4K60 selon GPU et bande passante.
  • Bitrate : adaptatif de 5 à 150 Mbps.
  • Audio : PulseAudio/PipeWire sink virtuel, bitrate opus, son surround 5.1/7.1.
  • Input : auto-mapping clavier/souris, support manette Xbox/PS5/DualSense, gyro, touchpad.
  • Sessions : Sunshine permet multi-utilisateurs avec mots de passe et pin appairage.
  • Wake-on-LAN : réveil du serveur à la connexion d'un client.

L'API gRPC exposée par GoW permet de lister, lancer, arrêter, suspendre des sessions et d'inspecter les métriques Prometheus. Un dashboard Web UI (projet wolf-ui) affiche l'état en temps réel, la liste des clients connectés et un bouton « Play » par jeu.

Alternatives

Open Source

  • Sunshine standalone — sans wrapper Docker, configuration manuelle Sunshine.
  • Moonlight — client (non serveur) open source pour GameStream/Sunshine.
  • Steam Remote Play — fonctionnalité intégrée à Steam, bridée au catalogue Steam.
  • Parsec (gratuit pour usage personnel) — fermé mais populaire, faible latence.
  • Neko — navigateur distant + apps, plus orienté collaboration que gaming.
  • Selkies-GStreamer — équivalent Google, base sur GStreamer WebRTC.
  • Wolf (projet upstream) — version Rust/WebAssembly du client, intégré à GoW.

Propriétaires

  • NVIDIA GeForce NOW — cloud gaming loué, pas auto-hébergé.
  • Xbox Cloud Gaming (xCloud) — Microsoft, pas auto-hébergé.
  • Amazon Luna — cloud gaming Amazon, pas auto-hébergé.
  • Boosteroid, Shadow PC — VM gaming distantes.

Sécurité

Games on Whales donne un accès distant quasi-total à votre machine (clavier/souris/manette) — la surface d'attaque est élevée :

  • Authentification forte Sunshine : activer le pin à 4 chiffres + mot de passe utilisateur, jamais désactiver.
  • TLS : Sunshine supporte HTTPS via certificat Let's Encrypt (acme.sh ou Caddy en reverse proxy). En LAN un certificat auto-signé est acceptable, mais en WAN TLS est obligatoire (WebRTC et Sunshine chiffrent déjà en SRTP/DTLS, le TLS ajoute l'authentification du serveur).
  • Fail2ban sur les ports Sunshine (47984, 47989, 47990, 47998, 48010) contre les scans d'appairage.
  • WireGuard/Tailscale : préférez un VPN maillé à une exposition publique, surtout pour les sessions de bureau à distance.
  • Pare-feu : n'ouvrir que les ports Sunshine vers l'IP du client (ou un sous-réseau VPN).
  • Sandbox conteneurs : limiter capabilities (uniquement SYS_ADMIN pour Sunshine), désactiver le réseau en --internal pour les conteneurs de jeu et n'exposer que Sunshine en network_mode: host.
  • Mises à jour : Sunshine et GoW publient fréquemment des correctifs de sécurité ; automatiser avec Watchtower ou Renovate.
  • Désactiver le VNC (ENABLE_VNC=false) en production, sauf pour debug local.

Ressources

Pages Liées