Speedtest Tracker
This program runs a speedtest check every hour and graphs the results. The back-end is written in Laravel and the front-end uses React. It uses the speedtest-cli package to get the data and uses Chart.js to plot the results.
Installation & Setup
Installing Dependencies
This program has some dependencies, to install them you need to run the following:
sudo apt update
sudo apt update
sudo apt install php-common php7.2 php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php-xml php-sqlite3 composer python3 python3-pip git
sudo apt install curl
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install nodejs
sudo pip3 install speedtest-cli
Then, download the code by running:
git clone https://github.com/henrywhitaker3/Speedtest-Tracker.git
Install the composer and npm dependencies:
composer install
npm install && npm run production
Setting up the database
Run the following to set your database variables:
cp .env.example .env
Then update the DB_DATABASE
value with the absolute path of your install, followed by /database/speed.db
.
Finally, run the following to setup the tables in the database:
php artisan key:generate
php artisan migrate
Now run the following to make sure everything has been setup properly (it should output a speedtest result):
php artisan speedtest:run
Scheduling Setup
To get speed test results every hour, you need to add a cronjob, run sudo crontab -e
and add an entry with the following (with the path you your install):
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Queue Setup
sudo apt install supervisor
sudo vim /etc/supervisor/conf.d/laravel-worker.conf
Add the following, updating the command
and user values
:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/project/artisan queue:work
autostart=true
autorestart=true
user=<user>
numprocs=8
redirect_stderr=true
Then run:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl restart all