--- navigation: true title: Speedtest Tracker main: fluid: false --- :ellipsis{left=0px width=40rem top=10rem blur=140px} # Speedtest Tracker ::alert{type="info"} 🎯 __Objectifs :__ - Installer Speedtest Tracker - Exposer Speedtest Tracker avec Swag :: [Speedtest Tracker](https://docs.speedtest-tracker.dev/) est un conteneur permettant de programmer des speedtest régulier afin d'historiser l'état de la connexion internet de votre serveur. ![speedtest-tracker](/img/serveex/speedtest-tracker.avif) ## Installation --- ::alert{type="info"} :::list{type="info"} - Nous utiliserons l'image docker maintenue par [LinuxServer.io](https://docs.linuxserver.io/images/docker-speedtest-tracker/) ::: :: Structure des fichiers ```console root └── docker └── speedtest-tracker └── data └── config ``` Dans un terminal, générez une clé avec la commande suivante : ```shell echo -n 'base64:'; openssl rand -base64 32; ``` Notez la clé. Ouvrez Dockge, cliquez sur `compose`, appelez la stack `speedtest-tracker` puis copiez collez ceci : ```yaml 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 : ```shell 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 : ```properties 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 ``` ::alert{type="success"} ✨ __Astuce :__ vous pouvez configurer d'autres variables d'environnements en consultant la [documentation officielle](https://docs.speedtest-tracker.dev/getting-started/environment-variables). :: Déployez le conteneur et rendez-vous sur http://ipduserveur:3225. Connectez vous avec le compte `admin@exemple.com` et le mot de passe `password`. N'oubliez pas de changer votre id et votre mot de apsse une fois connecté ! ## Exposer Speedtest Tracker --- ::alert{type="info"} 📋 __Prérequis :__

Nous partons du principe que vous avez créé dans votre [zone DNS](/generalites/dns) un sous domaine du type `speedtest.mondomaine.fr` avec pour `CNAME` `mondomaine.fr` et [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), que vous avez déjà redirigé le port `443` de votre box vers le `443` de votre serveur dans [les règles NAT](/generalites/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 : ```shell sudo vi /docker/swag/config/nginx/proxy-confs/speedtest.subdomain.conf ``` Paramétrez le comme tel : ```nginx ## 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. ::alert{type="info"} :::list{type="info"} - 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`) : ```yaml 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 ``` ::alert{type="info"} :::list{type="info"} - 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). ::alert{type="success"} ✨ Vous pouvez protéger cette app avec Authentik en ouvrant `speedtest.subodmain.conf` et en retirant les `#` devant `include /config/nginx/authentik-server.conf;`{lang=nginx} et `include /config/nginx/authentik-location.conf;`{lang=nginx}. N'oubliez pas de [créer une application et un fournisseur dans Authentik](/serveex/securite/authentik#protéger-une-app-par-reverse-proxy). ::