Files
docudjeex/content/fr/3.serveex/4.monitoring/3.speedtest-tracker.md
T

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.

speedtest-tracker

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. ::