Speedtest Tracker
Speedtest Tracker est un conteneur qui permet de planifier des tests de débit réguliers afin d'historiser l'état de la connexion internet de votre serveur.
![]()
Installation
- /
- srv
- docker
- speedtest-tracker
- compose.yaml
- .env
- data
- config
- speedtest-tracker
- docker
- srv
Générer une clé d'application
Dans un terminal, générez une clé avec la commande suivante :
echo -n 'base64:'; openssl rand -base64 32;
Notez la clé.
Déployer la stack
Ouvrez Dockge, cliquez sur compose, nommez la stack speedtest-tracker, puis collez ce qui suit :
---
services:
speedtest-tracker:
image: lscr.io/linuxserver/speedtest-tracker:latest
restart: unless-stopped
container_name: speedtest-tracker
ports:
- ${PORT}:80
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=Europe/Paris
- APP_KEY=${API_KEY}
- DB_CONNECTION=sqlite
- SPEEDTEST_SCHEDULE=${SCHEDULE}
volumes:
- /srv/docker/speedtest-tracker/data/config:/config
Renseigner vos variables d'environnement
Trouvez vos PUID et PGID avec la commande suivante :
id votreutilisateur
Dans le fichier .env, renseignez la variable API_KEY avec la clé générée et ajoutez une planification des tests au format cron, ainsi que vos PUID et PGID, par exemple :
SCHEDULE=15 */6 * * * # toutes les 6 heures
API_KEY=base64:zihejehkj8_nzhY/OjeieR= # votre clé
PUID=1000
PGID=1000
PORT=3225 # port d'accès à l'interface web
Déployez le conteneur et allez sur http://ipdevotreserveur:3225. Connectez-vous avec le compte [email protected] et le mot de passe password. N'oubliez pas de changer votre identifiant et votre mot de passe une fois connecté !
Terminé !
Exposer Speedtest Tracker avec SWAG
Nous partons du principe que vous avez déjà créé un sous-domaine du type
speedtest.mondomaine.fr dans votre zone DNS avec un CNAME pointant vers mondomaine.fr, et que, à moins d'utiliser Cloudflare Zero Trust, vous avez aussi redirigé le port 443 de votre box vers le port 443 de votre serveur dans vos règles NAT.Nous voulons maintenant exposer Speedtest Tracker sur internet pour y accéder à distance. Nous partons du principe que vous avez configuré le CNAME DNS de speedtest.mondomaine.fr pointant vers mondomaine.fr.
Créer le fichier subdomain.conf
Ouvrez le fichier speedtest.subdomain.conf :
sudo nano /srv/docker/swag/config/nginx/proxy-confs/speedtest.subdomain.conf
Configurez-le comme ceci :
## Version 2023/12/19
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name speedtest.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
#if ($lan-ip = yes) { set $geo-whitelist yes; }
#if ($geo-whitelist = no) { return 404; }
if ($geo-blacklist = no) { return 404; }
# Authentication options (uncomment as needed)
#include /config/nginx/ldap-server.conf;
#include /config/nginx/authelia-server.conf;
#include /config/nginx/authentik-server.conf;
location / {
# Basic auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# Per-location authentication
#include /config/nginx/ldap-location.conf;
#include /config/nginx/authelia-location.conf;
#include /config/nginx/authentik-location.conf;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app speedtest-tracker;
set $upstream_port 3225;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
}
Enregistrez et quittez. La configuration se met à jour en quelques secondes.
Ajouter le réseau de Speedtest Tracker à SWAG
compose.yaml de SWAG.Allez dans Dockge et modifiez le compose de SWAG pour y inclure le réseau de Speedtest Tracker :
---
services:
swag:
container_name: # ...
# ...
networks:
# ...
- speedtest-tracker
networks:
# ...
speedtest-tracker:
name: speedtest-tracker_default
external: true
Redémarrez la stack en cliquant sur « Deploy » et attendez que SWAG soit complètement démarré.
speedtest-tracker_default. Vous pouvez vérifier la connexion en visitant le tableau de bord de SWAG sur http://ipdevotreserveur:81.Terminé !
Patientez un instant, puis visitez https://speedtest.mondomaine.fr dans votre navigateur. Vous devriez être redirigé vers Speedtest Tracker. Vous pouvez vérifier l'état du service via le tableau de bord (http://ipdevotreserveur:81 depuis le réseau local).
Protéger Speedtest Tracker avec TinyAuth
Ajoutez la vérification forward-auth de TinyAuth directement dans speedtest.subdomain.conf, de la même façon que dans le tutoriel TinyAuth :
## Version 2023/12/19
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name speedtest.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
#if ($lan-ip = yes) { set $geo-whitelist yes; }
#if ($geo-whitelist = no) { return 404; }
if ($geo-blacklist = no) { return 404; }
# Authentication options (uncomment as needed)
#include /config/nginx/ldap-server.conf;
#include /config/nginx/authelia-server.conf;
#include /config/nginx/authentik-server.conf;
location /tinyauth {
internal;
proxy_pass http://tinyauth:3000/api/auth/nginx;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Uri $request_uri;
}
location @tinyauth_login {
return 302 https://tinyauth.mondomaine.fr/login?redirect_uri=$scheme://$http_host$request_uri;
}
location / {
auth_request /tinyauth;
error_page 401 = @tinyauth_login;
# Basic auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# Per-location authentication
#include /config/nginx/ldap-location.conf;
#include /config/nginx/authelia-location.conf;
#include /config/nginx/authentik-location.conf;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app speedtest-tracker;
set $upstream_port 3225;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
}
location /tinyauth s'exécute dans le conteneur de SWAG lui-même, SWAG doit donc être sur le réseau Docker de TinyAuth pour le joindre par son nom (tinyauth ici). Cela devrait déjà être en place depuis l'exposition de TinyAuth. Si vous rencontrez une erreur, revérifiez que le fichier compose de SWAG a toujours ce réseau rattaché.speedtest.subdomain.conf et en décommentantinclude /config/nginx/authentik-server.conf; et include /config/nginx/authentik-location.conf;.N'oubliez pas de créer une application et un provider dans Authentik.