Dans le monde du gaming moderne, les jeux deviennent de plus en plus gourmands en termes de taille et de mises à jour. Chaque téléchargement peut rapidement saturer une connexion internet, surtout lorsque plusieurs appareils partagent la même bande passante.
Je prends pour exemple des jeux mainstream et AAA qui passent sans aucun problème a barre des 100Go !
L’addition devient vite salée si vous multipliez (comme moi… :)) les appareils destinées directement ou indirectement aux jeux vidéo. J’en compte personnellement 4 : mon PC au format desktop, la « console » du salon sous BazziteOS, le Steam Deck et, plus récemment, un mini PC destiné au remote play.
Comme déjà mentionné sur l’Open-Source Odyssey, j’ai pris le parti d’opter pour Steam comme plateforme de jeux car il propose depuis belle lurette la compatibilité avec Linux, notamment au travers de la couche d’interface Proton.
Au travers des incessants téléchargements et mises à jour quotidiennes, j’ai eu l’idée de vouloir « rationaliser », sachant que je télécharge la même chose plusieurs fois mais sur des appareils différents.
C’est ainsi qu’après quelque recherches je suis tombé sur le service auto hébergé LanCache (https://lancache.net/).
Après quelques recherches, je me rends compte rapidement que le service est prisé des LAN party (nostalgie quand tu nous tiens..) afin d’encaisser 100 PC qui vont télécharger le même jeu avec une bande passante Internet, somme toute limitée.
Dans cet article, nous allons explorer la mise en place du service LanCache, qui permettra non seulement d’accélérer les téléchargements de jeux pour vos appareils, mais également d’économiser précieusement votre bande passante internet.
Objectif du Projet : Pourquoi Installer un Serveur « LanCache » ?
Le projet LanCache repose sur une idée simple : stocker localement les données fréquemment téléchargées, comme les jeux et les mises à jour. Lorsqu’un appareil télécharge un jeu, il stocke une copie de ce jeu sur le serveur. Par la suite, si un autre appareil ou même le même appareil veut re-télécharger ce jeu, au lieu de recharger les données depuis Internet, elles sont récupérées localement sur le serveur.
Logiquement la vitesse de téléchargement, passe de votre bande passante Internet à la vitesse de votre LAN.
Pour ma part n’ayant pas encore sauté le pas, pour du 10 Gbe, je suis en 2.5 Gbe et déjà les résultants sont impressionnants.

Les bénéfices :
- Économie de bande passante : Vous réduisez l’utilisation de votre connexion internet en évitant les téléchargements répétitifs.
- Accélération des téléchargements : Le cache local est bien plus rapide que les serveurs distants, réduisant ainsi le temps d’attente pour les installations ou mises à jour.
- Centralisation : Toutes vos machines (PC, consoles, etc.) peuvent se connecter au même serveur, simplifiant la gestion.
Le projet est particulièrement pertinent si vous avez plusieurs appareils de jeu chez vous ou si vous souhaitez partager un cache avec des amis lors de LAN parties.

L’architecture du projet : un setup simple avec Proxmox et TrueNAS
En y regardant de plus près, pas de besoins particulièrement exotiques pour faire fonctionner la solution. Le tout peut fonctionner en natif Linux ou via du container docker.
La seule chose a prévoir c’est l’espace de stockage pour charger le nécessaire.
Mais avant de rentrer dans le dur penchons-nous 2 minutes sur le fonctionnement de LanCache.

LanCache : du proxy et du DNS
Oui LanCache, n’est pas en soi une tech révolutionnaire, mais juste un simple serveur proxy avec une fonction cache. En l’occurence sur LanCache c’est nginx qui va assurer ce role de proxy/cache.
En revanche comment fait-on le lien entre le serveur de proxy/cache et son client Steam (par exemple). Et bien, c’est par une simple redirection DNS qu’il est possible de rediriger toutes les requêtes de téléchargement de Steam vers le serveur LanCache.
Le service LanCache se décompose en plusieurs sous-services
- LanCache server, ou « monolithic » qui stocker vos jeux et sauvegarde.
- LanCache-DNS afin d’assurer la résolution de nom locale pour vos services de jeu (Steam, Origin, etC..)
- LanCache-SNI qui dans le cas d’Origin, par exemple, peut gérer les appels fait en HTTPS par le client vers le serveur LanCache
Pour le cas du DNS il faudra se poser la question : avez-vous déjà un serveur DNS privé qui puisse gérer les « overrides », c’est à dire des résolution de nom « forcée » par l’administreur du serveur DNS.
Dans le cas où vous possédez déjà un Pi-Hole, Unbound, Adguard ou autre, alors il n’y pas aucun besoin d’ajouter le service LanCache-DNS. Vous pouvez gérer depuis la section « Override ».
Si vous n’avez pas de serveur DNS local,
…alors plusieurs possibilités s’offrent à vous
- Editer localement votre fichier host pour faire matcher le nom du CDN Steam avec l’adresse privée de votre serveur LanCache.
- Utiliser le serveur DNS de LanCache pour tous vos appareils et donc modifier vos paramètres DHCP en conséquence pour que tous vos appareils recoivent la nouvelle adresse de votre serveur LanCache-DNS
A mon avis, si la seconde option vous tente, je vous conseillerais de considérer Pi-Hole afin de profiter d’une solution plus reconnue et profiter du blocage de pubs.
Et par ailleurs, si vous souhaitez mettre en place une solution DNS locale, je ne saurais que trop vous conseiller mon article sur le sujet 🙂
Hébergement du serveur « LanCache »
J’ai utilisé un container sur mon node Proxmox pour héberger LanCache.
Un simple container LXC peut faire l’affaire en lançant la commande docker qui va bien.
docker run \
--restart unless-stopped \
--name lancache \
-v /cache/data:/data/cache \
-v /cache/logs:/data/logs \
-p 80:80 \
-p 443:443 \
lancachenet/monolithic:latest
Le processus d’installation est détaillé ici
https://lancache.net/docs/containers/monolithic/ : Optimiser sa bande passante avec un serveur LanCache pour le gaming (Steam, Epic, Battle.net…)Si vous optez pour votre propre serveur DNS, je vous conseille de préciser l’upstream dans la commande docker run afin de ne pas boucler sur votre propre serveur DNS 😊
-e UPSTREAM_DNS="8.8.8.8"
Stockage sur TrueNAS via iSCSI
Afin de stocker le cache des jeux et des mises à jour, j’ai relié le container « LanCache » à mon serveur TrueNAS via un montage iSCSI. Cela permet d’avoir un espace de stockage rapide et extensible dédié spécifiquement à LanCache, tout en évitant de surcharger le disque principal du container.
L’iSCSI offre également de très bonnes performances et permet de s’affranchir de problèmes de droits que j’ai pu avoir avec un montage SMB ou NFS.
Pourquoi pas un cache local sur Proxmox ? Simplement car je n’ai pas assez d’espace disque pour les quelques To de jeux que je souhaite mettre en cache.
Et puis, comme je le disais lors de mon article sur le découplage : chaque serveur son boulot. TrueNAS c’est le stockage donc…
J’ai trouvé une vidéo assez intéressante sur l’intégration d’un disque distant iSCSI sur Proxmox.
En revanche, à l’avenir j’étudierais la faisabilité de porter le service LanCache Monolothic directement en docker sur TrueNAS. Cela évitera la consommation de bande passante inutile entre Proxmox et le montage iSCSI.
Automatisation du Préchargement avec steam-lancache-prefill
Un autre élément clé de mon architecture est l’ajout d’un second container pour exécuter steam-lancache-prefill. Ce dernier est conçu pour automatiser le préchargement des jeux et mises à jour dans le cache. L’idée est que, plutôt que d’attendre que les jeux soient demandés par les appareils, SteamPrefill va automatiquement télécharger et mettre à jour les jeux nécessaires, de préférence pendant les heures creuses (comme la nuit). Cela permet de toujours avoir un cache à jour et prêt à l’emploi.

steam-lan-cache prefill est un service proposé sur Github et peut être executé depuis un ordinateur standard ou depuis un serveur.
J’ai fais le choix de mettre en place le service sur un serveur car
- Le service doit tourner en tache de fond sans que j’y pense
- Les téléchargements des updates doit se faire régulièrement pour ne pas rendre le cache obsolète après quelques jours et donc finir par télécharger sur le CDN de Steam publique.
Encore une fois c’est un container LXC Proxmox qui me sert de support (Debian dans mon cas).
Je conseille de mettre en place le service directement sur le container sans avoir recours à docker. La raison : la programmation automatique de la recherche d’updates via Cron n’est pas dispo sur Docker.
Voici l’adresse pour la mise en place du service sur Linux https://tpill90.github.io/steam-lancache-prefill/install-guides/Linux-Setup-Guide/
Et enfin, l’adresse pour la mise à jour régulière du cache (pour ma part, une vérification toutes les heures) https://tpill90.github.io/steam-lancache-prefill/install-guides/Scheduled-Job/
Retour d’Expérience
Cette architecture permet une gestion centralisée du stockage, une optimisation de la bande passante et surtout une expérience utilisateur améliorée sur tous les appareils de jeu.
Sincèrement, une fois le setup fait, je n’y pense pas et cela ne demande aucun entretien.
Juste le plaisir de pouvoir profiter de la vitesse des téléchargements locaux et libérer sa bande passante Internet 👌