Skip to content

Sunshine Docker : ton serveur de streaming de jeux maison avec Moonlight

Brandon Visca
Date de publication:

💡 TL;DR

  • Sunshine = serveur de streaming de jeux open-source qui remplace NVIDIA GeForce Experience
  • Moonlight = client léger qui se connecte à Sunshine (Android, iOS, macOS, Linux, Windows, TV)
  • En Docker : un conteneur, quelques volumes, et tu joues sur ta TV depuis ton PC serveur
  • Latence quasi nulle en local, qualité 4K 120 FPS possible selon ton matériel

Tu as un bon PC dans ta chambre ou ton bureau, mais tu veux jouer sur le canapé devant la TV du salon. Ou bien tu as monté une bête de course dans ton placard et tu veux y accéder depuis ton laptop pas très puissant.

Jusqu’à récemment, la seule solution “simple” c’était NVIDIA GeForce Experience avec GameStream. Sauf que NVIDIA a tué GameStream en 2023. Et si t’as pas de carte NVIDIA, t’étais juste dans la merde.

Sunshine est arrivé comme alternative open-source, universelle et indépendante du fabricant de GPU. AMD, Intel, NVIDIA : tout le monde est le bienvenu. Et quand tu le mets dans un conteneur Docker, la mise à jour et la gestion deviennent triviales.

Dans ce guide, on installe Sunshine sur ton serveur, on le configure pour encoder en HEVC, on ajoute Moonlight sur tes appareils clients, et on optimise la latence pour que ce soit fluide.

Table des matières

Table des matières

Ce dont tu as besoin

Avant de lancer quoi que ce soit, vérifie que ton matériel suit :

Si tu débutes avec Docker, j’ai écrit un guide qui liste 10 services essentiels à auto-héberger avec Docker. Sunshine en fait partie.

Sunshine, c’est quoi exactement ?

Sunshine est un serveur de streaming de jeux open-source. Il capture l’écran de ton PC, l’encode en temps réel et l’envoie à un client via ton réseau local (ou à distance via VPN).

Analogie simple : c’est comme si tu avais une GeForce NOW chez toi, sauf que c’est TOI qui contrôles le serveur.

CritèreSunshineParsecSteam Link
Open source✅ Oui🔴 Non🔴 Non
Client officielMoonlight (open)ParsecSteam Link
Qualité max4K 120 FPS HDR4K 60 FPS1080p 60 FPS
EncodeursNVENC, QuickSync, VCE, AMFNVENC, AMFNVENC, QuickSync
Audio5.1/7.1 surroundStéréoStéréo
Hors réseau localVPN nécessaireOui (relay cloud)Oui (Steam relay)

Verdict :

Architecture et ports pour sunshine docker

Sunshine écoute sur plusieurs ports :

En Docker, tu dois mapper TOUS ces ports. En mode host c’est plus simple, mais en mode bridge (port mapping explicite) c’est plus propre et sécurisé.

Installation sunshine docker avec Docker Compose

Crée un dossier dédié :

mkdir -p ~/docker/sunshine && cd ~/docker/sunshine

Crée le fichier docker-compose.yml :

version: "3.8"

services:
  sunshine:
    image: lizardbyte/sunshine:latest
    container_name: sunshine
    restart: unless-stopped
    # Mode host recommandé pour Sunshine (besoin d'accès au GPU et au réseau)
    network_mode: host
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - ./config:/config/sunshine
      - /dev/shm:/dev/shm  # Mémoire partagée pour le capture d'écran
    devices:
      # Intel iGPU (Quick Sync)
      - /dev/dri:/dev/dri
      # Si NVIDIA : ajouter les runtime devices
    # Décommenter pour NVIDIA (nécessite le toolkit NVIDIA Docker)
    # runtime: nvidia
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: 1
    #           capabilities: [gpu]

Lance le conteneur :

docker compose up -d

Rends-toi sur http://<IP-DU-SERVEUR>:47989 pour la configuration initiale.

⚠️ Important : le mode network_mode: host signifie que Sunshine utilise la pile réseau de l’hôte. C’est nécessaire pour que la découverte mDNS fonctionne et que les ports UDP soient correctement gérés. Si tu préfères le mode bridge, prépare-toi à mapper manuellement tous les ports UDP listés ci-dessus.

Configuration initiale de Sunshine

1. Créer un compte administrateur

À la première connexion, Sunshine te demande de créer un utilisateur. Choisis un mot de passe fort, c’est l’accès à ton serveur de jeux.

2. Configurer l’encodeur

Va dans Configuration > Audio/Video :

RéglageValeur recommandée
EncoderAuto-détecté (QuickSync pour Intel, NVENC pour NVIDIA, AMF pour AMD)
RésolutionNative (ou 1920x1080 si le client est faible)
FPS60 ou 120 selon l’écran client
Bitrate20 Mbps pour 1080p60, 50 Mbps pour 4K60
CodecHEVC (H.265) si ton client le supporte, sinon H.264

L’encodeur matériel est crucial. Sans lui, le CPU encode en software et la latence explose.

3. Ajouter des applications

Dans Applications, ajoute les jeux ou launchers que tu veux streamer :

Name: Steam
Command: steam.exe  (ou /usr/bin/steam sur Linux)
Image path: (optionnel, logo Steam)

Tu peux aussi ajouter le bureau entier : laisse le champ Command vide.

4. Activer l’accès distant (optionnel, avec VPN)

Si tu veux jouer depuis l’extérieur, NE fais PAS confiance à l’UPnP. Utilise un VPN. J’ai détaillé la méthode dans mon guide sur WireGuard Docker pour sécuriser l’accès à ton homelab. Une fois connecté en VPN, ton client Moonlight voit Sunshine comme s’il était en local.

Installer Moonlight sur tes appareils

Moonlight est le client officiel de Sunshine. Il est disponible partout :

Appairage

  1. Ouvre Moonlight sur ton appareil client.
  2. Il devrait découvrir automatiquement ton serveur Sunshine via mDNS (si tu es sur le même réseau local).
  3. Sinon, ajoute manuellement l’IP du serveur.
  4. Sunshine affiche un code PIN à 4 chiffres sur l’écran du serveur. Saisis-le dans Moonlight.
  5. C’est appairé. Tu ne referas cette opération qu’une seule fois.

Optimiser la latence

Le streaming de jeux vit ou meurt selon la latence. Voici les réglages qui comptent vraiment :

Réseau

Encodeur

Réglages Moonlight

Dans les paramètres du client Moonlight :

Serveur

Docker sur un NAS ou serveur sans écran

Si tu veux faire tourner Sunshine sur un NAS ou un serveur headless (sans écran physique), il faut simuler un écran virtuel.

Méthode 1 : Dummy HDMI plug

Branche un faux écran HDMI (5€ sur Amazon) sur le serveur. L’OS détecte un écran et Sunshine peut capturer.

Méthode 2 : Écran virtuel (Linux)

Sur Linux, installe dummy-dkms ou evdi pour créer un écran virtuel :

sudo apt install xserver-xorg-video-dummy

Puis configure /etc/X11/xorg.conf.d/dummy.conf avec une résolution fixe.

Méthode 3 : Parsec VDD (Windows)

Sur Windows, installe le driver d’affichage virtuel de Parsec. C’est gratuit et ça marche avec Sunshine.

Comparaison avec un homelab média

Si tu as déjà un serveur média avec Jellyfin, Sunshine s’intègre parfaitement dans la même stack. Tu peux même utiliser le même serveur physique : Jellyfin pour les films, Sunshine pour les jeux. Assure-toi juste que ton GPU a assez de mémoire vidéo pour les deux tâches (4 Go VRAM minimum pour être tranquille).

Pour centraliser tous tes services dans un beau tableau de bord, j’ai aussi un guide sur Homer Dashboard. Tu pourras ajouter un lien vers ton Sunshine et voir en un coup d’œil si le conteneur est up.

Dépannage courant

Moonlight ne trouve pas le serveur

Latence trop élevée

Écran noir dans Moonlight

Manette non reconnue

Conclusion

Sunshine + Moonlight, c’est la solution la plus propre pour streamer tes jeux depuis ton PC vers n’importe quel écran. Pas de dépendance à NVIDIA, pas d’abonnement cloud, pas de latence infernale. Juste toi, ton réseau local, et un conteneur Docker qui tourne discrètement.

Pour quelques euros de dummy HDMI et une heure de config, tu te retrouves avec un cloud gaming maison qui écrase GeForce NOW sur la latence et la qualité d’image.

Maintenant, branche ta manette et va camper les mid.

Previous
Technitium DNS Server : installe ton bloqueur de pubs libre (2026)
Next
Focalboard Docker : alternative Notion/Trello auto-hébergée