Auteur Sujet: SpeedTest.net : Installation de OoklaServer  (Lu 3611 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« le: 14 octobre 2021 à 13:54:58 »
SpeedTest.net est une application pour réaliser un test complet de sa connexion Internet.
Le client est disponible sur navigateur web (https://www.speedtest.net/), sur Android, iOS, Windows, Linux (ligne de commande uniquement) et MacOS.

On va ici installer le logiciel serveur : OoklaServer
Il écoute sur le port 8080 en TCP et UDP.

Deux type d'installation de OoklaServer sont possibles :

- Installation où Ookla encapsule votre nom de domaine dans un second, afin de demander pour vous le certificat TLS à Let's Encrypt. Le logiciel OoklaServer se connectant ensuite aux serveur Ookla pour récupérer le certificat (qui est uniquement présent en ram). Ce tutoriel n'aborde pas ce type de fonctionnement qui à l'avantage d'être plus simple.

- Installation où le client doit avoir un certificat TLS et le configurer dans OoklaServer. C'est le fonctionnement de ce tutoriel. Cela à l'avantage de pouvoir déplacer le certificat sur un serveur de test, afin de réaliser des tests depuis une autre machine, ce qui n'est pas possible dans le mode où Ookla gère le certificat pour vous.




Tutoriel testé avec Ubuntu version 20.04 et 22.04

Prérequis :
- Base: Installation et sécurisation d'un serveur Ubuntu (PHP n'est pas nécessaire)
- Base: Installation et sécurisation d'Apache2




1/ Installation de OoklaServer

sudo -s : On passe avec les droits root, pour ne pas taper sudo à toutes les commandes qui vont suivre.
adduser speedtest --disabled-login --gecos speedtest : Ajout de l'utilisateur SpeedTest, il n'est pas question de faire tourner OoklaServer avec les droits root.
chmod 755 /home/speedtest : Donner les droits en lecture à tous
su - speedtest -s /bin/bash : Passer avec les droits de l'utilisateur "speedtest".
mkdir /home/speedtest/bin : Créer le répertoire bin où sera installé le binaire.
cd /home/speedtest/bin/ : Se déplacer dans bin.
wget http://install.speedtest.net/ooklaserver/ooklaserver.sh : On télécharge le script d'installation de OoklaServer.
chmod a+x ooklaserver.sh : On rend le script d'installation executable.
./ooklaserver.sh install : On execute le script.

Répondre positivement aux questions.

Pour information le serveur est mis à jour automatiquement et le changelog est sur https://support.ookla.com/hc/en-us/articles/234578608-OoklaServer-release-changelog

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« Réponse #1 le: 14 octobre 2021 à 13:55:49 »
2/ Modification du fichier de configuration OoklaServer :

Activation d'IPv6, désactivé par défaut :
sed -i -e "s/# OoklaServer.useIPv6/OoklaServer.useIPv6/g" /home/speedtest/bin/OoklaServer.properties

Désactivation du port 5060, inutile quand le port 8080 est ouvert :
sed -i -e "s/5060,8080/8080/g" /home/speedtest/bin/OoklaServer.properties

Sécurisation pour limiter les requêtes aux seuls test de débit SpeedTest :
sed -i -e "s/# OoklaServer.allowedDomains/OoklaServer.allowedDomains/g" /home/speedtest/bin/OoklaServer.properties

Par défaut, il va y avoir des centaines de Mo de log dans /var/log/syslog. On va limiter les log aux erreurs (commenter ne va pas désactiver les logs) :
sed -i -e "s/logging.loggers.app.level = information/logging.loggers.app.level = error/g" /home/speedtest/bin/OoklaServer.properties

Sortir de l'utilisateur speedtest :
exit

Vérifier que tout est ok en éditant le fichier, voici un exemple de ce que vous devriez avoir :
nano /home/speedtest/bin/OoklaServer.properties

Vous devez avoir ce fichier :

#
# This is a sample configuration file for OoklaServer
#

#
# OoklaServer Options
#

# The server listens to TCP port 5060 and 8080 by default. These ports are required for
# speedtest.net servers, although more can be added.
#
# For Speedtest Custom, this can be changed to other ports if desired; you will need to
# contact support to update your server record.
#
# At least one port is required for this setting.
#
OoklaServer.tcpPorts = 8080

# The server listens to UDP port 5060 and 8080 by default. These ports are required for
# speedtest.net servers, although more can be added.
#
# For Speedtest Custom, this can be changed to other ports if desired; you will need to
# contact support to update your server record.
#
# At least one port is required for this setting.
#
OoklaServer.udpPorts = 8080

# Uncomment to bind OoklaServer to IPv6
#
OoklaServer.useIPv6 = true

OoklaServer.allowedDomains allows you to limit access to your OoklaServer.
#
# The default ("*") allows all domains access.
# Uncomment to allow access from ookla.com, speedtest.net, and simply add your
# own domain(s):
#
OoklaServer.allowedDomains = *.ookla.com, *.speedtest.net

# Uncomment this to enable filtering of known bad user agents. This can help alleviate traffic
# from non-official client sources.
#
# OoklaServer.userAgentFilterEnabled = true

# Max size of worker thread pool. Might be smaller if the number of open files allows
# is smaller (i.e it is at most `ulimit -n -H`).
#
# OoklaServer.workerThreadPool.capacity = 30000

# Thread stack size for worker threads.
#
# OoklaServer.workerThreadPool.stackSizeBytes = 102400

# Enable auto updates (default)
#
# OoklaServer.enableAutoUpdate = true

#####
# IP Tracking / Blocking settings
#####
# Time between garbage collecting ip statistics.
#
# OoklaServer.ipTracking.gcIntervalMinutes = 5

# Max amount of time to keep statistics for a specific ip address after its last connection was recorded.
#
# OoklaServer.ipTracking.maxIdleAgeMinutes = 35

# Size in minutes of the buckets used to collect ip statistics. This is used to keep a
# sliding window of statistics for an ip when accumulating data. Max number of
# buckets is maxIdleAgeMinutes / slidingWindowBucketLengthMinutes.
#
# OoklaServer.ipTracking.slidingWindowBucketLengthMinutes = 5

# Number of ip's to include when upload metrics.
#
# OoklaServer.ipTracking.metricTopIpCount = 5
#

# Max concurrent connections allowed for a single ip address. The actual number
# is at least 50, and at most 10% of OoklaServer.workerThreadPool.capacity.
#
# OoklaServer.ipTracking.maxConnPerIp = 500

# SSL Options
#

# Enable Let's Encrypt certificate generation (default)
#
# OoklaServer.ssl.useLetsEncrypt = true

# To use a custom certificate, create a certificate and private key and set the path to them here:
# (Note, this will disable Let's Encrypt certificate generation)
# openSSL.server.certificateFile = cert.pem
# openSSL.server.privateKeyFile = key.pem


#
# Logging Options
#

# Log to the Console
#
logging.loggers.app.name = Application
logging.loggers.app.channel.class = ConsoleChannel
logging.loggers.app.channel.pattern = %Y-%m-%d %H:%M:%S [%P - %I] [%p] %t
logging.loggers.app.level = error

# Log to files
#
#logging.loggers.app.name = Application
#logging.loggers.app.channel.class = FileChannel
#logging.loggers.app.channel.pattern = %Y-%m-%d %H:%M:%S [%P - %I] [%p] %t
#logging.loggers.app.channel.path = ${application.dir}/ooklaserver.log
#logging.loggers.app.level = error

#
# Optional access log for HTTP and Websocket requests
#
# logging.loggers.access.name = AccessLog
# logging.loggers.access.channel.class = FileChannel
# logging.loggers.access.channel.pattern = %[client] - %[session] [%d/%b/%Y:%H:%M:%S %Z] "%t" %[status] %[size] "%[referer]" "%[useragent]"
# logging.loggers.access.channel.path = ${application.dir}/ooklaserver-access.log

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« Réponse #2 le: 14 octobre 2021 à 13:57:20 »
3/ Configuration du site web, pour Installation héberger le fichier crossdomain.xml

L'outil de validation d'Ookla vérifie la présence d'un fichier crossdomain.xml sur le port 80. Cela semble inutile, mais cela permet de passer l'étape de validation.

mkdir /home/speedtest/www : Création du dossier www pour la partie Apache
nano /home/speedtest/www/crossdomain.xml

Copier / coller le texte ci-dessous dans le fichier :
<cross-domain-policy>
<allow-access-from domain="*.ookla.com" to-ports="8080"/>
<allow-access-from domain="*.speedtest.net" to-ports="8080"/>
<allow-access-from domain="*.speedtestcustom.com" to-ports="8080"/>
</cross-domain-policy>

nano /home/speedtest/www/index.html : Petit message à afficher quand on charge la page sur le port 80 ou 443 :
Copier / coller le texte ci-dessous dans le fichier en adaptant le texte pour décrire votre serveur :
Serveur SpeedTest.net haute performance hébergé sur Croissy-Beaubourg (Île-de-France - France) avec une connexion Internet 40 Gbit/s symétrique, hébergé chez Appliwave (AS200780)
nano /etc/apache2/sites-available/speedtest.conf
Fichier de configuration d'Apache.
Copier / coller en adaptant le nom de domaine.
<VirtualHost *:80>
ServerName "77.testdebit.info"

        DocumentRoot "/home/speedtest/www"
        <Directory "/home/speedtest/www">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
                       
CustomLog "${APACHE_LOG_DIR}/speedtest.log" combiport
</VirtualHost>

a2ensite speedtest.conf : Activation du virtualhost Apache
systemctl reload apache2 : rechargement des fichier de configuration pour la prise en compte.

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« Réponse #3 le: 14 octobre 2021 à 14:00:00 »
4/ Installation du certificat Let's Encrypt

On utiliser Certbot, qui doit être déjà installé, cf section 8/ Installation des pré-requis pour avoir un certificat TLS Let's Encrypt.

Demande du certificat Let's Encrypt : (Copier / coller en adaptant le nom de domaine)
certbot --apache --domains 77.testdebit.info certonly

Configuration des droits pour que l'utilisateur speedtest puisse accéder au certificat, car OoklaServer n'est pas lancé avec les droits root :
chmod 770 /etc/letsencrypt/archive/
chmod 770 /etc/letsencrypt/live/
chown root:speedtest /etc/letsencrypt/archive
chown root:speedtest /etc/letsencrypt/live/

(Copier / coller en adaptant le nom de domaine)
chown root:speedtest /etc/letsencrypt/archive/77.testdebit.info/fullchain1.pem
chown root:speedtest /etc/letsencrypt/archive/77.testdebit.info/privkey1.pem
ls -l /etc/letsencrypt/archive/77.testdebit.info/
chmod 644 /etc/letsencrypt/archive/77.testdebit.info/*


On va configurer Apache2 proprement en https, même si il n'est pas utilisé par Ookla :
nano /etc/apache2/sites-available/speedtest.conf

Rajouter le code pour le https à la suite du <VirtualHost *:80> déjà mis en place :

Copier / coller en adaptant le nom de domaine.
<VirtualHost *:443>
        ServerName "77.testdebit.info"

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/77.testdebit.info/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/77.testdebit.info/privkey.pem

        DocumentRoot "/home/speedtest/www"
        <Directory "/home/speedtest/www">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
                       
        CustomLog "${APACHE_LOG_DIR}/speedtest.log" combiport
</VirtualHost>

Si nécessaire, adapter le fichier /etc/apache2/ports pour écouter sur le port 80/443 sur la bonne IP :
nano /etc/apache2/ports.conf

systemctl reload apache2

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« Réponse #4 le: 14 octobre 2021 à 14:01:25 »
5/ Configurer le certificat https dans l’application Ookla :

Voici les commandes pour activer le certificat LetsEncrypt local. Il faut modifier dans chaque ligne le nom de domaine 77.testdebitinfo par votre nom de domaine.

sed -i -e "s/# openSSL.server.certificateFile = cert.pem/openSSL.server.certificateFile = \/etc\/letsencrypt\/live\/77.testdebit.info\/fullchain.pem/g" /home/speedtest/bin/OoklaServer.properties

sed -i -e "s/# openSSL.server.privateKeyFile = key.pem/openSSL.server.privateKeyFile = \/etc\/letsencrypt\/live\/77.testdebit.info\/privkey.pem/g" /home/speedtest/bin/OoklaServer.properties


Vérifier que tout est ok en éditant le fichier, voici un exemple de ce que vous devriez avoir :
nano /home/speedtest/bin/OoklaServer.properties

# SSL Options
#

# Enable Let's Encrypt certificate generation (default)
#
OoklaServer.ssl.useLetsEncrypt = false

# To use a custom certificate, create a certificate and private key and set the path to them here:
# (Note, this will disable Let's Encrypt certificate generation)
openSSL.server.certificateFile = /etc/letsencrypt/live/77.testdebit.info/fullchain.pem
openSSL.server.privateKeyFile = /etc/letsencrypt/live/77.testdebit.info/privkey.pem/

Si un fichier du dossier /home/speedtest/bin/ n'appartient pas à l’utilisateur speedtest:speedtest, cela peut bloquer les mise à jour automatique de serveur Ookla. On va donc forcer le changement de propriétaire. Si vous avez suivit strictement ce tutoriel, c'est normalement inutile.
chown speedtest:speedtest /home/speedtest/bin/*
ls -l /home/speedtest/bin/*
(vérifier que tous les fichiers appartiennent à SpeedTest pour que la maj auto puissent se passer)

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« Réponse #5 le: 14 octobre 2021 à 14:02:39 »
6/ Service systemd pour lancer /home/speedtest/bin/OoklaServer --daemon

sudo nano /etc/systemd/system/speedtest.service
Copier / coller le texte ci-dessous dans le fichier :
[Unit]
Description=service speedtest Ookla
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/home/speedtest/bin/OoklaServer
Restart=always
RestartSec=30
RuntimeMaxSec=604800
User=speedtest
KillMode=mixed
TimeoutStopSec=25s

[Install]
WantedBy=multi-user.target

La ligne "RuntimeMaxSec=604800" est là pour forcer le redémarrage du service toutes les semaines, c'est nécessaire car le serveur Ookla ne lit pas les mises à jour du certificat TLS : il est lu uniquement au démarrage du programme, or Let's Encrypt le met à jour tous les deux mois (la mise à jour est réalisée au moins 4 semaines avant l’expiration du certificat, donc un redémarrage hebdomadaire est suffisant pour ne pas se retrouver avec un certificat expiré)

# penser daemon-reload a chaque modif du fichier
sudo systemctl daemon-reload

Pour installer le service :
sudo systemctl enable speedtest.service

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« Réponse #6 le: 14 octobre 2021 à 14:03:06 »
7/ Redémarrer le serveur et vérifier que OoklaServer fonctionne bien :

reboot

Vérifier que OoklaServer fonctionne bien :
sudo systemctl status speedtest.service

Pour voir le journal concernant ce service depuis le démarrage en cours: (penser 'u' = unit dans la ligne de commande suivante)
sudo journalctl -b -u speedtest.service

Vérifier que le https fonctionne bien en vous connectant sur le nom de domaine en http puis en https, sur le port 80/443 pour Apache et 8080 pour OoklaServer (le port 8080 d'OoklaServer est compatible http et https et le certificat doit être bon si le tutoriel a bien été respecté) :


Enfin vérifier que tout est correct pour Ookla en utilisant son outil de test : https://www.ookla.com/host-tester

Vous pouvez ensuite déclarer votre serveur.

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« Réponse #7 le: 14 octobre 2021 à 14:03:54 »
Annexes :

Pour info, pour arrêter le service :
sudo systemctl stop speedtest.service

Pour info, pour démarrer a la main: (le .service peut être omis si y'a pas d’ambiguïté avec autre chose)
sudo systemctl start speedtest.service

Pour info, pour désactiver le service:
sudo systemctl disable speedtest.service

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« Réponse #8 le: 14 octobre 2021 à 14:04:22 »
Version de SpeedTest :

/home/speedtest/bin/OoklaServer -v

$ /home/speedtest/bin/OoklaServer -v
Loaded config file: /home/speedtest/bin/OoklaServer.properties
2.9.2.16 2021-11-30.2159.ffae0e0
$ /home/speedtest/bin/OoklaServer -v
Loaded config file: /home/speedtest/bin/OoklaServer.properties
2.7.5.24 2020-06-16.1905.a787316
$ /home/speedtest/bin/OoklaServer -v
Loaded config file: /home/speedtest/bin/OoklaServer.properties
2.4 2016-10-06.1324.996ab91

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
SpeedTest.net : Installation de OoklaServer
« Réponse #9 le: 14 octobre 2021 à 14:05:49 »
N'hésitez pas à faire vos commentaires ou suggestions ci-dessous !