--- 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`. ::alert{type="warning"} :::list{type="warning"} - Speedtest Tracker n'utilise pas d'authentification multifacteur. Exposer Speedtest Tracker sur internet pourrait compromettre les machines auxquelles il est relié. Ne le faite que si vous utilisez un systeme d'authentification multifacteur comme [Authentik](/serveex/securite/authentik/). Sinon, n'exposez pas avec SWAG et utilisez plutôt un VPN comme [Wireguard](/serveex/securite/wireguard). ::: :: 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). ::