Passer d'OpenSpeedTest à LibreSpeed : migration conseillée

Vous auto-hébergez un test de débit sur votre infrastructure et vous utilisez encore OpenSpeedTest ? Il est peut-être temps de regarder du côté de LibreSpeed. Moins connu, ce projet open source offre pourtant des avantages significatifs, aussi bien en termes de légèreté que de transparence. Voici pourquoi ce changement vaut le coup, et comment l’effectuer proprement avec Docker et Traefik.

OpenSpeedTest : des limites qui finissent par se faire sentir

OpenSpeedTest a longtemps été la solution de référence pour auto-héberger un test de débit. L’interface est propre, le déploiement Docker relativement simple, et ça fonctionne. Mais à l’usage, quelques problèmes finissent par émerger :

  • Licence propriétaire : malgré son aspect “self-hosted”, OpenSpeedTest n’est pas un logiciel libre. Le code source de l’interface n’est pas ouvert, ce qui va à l’encontre de l’esprit de l’auto-hébergement.
  • Image Docker lourde et opaque : l’image officielle est volumineuse, et il n’est pas toujours facile de savoir ce qu’elle contient réellement.
  • Mises à jour peu fréquentes : le projet a des périodes d’inactivité prolongées sur son dépôt GitHub, ce qui soulève des questions sur sa pérennité à long terme.
  • Absence de configuration avancée : les options pour personnaliser le comportement du serveur (chunk size, délai du test, etc.) sont quasi inexistantes dans la version auto-hébergée.
  • Consommation mémoire : l’overhead de l’application est non négligeable pour ce qui est, au fond, un simple serveur de test réseau.

LibreSpeed : l’alternative libre et légère

LibreSpeed est un projet entièrement open source (licence GNU LGPL v3), né de la volonté de proposer une alternative à Speedtest.net sans dépendance à des serveurs tiers. Le backend Docker est maintenu par la communauté linuxserver.io, garantissant des mises à jour régulières et une image construite de manière reproductible.

Ce que LibreSpeed apporte concrètement

CritèreOpenSpeedTestLibreSpeed
LicencePropriétaireGNU LGPL v3 (open source)
Image DockerLourde (~100 Mo+)Légère (~50 Mo)
MainteneurÉquipe ferméeCommunauté (librespeed + linuxserver.io)
Mises à jourIrrégulièresRégulières
PersonnalisationLimitéeVariables d’environnement, configuration JSON
Configuration TraefikManuelLabels standards
Multi-serveurNonOui (liste de serveurs)

Une mesure plus fiable

LibreSpeed implémente un protocole de test similaire à celui des outils professionnels. Il mesure :

  • Le débit descendant (download), via des requêtes HTTP de gros blocs aléatoires.
  • Le débit montant (upload), via des POST de données vers le serveur.
  • La latence (ping), via des requêtes répétées à intervalles réguliers.
  • La gigue (jitter), variation de la latence, souvent négligée par d’autres outils.

Tout se fait sans Flash, sans Java, sans plugin. Le frontend est en HTML5/JavaScript pur, et le backend en PHP ou Go selon l’image choisie.

[!TIP] L’image ghcr.io/librespeed/speedtest est hébergée sur GitHub Container Registry, ce qui évite les limitations de taux de Docker Hub dans les environnements CI/CD et homelab.

Déploiement avec Docker Compose et Traefik

Voici un exemple de configuration docker-compose.yml prêt à l’emploi pour intégrer LibreSpeed dans une infrastructure Traefik existante.

Prérequis

  • Un réseau Docker externe traefik_gateway déjà créé (docker network create traefik_gateway).
  • Traefik déployé et à l’écoute sur ce réseau.
  • Un enregistrement DNS (local ou public) pointant speed.home.lan vers votre hôte Docker.

docker-compose.yml

services:
  librespeed:
    image: lscr.io/linuxserver/librespeed:latest
    container_name: librespeed
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - CUSTOM_RESULTS=true
      - DB_TYPE=sqlite
      - PASSWORD="[PASSWORD]"
    volumes:
      - /rpool/docker/librespeed:/config
    restart: unless-stopped
    networks:
      traefik_gateway:
    labels:
      traefik.enable: "true"
      traefik.docker.network: "traefik_gateway"
      traefik.http.services.librespeed.loadbalancer.server.port: "80"
      traefik.http.routers.librespeed.rule: "Host(`speed.home.lan`)"
      traefik.http.routers.librespeed.entrypoints: "web"
      traefik.http.routers.librespeed.tls: "false"

networks:
  traefik_gateway:
    external: true

Explications des labels Traefik

  • traefik.enable: "true" — active la découverte automatique du conteneur par Traefik.
  • traefik.docker.network: "traefik_gateway" — précise sur quel réseau Traefik doit router le trafic (indispensable si le conteneur est sur plusieurs réseaux).
  • traefik.http.services.librespeed.loadbalancer.server.port: "8080" — LibreSpeed écoute sur le port 8080 en interne.
  • traefik.http.routers.librespeed.rule — définit la règle de routage par nom d’hôte.
  • traefik.http.routers.librespeed.entrypoints: "web" — utilise l’entrypoint HTTP (port 80). Adaptez à websecure si vous utilisez HTTPS.
  • traefik.http.routers.librespeed.tls: "false" — désactive TLS pour un usage purement interne. À activer si votre entrypoint est websecure.

Démarrage

docker compose up -d

Vérifiez que le conteneur est bien démarré et que Traefik a bien pris en compte la configuration :

docker compose ps
docker compose logs -f speedtest

Accédez ensuite à http://speed.home.lan depuis votre réseau local pour lancer un test.

Variantes utiles

Avec HTTPS et Let’s Encrypt

Si Traefik gère vos certificats TLS, il suffit de modifier les labels :

labels:
  traefik.enable: "true"
  traefik.docker.network: "traefik_gateway"
  traefik.http.services.librespeed.loadbalancer.server.port: "80"
  traefik.http.routers.librespeed.rule: "Host(`speed.home.lan`)"
  traefik.http.routers.librespeed.entrypoints: "websecure"
  traefik.http.routers.librespeed.tls: "true"
  traefik.http.routers.librespeed.tls.certresolver: "letsencrypt"

Variables d’environnement disponibles

LibreSpeed expose plusieurs variables pour personnaliser son comportement :

environment:
  MODE: standalone           # standalone ou multiserver
  TELEMETRY: "false"         # désactive la collecte de données
  ENABLE_ID_OBFUSCATION: "true"
  PASSWORD: "monmotdepasse"  # protège l'accès aux résultats
  DISABLE_IPINFO: "false"    # affiche les infos IP du client

[!NOTE] En mode standalone, une seule instance fait office de serveur de test. Le mode multiserver permet d’exposer plusieurs serveurs géographiquement distribués et de laisser le client choisir le plus proche.

Conclusion

La migration d’OpenSpeedTest vers LibreSpeed est rapide, indolore, et apporte des bénéfices concrets : une image plus légère, un code source auditable, des mises à jour régulières, et une bien meilleure intégration dans un écosystème Docker/Traefik. Pour un homelab soucieux de la qualité et de l’ouverture de ses outils, c’est un choix qui s’impose naturellement.

Sources

Catégories : Homelab 
Tags: Docker 

Suggestions de lecture :