Host Your Own Internet Speed Tester With LibreSpeed 🌱

Basic Installation

  1. Log into the Debian/Ubuntu device
  2. Run the following commands in a terminal:
    # update repositories and install any available software updates
    sudo apt update
    sudo apt upgrade
    # install Apache HTTPD, PHP and GIT
    sudo apt install git apache2 php libapache2-mod-php
    # clone the git repo
    sudo git clone https://github.com/adolfintel/speedtest /var/www/html/speedtest
    sudo cp /var/www/html/speedtest/example-singleServer-gauges.html /var/www/html/speedtest/index.html
    # set the owner of the new speedtest directory to www-data
    sudo chown -R www-data:www-data /var/www/html/speedtest
  3. Open a web browser and navigate to http://DNSorIP/speedtest
  4. The basic speed test functionality will be available, but it lacks the abillity to save and share speed test results. Let's add a database to enable those features

Optional Advanced Installation Steps

  1. Continue the installation by running the following commands in a terminal:
    # install MySQL/MariaDB
    sudo apt install mariadb-server mariadb-client php-mysql
    sudo su
    mysql_secure_installation
  2. Press Enter to login as root
  3. Type Y and press Enter to set a root password, type the password twice to confirm
  4. Type Y and press Enter to remove anonymous users
  5. Type Y and press Enter to disallow root login remotely
  6. Type Y and press Enter to remove the test database
  7. Type Y and press Enter to reload privilege tables
  8. Run the following command to login into MySQL: mysql -u root -p
  9. Authenticate with the root password set earlier
  10. Run the following commands to create the speedtest database and database user MariaDB [(none)]> CREATE DATABASE speedtest;
    MariaDB [(none)]> GRANT ALL ON speedtest.* to 'speedtest'@'localhost' IDENTIFIED BY 'Sp33dTest!!';
    MariaDB [(none)]> FLUSH PRIVILEGES;
    MariaDB [(none)]> USE speedtest;
    MariaDB [(none)]> \. /var/www/html/speedtest/results/telemetry_mysql.sql
    MariaDB [(none)]> EXIT;
    exit
  11. Continue with the following commands to setup the speedtest database
    # edit telemetry_settings.php
    sudo nano /var/www/html/speedtest/results/telemetry_settings.php
  12. Verify/change $db_type = 'mysql';
  13. Change $stats_password = 'P@$$w0rD';
  14. Change $enable_id_obfuscation = true;
  15. Update the Mysql Settings variables to the credentials created earlier

    $MySql_username = 'speedtest';
    $MySql_password = 'Sp33dTest!!';
    $MySql_hostname = 'localhost';
    $MySql_databasename = 'speedtest';

  16. Press CTRL+O, Enter, CTRL+X to write the changes to telemetry_settings.php
  17. Continue with the following commands in terminal:
    # copy an example page with telemetry enabled
    sudo cp /var/www/html/speedtest/example-singleServer-full.html /var/www/html/speedtest/index.html
    # restart the apache2 service to enable MySQL
    sudo systemctl restart apache2
  18. Open a web browser and navigate to http://DNSorIP/speedtest
  19. This time around the speedtest results have been saved to the database and a link is provided to share the results

More Info: https://github.com/librespeed/speedtest