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
vainfoounvidia-smicô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(uniquementSYS_ADMINpour Sunshine), désactiver le réseau en--internalpour les conteneurs de jeu et n'exposer que Sunshine ennetwork_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
- Site officiel : https://games-on-whales.github.io
- GitHub : https://github.com/games-on-whales/gow
- Wiki : https://github.com/games-on-whales/gow/wiki
- Discord : https://discord.gg/Y8dNbWuT3q
- Sunshine (upstream) : https://github.com/LizardByte/Sunshine
- Moonlight (client) : https://moonlight-stream.org
- Wiki Arch — Game streaming : https://wiki.archlinux.org/title/Game_streaming