--- title: Steam Headless created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, gaming, steam, headless, docker, bash, game-streaming, library] confidence: medium contested: true sources: - https://selfh.st/apps/?tag=Gaming - https://github.com/Steam-Headless/docker-steam-headless - https://headless.doctormckay.com/ --- # 🚂 Steam Headless > Lance un client Steam en mode headless dans un conteneur Linux avec un X server virtuel — permet d'utiliser Steam depuis un serveur distant, d'automatiser des tĂ©lĂ©chargements, ou de coupler avec [[app-sunshine]] pour streamer des jeux Steam via un GPU partagĂ©. | MĂ©tadonnĂ©e | Valeur | | :--- | :--- | | **Site web** | https://headless.doctormckay.com/ | | **GitHub** | https://github.com/Steam-Headless/docker-steam-headless | | **License** | MIT | | **Langage** | Bash / Dockerfile | | **Étoiles** | 225 ⭐ | | **DerniĂšre MAJ** | 2026-04-18 | | **CatĂ©gorie** | [[cat-gaming\|Gaming]] | ## Description **Steam Headless** est un projet communautaire qui rĂ©pond Ă  un besoin simple mais tricky : faire tourner un **client Steam complet** dans un environnement **sans Ă©cran physique** (serveur headless, container Docker, VM cloud). Valve ne fournit pas officiellement de client Steam headless — Steam attend un display X11/Wayland, un D-Bus, un audio sink, et refuse de se lancer en mode purement CLI. Ce projet fournit un **Dockerfile + scripts Bash** qui assemblent un environnement complet : Xvfb (X virtual framebuffer), PulseAudio, D-Bus, SteamCMD, le client Steam, et divers hacks pour bypass les dialogues GUI. Trois cas d'usage principaux : (1) **TĂ©lĂ©chargement de bibliothĂšque Steam** : on veut backup tous ses jeux Steam sur un NAS sans devoir laisser un PC allumĂ©. (2) **Steam + Sunshine** : on stream via [[app-sunshine]] depuis un serveur headless, et Steam tourne Ă  l'intĂ©rieur d'un container. Le GPU est partagĂ© entre Sunshine et le jeu via le GPU passthrough ou la virtualisation. (3) **CI/CD pour jeux Steam** : pour des projets qui ont un build/deploy automatisĂ© de leur jeu sur Steam (indĂ©), ou des runners pour le modding. Le projet **n'est pas officiel Valve** et dĂ©pend des hacks internes de Steam (utilisation de `xvfb-run`, `xdotool` pour simuler des clicks, `xdg-open`, etc.). Valve casse rĂ©guliĂšrement la compatibilitĂ© (sessions Steam Guard, mises Ă  jour de la binaire, intĂ©gration Proton). Le tag `contested: true` reflĂšte ce risque : le projet est utile mais fragile. Limites connues : pas de support multi-GPU propre (1 GPU = 1 instance), performances lĂ©gĂšrement dĂ©gradĂ©es vs client natif (overhead Xvfb), mises Ă  jour Steam imposent souvent un rebuild de l'image, certains jeux anti-cheat refusent le mode headless. Pour un usage stable : viser les jeux sans anti-cheat (solo, indie, simulation) ; pour les jeux compĂ©titifs, prĂ©fĂ©rer un client natif sur un PC physique. ## Installation ### Docker Compose (mĂ©thode recommandĂ©e) ```yaml # docker-compose.yml version: '3.8' services: steam-headless: build: context: https://github.com/Steam-Headless/docker-steam-headless.git dockerfile: Dockerfile container_name: steam-headless restart: unless-stopped network_mode: host # nĂ©cessaire pour le streaming environment: - DISPLAY=:0 - PUID=1000 - PGID=1000 - TZ=Europe/Paris - STEAM_USER=mon_compte_steam - STEAM_PASS=*** # voir note volumes: - ./config:/config - ./library:/home/steam/Steam - /etc/localtime:/etc/localtime:ro devices: - /dev/dri:/dev/dri # Intel/AMD GPU # runtime: nvidia # dĂ©commenter pour GPU NVIDIA ``` > ⚠ **SĂ©curitĂ© Steam Guard** : Ă©viter de mettre le mot de passe en variable d'environnement. PrĂ©fĂ©rer `steamcmd +login mon_user` puis suivre la procĂ©dure Steam Guard interactivement au premier lancement (cache le token ensuite). ### Avec GPU NVIDIA ```yaml services: steam-headless: runtime: nvidia environment: - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=all # ... reste identique ``` ### Installation manuelle (sans Docker) ```bash # Installer Xvfb, SteamCMD, dĂ©pendances sudo apt install -y xvfb xdotool x11-utils pulseaudio dbus-x11 mkdir -p ~/steam-headless cd ~/steam-headless # TĂ©lĂ©charger SteamCMD wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz tar -xvzf steamcmd_linux.tar.gz # Lancer Steam dans Xvfb xvfb-run -a -s "-screen 0 1280x720x24" ./steamcmd.sh +login mon_user +quit ``` ## Configuration - **Authentification** : premier lancement interactif requis pour le Steam Guard (code email). Ensuite, le token est mis en cache. - **TĂ©lĂ©chargements automatiques** : Steam Headless peut ĂȘtre couplĂ© Ă  un script qui installe les jeux par ID Steam (`steamcmd +app_update validate`). - **BibliothĂšque partagĂ©e** : mapper `/home/steam/Steam/steamapps` sur un volume NFS ou SMB pour servir la mĂȘme bibliothĂšque Ă  plusieurs containers. - **Audio** : PulseAudio configurĂ© pour rediriger vers null sink (pas de son en headless) ou vers un client rĂ©seau (PulseAudio over TCP). - **Lancement de jeux** : `steam -applaunch ` via `xvfb-run`. Pour les jeux Windows : Proton activĂ© par dĂ©faut. - **Sunshine integration** : ajouter Sunshine dans le mĂȘme compose file, partager `/home/steam/.steam`, configurer Sunshine pour streamer la session X. ## Alternatives ### Open Source - [[app-sunshine]] — Pour le game streaming, pas le tĂ©lĂ©chargement Steam. - [[app-games-on-whales]] — Approche conteneurisĂ©e plus complĂšte (Sunshine + audio + Steam intĂ©grĂ©s). - **SteamCMD** (Valve officiel) — CLI pur pour serveurs de jeux dĂ©diĂ©s, pas pour client Steam. - **heroic-games-launcher** (self-hosted) — Launchers alternatifs GOG/Epic/Amazon, parfois couplĂ©s Ă  Steam. - **steam-library-manager** (legacy) — GĂ©rer la bibliothĂšque Steam hors-ligne. - **Nilesoft Steam Manager** — Fork Proton pour installation propre. ### PropriĂ©taires - **Steam client officiel** (Valve) — Mode GUI standard, ne tourne pas headless. - **GeForce NOW**, **Xbox Cloud Gaming** — Cloud gaming SaaS, pas self-hosted. - **Boosteroid**, **Shadow PC** — Offres cloud PC, pas open source. ## SĂ©curitĂ© - **Compte Steam** : un compte « dĂ©diĂ© » au headless est recommandĂ©. Ne pas utiliser son compte principal si on stocke ses identifiants dans un compose file. - **Steam Guard 2FA** : obligatoire depuis 2015 pour la plupart des opĂ©rations. Activer Steam Mobile Authenticator pour ne pas dĂ©pendre de l'email. - **Anti-cheat** : EAC/BattlEye/VAC dĂ©tectent les environments conteneurisĂ©s/headless. **Jouer Ă  des jeux anti-cheat en headless peut entraĂźner un ban** — vĂ©rifier les CGU de chaque jeu. - **Docker socket** : ne JAMAIS monter `/var/run/docker.sock` dans le container Steam Headless (escalade de privilĂšges triviale). - **Mises Ă  jour** : les breaking changes Valve sont frĂ©quents (1-3x/an). PrĂ©voir une procĂ©dure de rebuild + test. - **GPU passthrough** : si VM, le passthrough PCI d'un GPU est trĂšs efficace mais nĂ©cessite IOMMU + isolation ACPI. Bien documenter. - **HTTPS Sunshine** : si couplĂ© Ă  [[app-sunshine]], la surface d'attaque augmente (2 services exposĂ©s). Penser Ă  un VPN ([[app-vpn]]). ## Ressources - [Site officiel](https://headless.doctormckay.com/) - [Repository GitHub](https://github.com/Steam-Headless/docker-steam-headless) - [Discussion Reddit (Ă©tat du projet)](https://reddit.com/r/selfhosted) - [Wiki Proton (compatibilitĂ© jeux)](https://www.protondb.com/) ## Pages LiĂ©es - [[cat-gaming]] — CatĂ©gorie parente - [[app-sunshine]] — Game streaming couplĂ© - [[app-games-on-whales]] — Stack conteneurisĂ©e complĂšte - [[app-pterodactyl]] — Panel pour serveurs SteamCMD - [[app-linuxgsm]] — CLI pour serveurs de jeux - [[recettes-docker-compose]] — Templates - [[securisation-home-lab]] — Anti-cheat et bans