Vous voulez savoir si votre fournisseur d’accès Internet tient ses promesses ? Avec Speedtest Tracker, vous pouvez surveiller automatiquement la vitesse de votre connexion et conserver un historique détaillé de vos tests.
Cet outil open-source, basé sur le moteur de Speedtest.net, exécute des mesures régulières de débit descendant, montant et de latence, puis affiche les résultats sous forme de graphiques clairs.
Idéal pour détecter des ralentissements, prouver des baisses de performance à votre FAI ou simplement optimiser votre réseau, Speedtest Tracker s’installe facilement sur un serveur ou un NAS.
Dans ce guide, découvrez comment installer Speedtest Tracker en selfhosted et profiter de toutes ses fonctionnalités pour mesurer et suivre votre vitesse Internet au quotidien.
Qu’est-ce que Speedtest Tracker ?
Présentation de l’outil
Speedtest Tracker est une application open-source conçue pour mesurer automatiquement la vitesse de votre connexion Internet et enregistrer les résultats dans une base de données.
Accessible via une interface web claire et intuitive, il s’appuie sur le moteur officiel de Speedtest.net pour réaliser des tests de débit descendant, montant et de latence. L’outil peut être installé sur un serveur personnel, un NAS ou un Raspberry Pi, et fonctionne en continu sans intervention manuelle.

Différence avec un test Speedtest classique
Contrairement au test ponctuel que vous réalisez manuellement sur Speedtest.net, Speedtest Tracker exécute ses mesures à intervalles réguliers, même lorsque vous n’êtes pas devant votre écran.
Les données ne disparaissent pas après chaque test : elles sont stockées et historisées, ce qui permet d’observer l’évolution des performances réseau sur plusieurs jours, semaines ou mois. De plus, vous pouvez accéder à ces informations à tout moment pour comparer les résultats et détecter d’éventuels problèmes.
Avantages : suivi automatisé, historique, graphiques, open-source
L’un des principaux atouts de Speedtest Tracker est son suivi totalement automatisé, qui vous libère de la contrainte de lancer les tests vous-même. Chaque mesure est sauvegardée et présentée sous forme de graphiques lisibles, facilitant l’analyse des variations de débit et de latence.
Étant open-source, le logiciel est gratuit et peut être personnalisé selon vos besoins, avec la possibilité d’ajouter des intégrations ou de modifier son apparence. Cela en fait un outil idéal pour les particuliers exigeants comme pour les administrateurs réseau.
Pourquoi surveiller la vitesse de son Internet ?

Vérifier la qualité de service de votre FAI
Surveiller la vitesse de votre connexion vous permet de vérifier si votre fournisseur d’accès Internet (FAI) respecte bien les débits annoncés dans votre contrat. En disposant de mesures précises et régulières, vous pouvez appuyer vos réclamations en cas de performances inférieures aux engagements commerciaux.
Détecter les ralentissements et instabilités
Un suivi continu met rapidement en évidence des chutes de débit ou des hausses de latence, même si elles sont temporaires. Cela permet d’identifier des problèmes récurrents, qu’ils soient dus à votre FAI, à une saturation du réseau ou à un équipement défectueux.
Optimiser les performances réseau
En analysant les résultats sur la durée, vous pouvez repérer les périodes où votre connexion est la plus sollicitée et ajuster votre configuration réseau. Cela peut passer par un meilleur placement du routeur, un changement de canal Wi-Fi ou la mise à jour du matériel.
Cas pratiques : télétravail, streaming, gaming
Pour le télétravail, une connexion stable garantit des visioconférences fluides et un accès sans interruption aux outils en ligne. Les amateurs de streaming profiteront d’une meilleure qualité vidéo sans mise en mémoire tampon. Quant aux joueurs en ligne, un suivi précis du ping et de la stabilité de la connexion est essentiel pour éviter la latence et rester compétitif.
Installation de Speedtest Tracker avec Docker et Traefik
Si vous suivez les articles de ce blog, vous devez commencer à connaitre la routine.
Etape 1 : Création d’une entrée DNS sur son nom de domaine

Mon nom de domaine est géré par OVH. N’ayant pas d’IP Statique j’utilise la fonctionnalitéDynHost de OVH
Lors de la déclaration de mon entrée DNS , je ne déclare pas un enregistrement de type A mais un CNAME pour gérer la volatilité de mon IP publique de mon accès internet.
Etape 2 : Création du fichier docker-compose
Le fichier docker-compose est très simple. j’ai choisi d’utiliser une base SQLite pour gérer l’historique mais vous pouvez utiliser une base MariaDB, MySQL ou Postgres.
Comme d’habitude vous trouverez mon fichier docker-compose sur mon github : https://github.com/networkpulse/docker-compose-speedtest-tracker
Une clé d'application (APP_KEY) est utilisée pour le chiffrement. Il s'agit d'une chaîne codée en base64 qui est utilisée par Speedtest Tracker pour chiffrer et déchiffrer des données, telles que les sessions utilisateur et d'autres informations sensibles, et qui est requise dans le cadre du processus de configuration.
Pour générer cette clé vous pouvez utiliser la commande suivante sous Linux :
echo -n 'base64:'; openssl rand -base64 32;

Voici mon fichier docker-compose avec prise en charge de Traefik V3 :

- 1: PUID et PGID (obligatoire) : vous devez mettre ici la valeur qui correspond à votre ID utilisateur que vous utiliser sur votre serveur. Pour trouver l’id sous Linux d’un utilisateur il suffit d’utiliser la commande id

- 2: APP_KEY (obligatoire) : Clé utilisée pour chiffrer et déchiffrer les données.
- 3: DB_CONNECTION: Speedtest Tracker prend en charge plusieurs pilotes de base de données, notamment SQLite, MySQL et Postgres. J’ai choisi SQLite pour sa simplicité de mise en place et ne pas alourdir ma stack avec une gestion de base de données.
- 4: APP_URL et ASSET_URL: la première sert pour pour les URL utilisée pour les liens dans les e-mails et les notifications et la deuxième pour les ressources, nécessaire lors de l'utilisation d'un proxy inverse comme Traefik
- 5: SPEEDTEST_SCHEDULE: j’utilise cette variable pour programmer des tests automatique, si vous n’utilisez pas cette variable il faudra déclencher manuellement un test de débit. Il existe de nombreuses autres variables pour modifier l’interface et le comportement de speedtest-tracker, vous pouvez les consulter sur la documentation officielle : Inventaire complet de toutes les variables d'environnement permettant de configurer Speedtest Tracker (https://docs.speedtest-tracker.dev/getting-started/environment-variables).
- 6: SPEEDTEST_SERVERS: Liste séparée par des virgules des identifiants de serveurs à utiliser de manière aléatoire pour le test de vitesse. Le but du jeu est d’utiliser toujours le même serveur au plus proche de chez vous. Lorsque vous allez créer votre premier test, vous aurez une liste avec la localisation des serveurs, sinon vous pouvez utiliser une commande à l’intérieur du container pour afficher les serveurs disponibles. Biensûr vous pouvez utiliser plusieurs serveurs sur cette ligne ou cas où un serait indisponible.
J’utilise Portainer pour gérer mes stacks docker-compose, il faut suffit donc de copier le contenu du fichier dans Votre-Instance -> Stacks -> Editor -> Deploy/Update the stack

Utilisation de SpeedTest-Tracker
Une fois avoir lancé votre container, vous devriez arriver sur cette page.
Cliquer sur Sign In / Admin Panel

Les identifiants par défaut pour se connecter la première fois sont : admin@example.com/password


Création d’un nouvel utilisateur
C’est la première tâche à réaliser pour sécuriser votre installation. Cliquer sur Users -> New user


Créer une notification
J’aime bien recevoir sur mon téléphone les notifications pour me tenir informé des alertes ou des actions réalisées sur mon environnement. Pour cela j’utilise un serveur NTFY en selfhosted. (j'ai préparé un tutoriel pour sa mise en place, c'est vraiment très pratique pour centraliser ses notifications pour ses environnements)
Aller dans Settings -> Notifications -> Ntfy -> Add to Webhook et rentrer les informations de configuration. Le logiciel utilise de nombreuses autres moyens de notifications mail, discord, ... .

J’ai activé les notifications à chaque test pour avoir une idée du débit de ma connexion, mais aussi en fonction des limites de performances que j’ai défini dans l’onglet Tresholds pour le ping, débit, jitter, ...

Concrètement, si le download est inférieur à 900 ou l’Upload inférieur à 800 ou le Ping est supérieur à 10 ms une alerte est envoyée.
Lancer son premier test de vitesse
Avant de définir vos thresholds, vous devez effectuer un premier test de débit qui va servir de référence.
Cliquer sur le bouton Speedtest -> (sélectionner le serveur le plus proche de chez vous) -> Start

Pour connaitre les résultats ou le statut du test, vous pouvez consulter l’onglet Résults.


Pour une vue plus graphique et complète cliquer sur Dashboard -> Metrics (en haut à droite)

FAQ
Peux-tu m’expliquer la notion de PUID et de GUID sous Linux ?
- PUID (Process User ID) : identifiant unique de l’utilisateur sous lequel un processus s’exécute dans un système (souvent lié aux permissions).
- PGUID (Process Group ID) : identifiant unique attribué au groupe de processus, utilisé pour gérer et contrôler plusieurs processus ensemble.
Maintenant une explication appliquée à Docker :
- PUID (Process User ID) : Dans Docker, il sert à définir l’utilisateur UNIX qui exécute les processus dans le conteneur.
Exemple : PUID=1000 → le conteneur tourne avec l’UID 1000 (souvent l’utilisateur principal de ta machine hôte).
- PGID (Process Group ID) : Définit le groupe UNIX associé.
Exemple : PGID=1000 → le conteneur hérite des droits du groupe 1000 de ta machine.
Pourquoi c’est utile ?
Ça évite les problèmes de permissions quand tu montes des volumes (/mnt/data, /downloads etc.).
Si l’UID/GID du conteneur ne correspond pas à celui de ton utilisateur hôte, tu risques de te retrouver avec des fichiers inaccessibles.
Pour trouver le PUID et le PGUID d’un utilisateur, il faut utiliser la commande id sous Linux.
Comment afficher la liste des serveurs disponibles à l’intérieur du container speedtest-tracker ?
C’est simple il suffit d’utiliser la commande :
docker exec (nom-container) php /app/www/artisan app:ookla-list-servers
Comment analyser et interpréter les résultats de Speedtest-Tracker ?
Lecture des graphiques de débit descendant / montant
Les graphiques générés par Speedtest Tracker vous permettent de visualiser facilement l’évolution de votre débit descendant (download) et montant (upload).
Un débit descendant stable et conforme à votre offre garantit un bon confort pour le streaming ou le téléchargement, tandis qu’un débit montant suffisant est essentiel pour l’envoi de fichiers volumineux ou les visioconférences.
Comprendre la latence (ping)
La latence, ou « ping », mesure le temps de réponse entre votre appareil et le serveur de test. Plus cette valeur est basse, plus votre connexion est réactive. Une latence élevée peut entraîner des retards perceptibles lors de la navigation, des appels en visioconférence ou des parties de jeux en ligne.
Comprendre le jitter
Le jitter correspond à la variation de la latence au fil du temps. Même si votre ping moyen est correct, un jitter élevé peut provoquer des microcoupures, des freezes en streaming ou des saccades en gaming. C’est un indicateur clé pour juger de la stabilité de la connexion, et non seulement de sa vitesse brute.
Identifier les périodes de ralentissement
Grâce à l’historique et aux relevés automatiques, vous pouvez repérer les plages horaires où votre connexion devient plus lente ou instable. Ces ralentissements peuvent être liés à une surcharge du réseau chez votre FAI, à des pics d’utilisation dans votre foyer ou encore à des problèmes techniques récurrents.
Ces informations vous aident à cibler l’origine du problème et à argumenter auprès de votre fournisseur si nécessaire.
C’est pour ça que j’ai programmé un test à 3h du matin en pleine nuit et un autre à 15h en pleine journée. je pense qu’il serait aussi intéressant de faire un test entre 20h00 et 21h00, période très consommatrice de bande passante en France.
Comment mettre à l’heure votre container Speedtest-Tracker ?
Par défaut, les containers utilisent l’heure UTC sauf si tu leur donnes explicitement ton fuseau horaire. La bonne pratique est d’utiliser la variable d’environnement TZ (Time Zone). Voila ce que cela peut donner dans un fichier docker-compose :
services:
speedtest-tracker:
image: ...
environment:
- TZ=Europe/Paris
👉 Remplace Europe/Paris par ton fuseau horaire exact (par exemple Europe/Brussels, America/Montreal, etc.). Sous Linux la liste complète des fuseaux est disponible dans le répertoire /usr/share/zoneinfo.