NAS Synology – Surveillez votre connexion Internet avec Speedtest Tracker
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à déployer l'application Speedtest Tracker sur un NAS Synology, à l'aide d'un conteneur Docker ! Cette application sert à effectuer un suivi d'une connexion Internet grâce à l'exécution de tests de débit réguliers via le service Speedtest by Ookla.
Chaque test de débit sera enregistré dans une base de données, ce qui permettra d'avoir des graphes et un historique des performances de votre connexion à Internet. Vous pouvez planifier les tests de débit et configurer des seuils d'alertes afin d'être notifié par e-mail en cas de problème de performances. Ceci est configurable pour le débit montant et le débit descendant, mais aussi pour le temps de réponse (ping) s'il est trop élevé. Au-delà des alertes par e-mail, vous pouvez être notifié sur Discord, Telegram, etc... via un système de Webhook.
Aujourd'hui, nous allons apprendre à installer Speedtest Tracker sur un NAS Synology grâce à la création d'un conteneur Docker dans Container Manager.
II. Installer l'application Speedtest Tracker sur son NAS
Avant de créer le conteneur, nous allons préparer un répertoire pour stocker ses données. Au sein du répertoire "docker", nous allons créer le répertoire "speedtest-tracker" afin de maintenir la logique habituelle : un répertoire par conteneur.
Ce qui donne :
Ensuite, dans le répertoire "speedtest-tracker", créez un répertoire nommé "data" qui servira à stocker les données du conteneur. De plus, sous le répertoire "data", créez un dossier nommé "keys" qui servira à stocker le certificat TLS et sa clé privée. Ceci vous permet de charger votre propre certificat si vous le souhaitez, sinon, c'est un certificat auto-signé qui sera stocké ici.
/docker/speedtest-tracker
---- data
------- keys
Lorsque les répertoires sont créés, vous pouvez lancer l'application Container Manager (Docker) pour créer un nouveau conteneur à partir d'un code de configuration Docker Compose.
Dans "Container Manager", cliquez sur "Projet" puis sur "Créer". Nommez ce projet "speedtest-tracker" puis indiquez le répertoire "/docker/speedtest-tracker" comme chemin pour ce conteneur. Autrement dit, l'option "Chemin" doit avoir pour valeur "/docker/speedtest-tracker". Comme ceci :
En ce qui concerne la "Source", choisissez l'option "Créer un fichier docker-compose.yml". Une zone de texte apparaît : qu'allons-nous écrire ici ? Nous allons récupérer le code du fichier "docker-compose.yml" disponible sur le site officiel du projet pour ensuite l'adapter.
Il y a plusieurs options pour stocker les données de l'application : SQLite, MySQL et PostgreSQL. Ici, nous allons choisir l'option "SQLite" qui est la plus légère, mais vous pouvez adapter le fichier Docker Compose, si besoin.
Voici le code à copier-coller par défaut :
version: '3.4'
services:
speedtest-tracker:
container_name: speedtest-tracker
ports:
- 8080:80
- 8443:443
environment:
- PUID=1000
- PGID=1000
- DB_CONNECTION=sqlite
volumes:
- /path/to/data:/config
- /path/to-custom-ssl-keys:/config/keys
image: lscr.io/linuxserver/speedtest-tracker:latest
restart: unless-stopped
Désormais, nous allons devoir modifier plusieurs options :
- Les deux valeurs sous "volumes" pour faire le mappage vers les répertoires "data" et "data/keys" créés précédemment.
- Les deux valeurs nommées "PUID" et "PGID" car il s'agit des identifiants uniques correspondants au compte utilisateur à utiliser pour exécuter le conteneur. Ici, l'utilisateur "docker" de mon NAS est spécifié en indiquant son UID "1027" et son GID "100".
Voici un lien utile si vous ne savez pas quoi indiquer pour "PUID" et "GUID" :
Vous pouvez aussi adapter les numéros de ports pour les connexions HTTP et HTTPS. Ici, les ports externes 8081 (le port 8080 est déjà utilisé sur mon NAS) et 8443 sont utilisés.
Ce qui donne le fichier suivant :
version: '3.4'
services:
speedtest-tracker:
container_name: speedtest-tracker
ports:
- 8081:80
- 8443:443
environment:
- PUID=1027
- PGID=100
- DB_CONNECTION=sqlite
volumes:
- /volume1/docker/speedtest-tracker/data:/config
- /volume1/docker/speedtest-tracker/data/keys:/config/keys
image: lscr.io/linuxserver/speedtest-tracker:latest
restart: unless-stopped
Une fois le fichier Docker Compose prêt, vous pouvez continuer jusqu'à la fin pour créer le conteneur.
L'image "lscr.io/linuxserver/speedtest-tracker" sera téléchargée à partir du Docker Hub et utilisée pour exécuter le conteneur.
Voilà, le conteneur Docker "speedtest-tracker" est actif !
En principe, vous pouvez vous connecter à l'application avec votre navigateur :
https://<adresse IP du NAS>:8443
Vous devriez arriver sur la page de connexion à l'application :
Pour vous connecter, utilisez les informations suivantes :
- Adresse e-mail : [email protected]
- Mot de passe : password
Bienvenue sur Speedtest Tracker !
III. Utilisation et configuration de Speedtest Tracker
A. Modifier le mot de passe du compte admin
La première des choses à effectuer, c'est personnaliser le compte administrateur créé par défaut afin de modifier son nom et son mot de passe. Cliquez sur "Users" à gauche dans l'interface de Speedtest Tracker, puis cliquez sur le nom "Admin".
Un formulaire sera visible et vous permettra de personnaliser le nom, l'adresse e-mail et le mot de passe. Ceci est important pour sécuriser l'accès à votre application. Par ailleurs, via le bouton "New User", vous pouvez créer un nouveau compte admin ou utilisateur lambda.
B. Effectuer un test de débit
Retournez sur le "Dashboard" afin de cliquer sur le bouton "Run speedtest", puis, "Ookla speedtest" pour lancer un test de débit ! Patientez un peu, puis actualisez la page pour visualiser le résultat de ce speed test ! Il sera immédiatement visible dans le tableau de bord, dans les graphes, et aussi en détail en cliquant sur "Results" dans le menu de gauche.
C. Planifier un test de débit
Pour planifier un test de débit, vous devez cliquer sur "General" sous "Settings". Cette section de l'application donne accès à tous les paramètres de configuration, y compris la possibilité de définir le fuseau horaire, ainsi que la planification d'un speedtest.
- Speedtest schedule : planifiez un test de débit, en utilisant le format "crontab" de Linux. L'exemple ci-dessous permet de lancer un test de débit toutes les 4 heures. Attention à ne pas effectuer des tests de débit trop fréquent, car si le serveur Speedtest est trop sollicité, il peut être banni par les opérateurs.
0 */4 * * *
- Prune results older than : supprimez les résultats plus anciens que X jours. Si vous indiquez "0", les anciens tests ne seront jamais supprimés.
- Speedtest servers : sélectionnez un ou plusieurs serveurs à utiliser pour effectuer le test de débit. Si vous ne sélectionnez rien, Speedtest sélectionnera le meilleur serveur à chaque fois.
Ce qui donne :
D. Configurer les seuils d'alertes
La section "Thresholds" située dans le menu de gauche permet de configurer différents seuils d'alertes : débit montant, débit descendant et temps de réponse au ping. Ceci permettra de recevoir des notifications par e-mail (ou par un autre moyen de communication) en cas d'incidents, selon les seuils définis par vos soins.
Ici, les seuils d'alertes sont positionnés à 500 Mbps pour le débit montant et le débit descendant, et à 100 ms pour le temps de réponse au ping. En principe, sur une connexion en fibre optique (FTTH), le temps de réponse au ping ne dépasse pas 20 ms. Adaptez ces valeurs en fonction de votre type de connexion et du niveau de service attendu (sur de l'ADSL, le ping sera plus élevé).
E. Configurer les notifications par e-mail
Pour finir, nous allons voir comment configurer les notifications par e-mail. La configuration est un peu plus complexe, car nous allons devoir configurer les variables d'environnement de notre conteneur.
Vous devez modifier le fichier ".env" situé à la racine du dossier "data" de votre conteneur. L'éditeur de texte de DSM ne permettra pas de l'éditer en ligne, à moins de changer le nom du fichier : passez de ".env" à ".txt", par exemple. Une fois la modification terminée, il conviendra de remettre le nom d'origine.
Dans ce fichier, vous devez configurer le serveur SMTP à utiliser pour envoyer les e-mails en définissant un ensemble de variables :
MAIL_MAILER=smtp
MAIL_HOST=smtp.mail.fr
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=SuperMotDePasseCompteEmail
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="Speedtest Tracker - NAS"
Ici, le serveur "smtp.mail.fr" sera utilisé, sur le port 465 avec une connexion TLS. L'authentification sera effectuée à l'aide du compte "[email protected]" dont le mot de passe est "SuperMotDePasseCompteEmail". L'adresse e-mail de l'expéditeur est "[email protected]" et le nom utilisé "Speedtest Tracker - NAS".
Pour obtenir de l'aide supplémentaire pour la configuration de ces variables, vous pouvez lire cette page de la documentation.
Voici un exemple :
Une fois les modifications effectuées :
- Enregistrez le fichier.
- Redonnez-lui son nom d'origine (.env).
- Arrêtez le projet "speedtest-tracker" dans Container Manager.
- Démarrez le projet "speedtest-tracker" dans Container Manager.
Voilà, les informations pour le SMTP doivent être prises en compte. Si elles sont correctes, l'envoi d'e-mail fonctionnera.
Pour finir, vous devez activer les notifications par e-mail. Rendez-vous sur "Notifications" sous le menu "Settings" de l'interface web.
Cochez l'option "Enable mail notifications", ainsi que celle nommée "Notify on threshold failures" afin de recevoir une alerte par e-mail en cas de problème (selon les seuils configurés). L'option "Notify on every speedtest run" permet de recevoir un e-mail à chaque fois qu'un test de débit est exécuté. Pensez à ajouter un ou plusieurs destinataires dans la partie inférieure via le bouton "Add to recipients".
Cliquez sur "Test mail channel" pour effectuer un test : vous devriez recevoir un e-mail !
Par la suite, si une alerte est déclenchée, vous allez recevoir une notification. Voici un exemple :
Remarque : il y a un bug actuellement, car le bouton "View Results" présent dans l'e-mail renvoie vers une adresse en localhost, donc cela n'aboutit pas.
IV. Conclusion
L'application Speedtest Tracker est une application que vous pouvez auto-héberger sur un NAS ou un autre serveur afin de surveiller votre connexion Internet ! Sur un NAS, à son domicile, cette application a totalement sa place ! En entreprise, elle peut être utilisée aussi, notamment en l'absence de système de supervision plus complet.
Le tableau de bord est très sympa et le fait d'avoir un historique des tests de débit permet de suivre dans le temps les performances de sa connexion à Internet. Ceci est plus pertinent, plutôt que d'effectuer un test de débit de temps en temps.
Pour aller plus loin, je vous recommande de publier cette application avec le reverse proxy de DSM, ce qui permettra d'avoir un certificat TLS et d'utiliser un nom de domaine. Référez-vous à ce tutoriel :
Super article (comme d’habiture j’ai envie de dire !) mais une question subsiste : à l’heure de la protection des données, le fait d’utiliser un outil qui est relié à Ookla, réputé pour la revente de nos données (et comme beaucoup de site de speedtest d’ailleurs), est-elle si intéressante ? Merci pour votre travail
Au top comme d’hab merci beaucoup pour la qualité de tes articles!
Le monitoring de mon WAN est au top grace à toi –> https://www.speedtest.net/result/c/5d528370-df25-414d-93cb-a6c4b8a9fb6f
Merci beaucoup pour ce tuto, mais je cale après l’install…
J’ai un Syno sous DSM 7.2, le pare-feu est désactivé, le conteneur tourne, et pourtant j’ai un message d’erreur « Ce site est inaccessible » quand je vais sur https://mon_adresse_ip:8443/.
En complément :
– Il faut ajouter dans les paramètres .yml une ligne APP_KEY que l’on trouve ici : https://speedtest-tracker.dev/, sinon impossible de se connecter à l’interface de gestion.
– Quand je lance un test, il ne faut pas rafraîchir la page avant que le test soit terminé sinon ça l’interrompt.
– General/Settings n’apparaît sur la page d’accueil, donc je ne sais pas comment programmer des tests périodiques.
– Je n’ai pas trouvé comment configurer le pare-feu, donc pour l’instant je le désactive.
Pour la planification, il faut utiliser une variable d’environnement :
SPEEDTEST_SCHEDULE
et lui affecter au format cron une périodicité, ex :
0 */4 * * *
pour une exécution toutes les 4 heures
Ne pas oublier de rajouter également cette variable :
DISPLAY_TIMEZONE
avec la valeur :
Europe/Paris
afin d’être raccord dans les horodatages
Bonjour, je confirme bien la nouvelle version de Speedtest Tracker APP 0.21.2 n’a plus l’onglet GENERAL.