Speedtest Tracker

🎯 Objectifs :
  • Installer Speedtest Tracker
  • Exposer Speedtest Tracker avec Swag

Speedtest Tracker est un conteneur permettant de programmer des speedtest régulier afin d'historiser l'état de la connexion internet de votre serveur.

speedtest-tracker

Installation


Structure des fichiers

root
└── docker
    └── speedtest-tracker
        └── data
            └── config

Dans un terminal, générez une clé avec la commande suivante :

echo -n 'base64:'; openssl rand -base64 32;

Notez la clé.

Ouvrez Dockge, cliquez sur compose, appelez la stack speedtest-tracker puis copiez collez ceci :

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:
            - /docker/speedtest-tracker/data/config:/config

Trouvez votre PUID et votre GUID en tapant la commande suivante :

id nomdutilisateur

Dans .env renseignez la variable API_KEY avec la clé que vous avez générée et un planning de test au format cron, ainsi que vos PUID et GUID, par exemple :

SCHEDULE=15 */6 * * * # toutes les 6h
KEY=base64:zihejehkj8_nzhY/OjeieR= # votre clé
PUID=1000
GUID=1000
PORT=3225 # port d'accès à la webui
Astuce : vous pouvez configurer d'autres variables d'environnements en consultant la documentation officielle.

Déployez le conteneur et rendez-vous sur http://ipduserveur:3225. Connectez vous avec le compte [email protected] et le mot de passe password. N'oubliez pas de changer votre id et votre mot de apsse une fois connecté !

Exposer Speedtest Tracker


📋 Prérequis :

Nous partons du principe que vous avez créé dans votre zone DNS un sous domaine du type speedtest.mondomaine.fr avec pour CNAMEmondomaine.fr et à moins que vous utilisiez Cloudflare Zero Trust, que vous avez déjà redirigé le port 443 de votre box vers le 443 de votre serveur dans les règles NAT.

Il s'agit maintenant d'exposer Speedtest Tracker sur internet, afin de pouvoir y accéder sans que vous soyez chez vous. Pour cela, nous partons du principe que vous avez configuré un sous domaine speedtest.mondomaine.fr dans votre zone DNS dont le CNAME pointe sur mondomaine.fr.

Ouvrez le fichier speedtest.subdomain.conf :

sudo vi /docker/swag/config/nginx/proxy-confs/speedtest.subdomain.conf

Paramétrez le comme tel :

## Version 2023/12/19

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    
    # indique que le sous-domaine doit être dirigé
    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; }
    # indique que les pays dans la blacklist sont intedits
    if ($geo-blacklist = no) { return 404; } 

    # enable for ldap auth (requires ldap-location.conf in the location block)
    #include /config/nginx/ldap-server.conf;

    # enable for Authelia (requires authelia-location.conf in the location block)
    #include /config/nginx/authelia-server.conf;

    # enable for Authentik (requires authentik-location.conf in the location block)
    #include /config/nginx/authentik-server.conf;

    location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;

        # enable for ldap auth (requires ldap-server.conf in the server block)
        #include /config/nginx/ldap-location.conf;

        # enable for Authelia (requires authelia-server.conf in the server block)
        #include /config/nginx/authelia-location.conf;

        # enable for Authentik (requires authentik-server.conf in the server block)
        #include /config/nginx/authentik-location.conf;

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        
        set $upstream_app speedtest-tracker; # Nom du conteneur
        set $upstream_port 3225; # Port interne conteneur
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }
}

Sauvegardez et quittez. La configuration va se mettre à jour en quelques secondes.

  • Par défaut, swag ne connait pas le nom "speedtest-tracker". Pour qu'il puisse y accéder, vous devez rajouter le réseau de swag dans le compose.yml de Speedtest Tracker.

Rendez-vous sur la stack de speedtest-tracker, puis cliquez sur éditer, et ajouter le réseau de Swag dans le fichier de conf sur ce modele (les champs networks) :

services:
  speedtest-tracker:
     container_name: #...
      # ... 
     networks: # Relie le conteneur au réseau custom. A faire pour chaque conteneur à exposer de la stack 
      - swag # Nom du réseau déclaré dans la stack
    
networks: # Définit le réseau custom
  swag: # Nom du réseau déclaré dans la stack
    name: swag_default # Nom véritable du réseau externe
    external: true # Précise que c'est un réseau à rechercher en externe
  • Ici nous partons du principe que le nom du réseau de Swag est swag_default.

Déployez à nouveau la stack.

Patientez puis tapez https://speedtest.mondomaine.fr dans votre navigateur, vous devriez être redirigé vers speedtest-tracker. Vous pouvez vérifier le statut du service via le dashboard (depuis votre réseau local, http://ipdevotreserveur:81).

✨ Vous pouvez protéger cette app avec Authentik en ouvrant speedtest.subodmain.conf et en retirant les # devant include /config/nginx/authentik-server.conf; et include /config/nginx/authentik-location.conf;. N'oubliez pas de créer une application et un fournisseur dans Authentik.