Git Product home page Git Product logo

speedtest-tracker's Introduction

Speedtest Tracker

Docker pulls GitHub Workflow Status GitHub Workflow Status last_commit issues commit_freq version license

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 Ookla's speedtest cli package to get the data and uses Chart.js to plot the results.

A demo can be found here

Disclaimer: You will need to accept Ookla's EULA and privacy agreements in order to use this container.

speedtest

Features

  • Automatically run a speedtest every hour
  • Graph of previous speedtests going back x days
  • Backup/restore data in JSON/CSV format
  • Slack/Discord/Telegram notifications
  • healthchecks.io integration
  • Organizr integration
  • InfluxDB integration (currently v1 only, v2 is a WIP)

Installation & Setup

Using Docker

A docker image is available here, you can create a new conatiner by running:

docker create \
      --name=speedtest \
      -p 8765:80 \
      -v /path/to/data:/config \
      -e OOKLA_EULA_GDPR=true \
      --restart unless-stopped \
      henrywhitaker3/speedtest-tracker

Using Docker Compose

version: '3.3'
services:
    speedtest:
        container_name: speedtest
        image: henrywhitaker3/speedtest-tracker
        ports:
            - 8765:80
        volumes:
            - /path/to/data:/config
        environment:
            - TZ=
            - PGID=
            - PUID=
            - OOKLA_EULA_GDPR=true
        logging:
            driver: "json-file"
            options:
                max-file: "10"
                max-size: "200k"
        restart: unless-stopped

Images

There are 2 different docker images:

Tag Description
latest This is the stable release of the app
dev This release has more features, although could have some bugs

Parameters

Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

Parameter Function
-p 8765:80 Exposes the webserver on port 8765
-v /config All the config files reside here.
-e OOKLA_EULA_GDPR Set to 'true' to accept the Ookla EULA and privacy agreement. If this is not set, the container will not start
-e SLACK_WEBHOOK Optional. Put a slack webhook here to get slack notifications when a speedtest is run. To use discord webhooks, just append /slack to the end of your discord webhook URL
-e TELEGRAM_BOT_TOKEN Optional. Telegram bot API token.
-e TELEGRAM_CHAT_ID Optional. Telegram chat ID.
-e PUID Optional. Supply a local user ID for volume permissions
-e PGID Optional. Supply a local group ID for volume permissions
-e AUTH Optional. Set to 'true' to enable authentication for the app
-e INFLUXDB_RETENTION Optional. Sets the InfluxDB retention period, defaults to 30d
`-e INFLUXDB_HOST_TAG Optional. Sets the InfluxDB host tag value, defaults to speedtest

Authentication

Authentication is optional. When enabled, unauthenticated users will only be able to see the graphs and tests table. To be able to queue a new speedtest, backup/restore data and update instance settings you will need to log in. To enable authentication, pass the AUTH=true environment variable in docker or run php artisan speedtest:auth --enable for manual installs (same command with --disable to turn it off).

The default credentials are:

Field Function
username [email protected]
password password

After enabling, you should change the password through the web UI.

Manual Install

For manual installations, please follow the instructions here.

Kubernetes

There is a 3rd party helm chart available here.

speedtest-tracker's People

Contributors

henrywhitaker3 avatar dependabot-preview[bot] avatar dependabot[bot] avatar gill6151 avatar patrickclery avatar angrycuban13 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.