9.1 KiB
title, description
| title | description |
|---|---|
| Speedtest Tracker | Installer Speedtest Tracker pour mesurer et historiser automatiquement le débit de votre connexion internet, exposé avec SWAG. |
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
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
::note{to="https://docs.linuxserver.io/images/docker-speedtest-tracker/"}
Nous utiliserons l'image Docker maintenue par LinuxServer.io ::
::file-tree
tree: /: - srv: - docker: - speedtest-tracker: - compose.yaml - .env - data: - config/
::
::steps{level="3"}
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=${GUID}
- 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 GUID 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 GUID, par exemple :
SCHEDULE=15 */6 * * * # toutes les 6 heures
API_KEY=base64:zihejehkj8_nzhY/OjeieR= # votre clé
PUID=1000
GUID=1000
PORT=3225 # port d'accès à l'interface web
::tip{icon="" to="https://docs.speedtest-tracker.dev/getting-started/environment-variables"} ✨ Astuce : vous pouvez configurer d'autres variables d'environnement en vous référant à la documentation officielle. ::
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
::note
📋 Prérequis :
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.
::warning
Speedtest Tracker n'utilise pas d'authentification multifacteur. L'exposer sur internet pourrait compromettre les appareils connectés. Ne le faites que si vous utilisez un système multifacteur comme TinyAuth ou Authentik. Sinon, évitez SWAG et préférez un VPN comme Wireguard. ::
::steps{level="3"}
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
::note
Par défaut, SWAG ne connaît pas le nom « speedtest-tracker ». Pour autoriser l'accès, vous devez ajouter le réseau de Speedtest Tracker au compose.yml 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é.
::note
Ceci suppose que le réseau de Speedtest Tracker s'appelle 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;
}
}
::note{to="/serveex/security/tinyauth#exposing-tinyauth-with-swag"}
Le bloc 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é.
::
::tip{icon=""}
✨ Vous pouvez protéger cette application avec Authentik plutôt que TinyAuth, en ouvrant speedtest.subdomain.conf et en décommentant
include /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.
::