Giter Site home page Giter Site logo

alexjustesen / speedtest-tracker Goto Github PK

View Code? Open in Web Editor NEW
2.1K 22.0 79.0 10.4 MB

Speedtest Tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla's Speedtest service.

Home Page: https://docs.speedtest-tracker.dev/

License: MIT License

Shell 0.05% Dockerfile 0.26% PHP 98.04% JavaScript 0.10% Blade 1.22% CSS 0.34%
docker laravel speedtest tracker speedtest-cli hacktoberfest dashboard tracking

speedtest-tracker's Introduction

Speedtest Tracker

Important

v0.16.0 includes a breaking change that requires user action for existing installs. Read the release notes regarding the data migration.

Star History Chart

Introduction

Speedtest Tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla's Speedtest service.

Why might I use this?

The main use case for Speedtest Tracker is to build a history of your internet's performance so that you can be informed when you're not receiving your ISP's advertised rates.

What about that other Speedtest Tracker?

As far as I can tell https://github.com/henrywhitaker3/Speedtest-Tracker was abandoned. This is meant to be an actively maintained replacement with an improved UI and feature set.

Getting Started

Speedtest Tracker is containerized so you can run it anywhere you run your Docker containers. The install documentation will get you up and running with using Docker or Docker Composer along with choosing a database (SQLite, MySQL/MariaDB or Postgresql).

Quick Start

docker run -d --name speedtest-tracker --restart unless-stopped \
    -p 8080:80 \
    -e PUID=1000 \
    -e PGID=1000 \
    -e DB_CONNECTION=sqlite \
    -v /path/to/data:/config \
    lscr.io/linuxserver/speedtest-tracker:latest

FAQs and Features

FAQs and a full list of planned and completed features can be found in the documentation.

API

A robust API is planned for a later release but as of v0.11.8 a legacy endpoint /api/speedtest/latest which is used by home lab dashboards like Homepage and Organizr.

Screenshots

Dashboard Dashboard

speedtest-tracker's People

Contributors

06games avatar adamus1red avatar alexdelprete avatar alexjustesen avatar cacpmw avatar cinderblockgames avatar claha avatar dependabot[bot] avatar didiermetral avatar frknakk avatar garanda21 avatar jaydrogers avatar joaogalaghar avatar jocmp avatar jonezy35 avatar jtmotox avatar lnlyssg avatar louisob avatar neonmaus avatar ottnorml avatar rameskum avatar ryangjchandler avatar svenvg93 avatar trainax avatar unafraid avatar wdog avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

speedtest-tracker's Issues

`The page isn’t redirecting properly` / `bad request`

I've just updated to the latest release.
I'm getting the above error in browser, this is via Traefik.
No info in the console.
Container log follows:

[21-Oct-2022 09:32:37] NOTICE: fpm is running, pid 100
                                                            |_|
Brought to you by serversideup.net
--------------------------------------------------------------------
To support Server Side Up projects visit:
https://serversideup.net/sponsor
GID/UID
User uid:    1044
User gid:    65539
-------------------------------------
πŸ” SSL_MODE has set to FULL, setting the web server to work in HTTPS only...
πŸƒβ€β™‚οΈ Checking for Laravel automations...
πŸ” Linking the storage...
   ERROR  The [public/storage] link already exists.  
βœ…  Database exists
πŸ‡  Configuring Speedtest Tracker...
πŸ”—  Creating database symlink
βœ…  Environment file exists
πŸ”—  Creating symlinks to config and log files
βœ…  App key exists
πŸ”’  Fixing app path file permissions
πŸ’°  Building the cache...
127.0.0.1 - - [21/Oct/2022:09:32:38 +0000] "GET /ping HTTP/1.1" 301 162 "-" "curl/7.81.0"
[21-Oct-2022 09:32:37] NOTICE: ready to handle connections
[21-Oct-2022 09:32:37] NOTICE: systemd monitor interval set to 10000ms
πŸš›  Migrating the database...
βœ…  All set, starting Speedtest Tracker container...
πŸ’ͺ  Starting the queue worker...
xxx.xxx.xxx.xxx - - [21/Oct/2022:09:33:20 +0000] "GET / HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0"

I've tested it through a localhost too, updating the .env accordingly in each case, and got a 404:

❌ There seems to be a failure in checking the web server + PHP-FPM. Here's the response:
192.168.90.1 - - [21/Oct/2022:09:39:12 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03Gk\x19mm\x18\x1F\x7F\xFD\xF2\xAB \xF8L\xA6\xD0\xFD\xD9/\xE6\xAB\xEF\xEA&X\x18sfl\x8D\xFF\x12 \xA1\x0C%\x92\xFF\x176\xB5\xB2\xA4Oog\xB3Y)&\xFF.\x14\xBF\xAE\x98\xBE\x16.\xA1\x07s\x00\xFF\x11\x00\x22\x13\x01\x13\x03\x13\x02\xC0+\xC0/\xCC\xA9\xCC\xA8\xC0,\xC00\xC0" 400 150 "-" "-"
192.168.90.1 - - [21/Oct/2022:09:39:21 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x168\x0B\x021!\x92\xDA\x86m\xAF48s2\x1EC\x85+<\x01\x80+\x94X\x15\x00z\xED'\xD6\x00 V\xF5\xF5\x89:\xE4\x99\x8C\xA1\x09\xA8\x9D\x8D\xC7|V\x96\x16\xAC\xFC\x85" 400 150 "-" "-"
192.168.90.1 - - [21/Oct/2022:09:39:21 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\xB9,\x93\xFB\xE9\x1C[.\x84\xC9\x5C\x07\x8E\x99\x93" 400 150 "-" "-"
192.168.90.1 - - [21/Oct/2022:09:39:21 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\xA4\xF2\xA7j\x10\xEB\x8DdsEi\xEEa\x88\xC0\xCD\x06PUm\x00\x91:U%\xAB\xDB\xAD\x0E\x80\x1E\xBF 8\xA7\x87v=\x97" 400 150 "-" "-"
192.168.90.1 - - [21/Oct/2022:09:39:21 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\xFBZ's\xA3q\x96&\xE7:\x8E\xDF\xFD#\xA5\x0Ef\x22\x08\xD2\xD1\x00^\x8A\xB1\xAB\x10;q\x22T\xEC \xD7\x19\x82}\x17\x1A<bN@\xDE\xC3:\x99,h\xB2\x8F\x9A\xE8\xAB\xF3n^\x05\x0F+\xAA\xA6\xCE\xE2\xB7\x00\x22ZZ\x13\x01\x13\x02\x13\x02\x13\x03\xC0+\xC0/\xC0,\xC00\xCC\xA9\xCC\xA8\xC0\x13\xC0\x14\x00\x9C\x00\x9D\x00/\x005\x01\x00\x01\x91\xDA\xDA\x00\x00\x00\x17\x00\x00\xFF\x01\x00\x01\x00\x00" 400 150 "-" "-"
192.168.90.1 - - [21/Oct/2022:09:39:22 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x19\x9COx\x18\x8F \xFD\xB9\xB6\xDE\xC8oC\x158\x84\x0F\x83\xE8k\xDC\xA0\xCF&\x93" 400 150 "-" "-"
192.168.90.1 - - [21/Oct/2022:09:39:22 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03~\xC03!\xE5" 400 150 "-" "-"
192.168.90.1 - - [21/Oct/2022:09:39:22 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\x10\xB7\xE1b\x8E\xA0\xBE\x8C\x95\xC1\x0E\x84\x84#\xCC\x9C\x92\xF5\x7F\xEB\x11\xDB\xB2\xB2~'\xB84V\xCDb/ \xE4\xB1t$k\xD7\x1A4\xC5D\x90^\x86\x09\x1C\x88E\x8A\x13- \xAA\x7F\xFB\x96\x0E\xA8\x1B\x8C\xDF\x98_\x00\x22\x1A\x1A\x13\x01\x13\x02\x13\x02\x13\x03\xC0+\xC0/\xC0,\xC00\xCC\xA9\xCC\xA8\xC0\x13\xC0\x14\x00\x9C\x00\x9D\x00/\x005\x01\x00\x01\x91\xAA\xAA\x00\x00\x00\x17\x00\x00\xFF\x01\x00\x01\x00\x00" 400 150 "-" "-"
192.168.90.1 - - [21/Oct/2022:09:39:22 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\xB7\x83\x98\x04\xD8X\x1D\x16\xDF<\xA4\xC3\xC5\x90" 400 150 "-" "-"
192.168.90.1 - - [21/Oct/2022:09:39:26 +0000] "GET / HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.47"
192.168.90.1 - - [21/Oct/2022:09:39:46 +0000] "\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03=M\xBD<\x88\xBD\xA75\xBB\x14\xC5\x15e*O\xD4\xFB&\xA2ftB\x86haT4" 400 150 "-" "-"

Cron stop worked

Describe the bug
Cron schedule stopped after 870 occurences. Even if I tried to click on "Queue Speedtest". Nothing appends. I've tried to change the cron setting, disable and enable. nothing

Expected behavior
Having new results every 5 minutes as configured in my cron schedule

Environment (please complete the following information):
Docker / Unraid 6.11.1

Logs
192.168.10.54 - - [09/Nov/2022:21:54:15 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:54:15 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:54:52 +0100] "POST /livewire/message/app.filament.resources.result-resource.pages.list-results HTTP/2.0" 200 170 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:54:55 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 133 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:54:55 +0100] "POST /livewire/message/app.filament.resources.result-resource.pages.list-results HTTP/2.0" 200 170 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:54:57 +0100] "GET /admin/results HTTP/2.0" 200 21282 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:54:57 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:54:57 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:03 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:03 +0100] "POST /livewire/message/app.filament.resources.result-resource.pages.list-results HTTP/2.0" 200 170 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:04 +0100] "GET /admin/thresholds HTTP/2.0" 200 16193 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:04 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin/thresholds" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:04 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin/thresholds" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:08 +0100] "GET /admin/general HTTP/2.0" 200 23956 "https://192.168.20.103:9443/admin/thresholds" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:08 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:08 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:14 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 133 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:15 +0100] "POST /livewire/message/app.filament.pages.settings.general-page HTTP/2.0" 200 312 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:15 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 2520 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:19 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:22 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 2132 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:24 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 133 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:28 +0100] "GET /admin/results HTTP/2.0" 200 21287 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:28 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:28 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:30 +0100] "GET /admin HTTP/2.0" 200 15633 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:30 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:30 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:35 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 133 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:55:35 +0100] "POST /livewire/message/app.filament.widgets.stats-overview HTTP/2.0" 200 131 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:00 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 133 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:00 +0100] "POST /livewire/message/app.filament.widgets.stats-overview HTTP/2.0" 200 131 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:00 +0100] "GET /admin/results HTTP/2.0" 200 21288 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:00 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:00 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:03 +0100] "GET /admin/general HTTP/2.0" 200 23957 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:03 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:03 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:08 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:12 +0100] "POST /livewire/message/app.filament.pages.settings.general-page HTTP/2.0" 200 311 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:12 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 2524 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:13 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 133 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:21 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 2129 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:48 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:49 +0100] "GET /admin/results HTTP/2.0" 200 21286 "https://192.168.20.103:9443/admin/general" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:49 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:49 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:55 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:56:55 +0100] "POST /livewire/message/app.filament.resources.result-resource.pages.list-results HTTP/2.0" 200 171 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:57:21 +0100] "POST /livewire/message/app.filament.resources.result-resource.pages.list-results HTTP/2.0" 200 171 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:57:30 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:57:30 +0100] "POST /livewire/message/app.filament.resources.result-resource.pages.list-results HTTP/2.0" 200 171 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:57:41 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:57:46 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:05 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:05 +0100] "POST /livewire/message/app.filament.resources.result-resource.pages.list-results HTTP/2.0" 200 171 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:10 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:10 +0100] "POST /livewire/message/app.filament.resources.result-resource.pages.list-results HTTP/2.0" 200 171 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:16 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:35 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:35 +0100] "POST /livewire/message/app.filament.resources.result-resource.pages.list-results HTTP/2.0" 200 171 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:36 +0100] "GET /admin HTTP/2.0" 200 15634 "https://192.168.20.103:9443/admin/results" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:36 +0100] "GET /filament/assets/invaders-filament-jsoneditor.css HTTP/2.0" 200 6308 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:36 +0100] "GET /filament/assets/app.css?id=8f84f902eed66d95aa3381a79bd781b6 HTTP/2.0" 200 23167 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:47 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:58:47 +0100] "POST /livewire/message/app.filament.widgets.stats-overview HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:59:23 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:21:59:58 +0100] "POST /livewire/message/app.filament.widgets.stats-overview HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:22:00:03 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:22:00:28 +0100] "POST /livewire/message/app.filament.widgets.stats-overview HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:22:01:12 +0100] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
192.168.10.54 - - [09/Nov/2022:22:01:12 +0100] "POST /livewire/message/app.filament.widgets.stats-overview HTTP/2.0" 200 132 "https://192.168.20.103:9443/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"

Thresholds wrongly triggering a notification

Describe the bug
When setting thresholds, from what I interpret, if the values of the test are lower than thresholds for speed, and higher for ping, a notification should be created. Instead, I'm receiving notification for threshold every time, but test values do not hit those thresholds.

To Reproduce
Set threshold and do a test.

Expected behavior
I expect notifications to be fired only if test speed values are lower than thresholds or ping is higher.
Would also be good in the notification to describe which thresholds triggered it.

Screenshots
image
image

DB location causes launch failure

New install using latest alpha using compose:

  speedtest:
    container_name: speedtest-new
    image: ghcr.io/alexjustesen/speedtest-tracker:latest
    volumes:
      - /home/derek/docker/speedtest/config:/config
      - /home/derek/docker/speedtest/app:/app
    environment:
      - PUID=1000
      - PGID=140
      - TZ="America/New_York"
      - PHP_POOL_NAME="speedtest-tracker_php"
      - DB_CONNECTION="sqlite"
      - DB_DATABASE="/app/database.sqlite"
    logging:
      driver: "json-file"
      options:
        max-file: "10"
        max-size: "200k"
    restart: unless-stopped

Resulting logs:

#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(692): Illuminate\\Foundation\\Application->resolve()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(845): Illuminate\\Container\\Container->make()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(1419): Illuminate\\Foundation\\Application->make()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php(120): Illuminate\\Container\\Container->offsetGet()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(871): Illuminate\\Routing\\RoutingServiceProvider->Illuminate\\Routing\\{closure}()
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(756): Illuminate\\Container\\Container->build()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(860): Illuminate\\Container\\Container->resolve()
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(692): Illuminate\\Foundation\\Application->resolve()
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(845): Illuminate\\Container\\Container->make()
#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(1419): Illuminate\\Foundation\\Application->make()
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php(174): Illuminate\\Container\\Container->offsetGet()
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(871): Illuminate\\Routing\\RoutingServiceProvider->Illuminate\\Routing\\{closure}()
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(756): Illuminate\\Container\\Container->build()
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(860): Illuminate\\Container\\Container->resolve()
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(692): Illuminate\\Foundation\\Application->resolve()
#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(845): Illuminate\\Container\\Container->make()
#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(120): Illuminate\\Foundation\\Application->make()
#42 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(769): app()
#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(615): response()
#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(543): Illuminate\\Foundation\\Exceptions\\Handler->renderHttpException()
#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(449): Illuminate\\Foundation\\Exceptions\\Handler->prepareResponse()
#46 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(366): Illuminate\\Foundation\\Exceptions\\Handler->renderExceptionResponse()
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(222): Illuminate\\Foundation\\Exceptions\\Handler->render()
#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(199): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->renderHttpResponse()
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(259): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleException()
#50 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->Illuminate\\Foundation\\Bootstrap\\{closure}()
#51 {main}
Next Illuminate\\Database\\QueryException: realpath(): open_basedir restriction in effect. File(/app/database.sqlite) is not within the allowed path(s): (/var/www/html:/config/:/dev/stdout:/tmp) (SQL: PRAGMA foreign_keys = ON;) in /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:760
οΏ½
Stack trace:
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(720): Illuminate\\Database\\Connection->runQueryCallback()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(546): Illuminate\\Database\\Connection->run()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(380): Illuminate\\Database\\Connection->statement()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/SQLiteConnection.php(35): Illuminate\\Database\\Schema\\Builder->enableForeignKeyConstraints()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(272): Illuminate\\Database\\SQLiteConnection->__construct()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(76): Illuminate\\Database\\Connectors\\ConnectionFactory->createConnection()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(50): Illuminate\\Database\\Connectors\\ConnectionFactory->createSingleConnection()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(145): Illuminate\\Database\\Connectors\\ConnectionFactory->make()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(100): Illuminate\\Database\\DatabaseManager->makeConnection()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/SessionManager.php(103): Illuminate\\Database\\DatabaseManager->connection()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/SessionManager.php(90): Illuminate\\Session\\SessionManager->getDatabaseConnection()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Manager.php(105): Illuminate\\Session\\SessionManager->createDatabaseDriver()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Manager.php(80): Illuminate\\Support\\Manager->createDriver()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/SessionServiceProvider.php(52): Illuminate\\Support\\Manager->driver()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(871): Illuminate\\Session\\SessionServiceProvider->Illuminate\\Session\\{closure}()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(756): Illuminate\\Container\\Container->build()
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(860): Illuminate\\Container\\Container->resolve()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(692): Illuminate\\Foundation\\Application->resolve()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(845): Illuminate\\Container\\Container->make()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(1419): Illuminate\\Foundation\\Application->make()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php(120): Illuminate\\Container\\Container->offsetGet()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(871): Illuminate\\Routing\\RoutingServiceProvider->Illuminate\\Routing\\{closure}()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(756): Illuminate\\Container\\Container->build()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(860): Illuminate\\Container\\Container->resolve()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(692): Illuminate\\Foundation\\Application->resolve()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(845): Illuminate\\Container\\Container->make()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(1419): Illuminate\\Foundation\\Application->make()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php(174): Illuminate\\Container\\Container->offsetGet()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(871): Illuminate\\Routing\\RoutingServiceProvider->Illuminate\\Routing\\{closure}()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(756): Illuminate\\Container\\Container->build()
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(860): Illuminate\\Container\\Container->resolve()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(692): Illuminate\\Foundation\\Application->resolve()
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(845): Illuminate\\Container\\Container->make()
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(120): Illuminate\\Foundation\\Application->make()
#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(769): app()
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(615): response()
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(543): Illuminate\\Foundation\\Exceptions\\Handler->renderHttpException()
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(449): Illuminate\\Foundation\\Exceptions\\Handler->prepareResponse()
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(366): Illuminate\\Foundation\\Exceptions\\Handler->renderExceptionResponse()
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(222): Illuminate\\Foundation\\Exceptions\\Handler->render()
#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(199): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->renderHttpResponse()
#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(259): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleException()
#42 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->Illuminate\\Foundation\\Bootstrap\\{closure}()
#43 {main}
  thrown at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:760)
οΏ½
[stacktrace]
οΏ½
}
"} 
NOTICE: PHP message: PHP Fatal error:  Uncaught ErrorException: realpath(): open_basedir restriction in effect. File(/app/database.sqlite) is not within the allowed path(s): (/var/www/html:/config/:/dev/stdout:/tmp) in /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php:28
οΏ½
Stack trace:
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(259): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php(28): realpath()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(221): Illuminate\Database\Connectors\SQLiteConnector->connect()
#4 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()
#5 /var/www...
2022/10/21 13:06:32 [error] 167#167: *6 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught ErrorException: realpath(): open_basedir restriction in effect. File(/app/database.sqlite) is not within the allowed path(s): (/var/www/html:/config/:/dev/stdout:/tmp) in /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php:28
οΏ½
Stack trace:
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(259): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php(28): realpath()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(221): Illuminate\Database\Connectors\SQLiteConnector->connect()
#4 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()
#5 /var/www...PHP message: PHP Fatal error:  Uncaught ErrorException: realpath(): open_basedir restriction in effect. File(/app/database.sqlite) is not within the allowed path(s): (/var/www/html:/config/:/dev/stdout:/tmp) in /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php:28
οΏ½
Stack trace:
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(259): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php(28): realpath()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(221): Illuminate\Database\Connectors\SQLiteConnector->connect()
#4 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminat
192.168.1.119 - - [21/Oct/2022:13:06:32 +0000] "GET / HTTP/2.0" 500 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"

Notification channels

When a notification is triggered it should be sent to a channel so that the user is notified of the thing.

Supported channels should will include:

  • Database notification channel
  • #141
  • #1196
  • Slack notification channel
  • #265
  • Gotify notification channel
  • Ntfy notification channel
  • Pushbullet
  • Webhooks: #869

Result times are still being reported/recorded in UTC even after v0.1.0-alpha.10

Even after #71 and updating to the v0.1.0-alpha.10 version, the result times and the database file (in both data / created_at) are still being reported/recorded in UTC instead of the timezone set in the settings panel.

edit: I did try to change https://github.com/alexjustesen/speedtest-tracker/blob/main/app/Filament/Resources/ResultResource.php#L44 to be my timezone as well but sadly that didn't seem to make a difference.

edit: also just a note I thought I'd add in, but the favicon stuff doesn't seem to work either, it just returns a 404.

Admin panel does not load correctly behind reverse proxy

I have a "mixed content" issue loading the admin panel, it doesn't load the CSS. I use Traefik, with an https url, and it's pulling the site from the internal docker http url.

image

This is what I see in the log (see http error 302):

10.1.10.30 - - [28/Sep/2022:17:55:07 +0200] "GET / HTTP/1.1" 302 394 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.0.0"
10.1.10.30 - - [28/Sep/2022:17:55:07 +0200] "GET /admin HTTP/1.1" 302 418 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.0.0"
10.1.10.30 - - [28/Sep/2022:17:55:07 +0200] "GET /admin/login HTTP/1.1" 200 3639 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.0.0"
10.1.10.30 - - [28/Sep/2022:17:55:22 +0200] "POST /livewire/message/filament.core.auth.login HTTP/1.1" 200 264 "https://speedtest.osilife.net/admin/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/107.0.0.0 Safari/537.36 Edg/107.0.0.0"
10.1.10.30 - - [28/Sep/2022:17:55:23 +0200] "GET /admin HTTP/1.1" 200 13616 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.0.0"

If I use the docker url directly it works fine.

image

This is the log whith the direct url, bypassing the proxy:

10.1.10.45 - - [28/Sep/2022:17:42:31 +0200] "POST /livewire/message/filament.core.auth.login HTTP/1.1" 200 257 "http://docker2.axel.dom:8008/admin/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.0.0"
10.1.10.45 - - [28/Sep/2022:17:42:31 +0200] "GET /admin HTTP/1.1" 200 13623 "http://docker2.axel.dom:8008/admin/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.0.0"
10.1.10.45 - - [28/Sep/2022:17:42:38 +0200] "GET /admin HTTP/1.1" 200 13620 "http://docker2.axel.dom:8008/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.0.0"
10.1.10.45 - - [28/Sep/2022:17:42:45 +0200] "GET /admin/results HTTP/1.1" 200 19249 "http://docker2.axel.dom:8008/admin" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.0.0"

I already had this issue with BookStack, that is built with PHP: BookStackApp/BookStack#1204

The guys at LinuxServer.io built the BookStack image with an APP_URL env variable to solve the issue with reverse proxies. I guess it configures the BASE_URL for php, something like that.

image

Version on the dashboard

Describe the solution you'd like
Show the app version on the dash (upper left where the title is or in the footer).

Log fills up with livelier/Message when the web interface is being used

Describe the bug
every click on the web interface seems to trigger an angry in the log file like this:

172.19.0.1 - - [03/Nov/2022:19:51:44 +0000] "POST /livewire/message/filament.core.notifications HTTP/2.0" 200 132 "https://192.168.178.120:8443/admin/results" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Safari/605.1.15" | stdout

I am not sure this is very useful....

Ubuntu 22.04 and multi-arch support

The base image used for this project is testing Ubuntu 22.04 along with a complete refactor so I'm going to bump the base image to their beta and start testing shortly.

In addition to upgrading the base OS multi-arch support should also be provided so that devices like Raspberry Pi's can run Speedtest Tracker.

serversideup/docker-php#59

IPv6 issue

When IPv6 is disabled on the host, Nginx fails to start with an error: nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol). Full log below.

Entering the container and commenting out listen [::]:443 http2 ssl default_server; and listen [::]:80 default_server; lines in /etc/nginx/sites-enabled/default solves it but the change is obviously mutable.

It would be great if IPv6 could be disabled via a env variable (Nginx Proxy Manager is doing it that way, for example β€” you just pass DISABLE_IPV6=true to the container).

Thanks!

πŸ‡  Configuring Speedtest Tracker...
βœ…  Config file exists
⏳  Generating app key...
πŸ“¦  Linking storage...
πŸ’°  Building the cache...
πŸš›  Migrating the database...
πŸ”‘  Fixing permissions...
βœ…  All set, starting Speedtest Tracker container...


[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 10-generate-ssl: executing...
πŸ” Generating a self-signed SSL certificate because one was not provided...
Generating a RSA private key
......+++++
......+++++
writing new private key to '/etc/ssl/web/ssl.key'
-----
[cont-init.d] 10-generate-ssl: exited 0.
[cont-init.d] 11-msmtp: executing...
[cont-init.d] 11-msmtp: exited 0.
[cont-init.d] 22-debug-nginx: executing...
[cont-init.d] 22-debug-nginx: exited 0.
[cont-init.d] 5-runas-user: executing...

--------------------------------------------------------------------
 ____                             ____  _     _        _   _
/ ___|  ___ _ ____   _____ _ __  / ___|(_) __| | ___  | | | |_ __
\___ \ / _ \  __\ \ / / _ \  __| \___ \| |/ _` |/ _ \ | | | |  _ \
 ___) |  __/ |   \ V /  __/ |     ___) | | (_| |  __/ | |_| | |_) |
|____/ \___|_|    \_/ \___|_|    |____/|_|\__,_|\___|  \___/| .__/
                                                            |_|

Brought to you by serversideup.net
--------------------------------------------------------------------

To support Server Side Up projects visit:
https://serversideup.net/sponsor
-------------------------------------
GID/UID
-------------------------------------

User uid:    997
User gid:    997
-------------------------------------

[cont-init.d] 5-runas-user: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
[30-Sep-2022 13:55:11] NOTICE: fpm is running, pid 321
[30-Sep-2022 13:55:11] NOTICE: ready to handle connections
[30-Sep-2022 13:55:11] NOTICE: systemd monitor interval set to 10000ms
nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)

Dashboard not refreshing automatically

Hi,

I don't know if this is really implemented, but If I let the Dashboard opened and a new speedtest runs in this time, then the latest result values doesn't appear on the Dashobard, it's not automatically refreshed

Regards,
Lukas

InfluxDB: Too few arguments to function `SendDataToInfluxDbV2`

Disclosure: I'm just starting with InfluxDB so there's a chance I might be doing something wrong.

I've set up speedtest tracker to send metrics to InfluxDB, however whenever a test runs, I don't get any metrics in influx, and I always get the following stack trace:

[2022-10-30 16:41:17] production.ERROR: Too few arguments to function App\Jobs\SendDataToInfluxDbV2::__construct(), 1 passed in /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php on line 18 and exactly 2 expected {"exception":"[object] (ArgumentCountError(code: 0): Too few arguments to function App\\Jobs\\SendDataToInfluxDbV2::__construct(), 1 passed in /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php on line 18 and exactly 2 expected at /var/www/html/app/Jobs/SendDataToInfluxDbV2.php:28)

οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
[stacktrace]

#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php(18): App\\Jobs\\SendDataToInfluxDbV2->__construct()
#1 /var/www/html/app/Observers/ResultObserver.php(66): App\\Jobs\\SendDataToInfluxDbV2::dispatch()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(545): App\\Observers\\ResultObserver->created()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/DatabaseTransactionsManager.php(96): Illuminate\\Events\\Dispatcher->Illuminate\\Events\\{closure}()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(546): Illuminate\\Database\\DatabaseTransactionsManager->addCallback()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(441): Illuminate\\Events\\Dispatcher->Illuminate\\Events\\{closure}()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(249): Illuminate\\Events\\Dispatcher->Illuminate\\Events\\{closure}()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php(189): Illuminate\\Events\\Dispatcher->dispatch()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1308): Illuminate\\Database\\Eloquent\\Model->fireModelEvent()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1128): Illuminate\\Database\\Eloquent\\Model->performInsert()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(976): Illuminate\\Database\\Eloquent\\Model->save()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php(306): Illuminate\\Database\\Eloquent\\Builder->Illuminate\\Database\\Eloquent\\{closure}()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(977): tap()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Illuminate\\Database\\Eloquent\\Builder->create()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2321):Illuminate\\Database\\Eloquent\\Model->forwardCallTo()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2333): Illuminate\\Database\\Eloquent\\Model->__call()
#16 /var/www/html/app/Jobs/ExecSpeedtest.php(73): Illuminate\\Database\\Eloquent\\Model::__callStatic()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\\Jobs\\ExecSpeedtest->handle()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(651): Illuminate\\Container\\BoundMethod::call()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\\Container\\Container->call()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Bus\\Dispatcher->Illuminate\\Bus\\{closure}()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\\Pipeline\\Pipeline->then()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(124): Illuminate\\Bus\\Dispatcher->dispatchNow()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Queue\\CallQueuedHandler->Illuminate\\Queue\\{closure}()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(126): Illuminate\\Pipeline\\Pipeline->then()
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\Queue\\CallQueuedHandler->dispatchThroughMiddleware()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(98): Illuminate\\Queue\\CallQueuedHandler->call()
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(425): Illuminate\\Queue\\Jobs\\Job->fire()
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(375): Illuminate\\Queue\\Worker->process()
#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(173): Illuminate\\Queue\\Worker->runJob()
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(150): Illuminate\\Queue\\Worker->daemon()
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(134): Illuminate\\Queue\\Console\\WorkCommand->runWorker()
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Queue\\Console\\WorkCommand->handle()
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(651): Illuminate\\Container\\BoundMethod::call()
#42 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(144): Illuminate\\Container\\Container->call()
#43 /var/www/html/vendor/symfony/console/Command/Command.php(308): Illuminate\\Console\\Command->execute()
#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(126): Symfony\\Component\\Console\\Command\\Command->run()
#45 /var/www/html/vendor/symfony/console/Application.php(1002): Illuminate\\Console\\Command->run()
#46 /var/www/html/vendor/symfony/console/Application.php(299): Symfony\\Component\\Console\\Application->doRunCommand()
#47 /var/www/html/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun()
#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Application.php(102): Symfony\\Component\\Console\\Application->run()
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(155): Illuminate\\Console\\Application->run()
#50 /var/www/html/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle()
#51 {main}
"} 

These are my current setings, I can send metrics using curl from my local computer.

Screenshot 2022-10-30 at 16 48 49

and it doesn't matter if use /api/v2/metrics/ or just the plain http:domain:port combination.

Improve README

When opening project's README it would be beneficial to have some explanation what this project about for those who has no idea. Would be nice, if you could add a screenshot (or couple of them, if there are more than one view) and feature list.

Need InfluxDB data sample

I need a sample of the data from the abandoned project so I can match or improve upon the data reported.

[Bug] Influx integration sends bytes sent rather than bandwidth measurement

I configured influxdb2 integration and checked data after the first speedtest. These are the available fields I could choose from:

image

I picked download/upload, but I noticed very low values in influx:

image

so I checked the mariadb data (record #7):

image

So the data was ok. But the reported speed of that test was this:

image

I didn't understand at first...then I thought maybe those download/upload columns in the db represent the amount of data sent/received, and that you get the actual speed values from the json in the data column. Problem is that the data column is not exported to influx.

So, to integrate my OP, I think also the DL/UL speed values should be in their own columns, probably the quantity of data sent/received is not so important, and you could actually reuse those columns. :)

Originally posted by @alexdelprete in #48 (comment)

unable to exec /etc/s6-overlay/scripts/startup: Permission denied

Hello,

I encounter a problem when I launch the image with an error message :

s6-rc-oneshot-run: fatal: unable to exec /etc/s6-overlay/scripts/startup: Permission denied

I launched it with docker-compose with this simple configuration :

services:
  speedtest-tracker:
    build: ./speedtest-tracker

The repo is freshly cloned in speedtest-tracker directory.

Architecture : aarch64

Can you help me ?

Thanks

Can't pull image

Hi Alex, thanks for the invitation.

I created a simple docker-compose.yml file, pointing to the ghcr.io package, but I'm unable to pull the image, I have access denied errors. I am logged in to ghcr.io and also docker repo.

version: '3.3'
services:
  speedtest-tracker:
    image: ghcr.io/alexjustesen/speedtest-tracker:v0.1.0-alpha.2
    container_name: speedtest-tracker

Error spinning it up:

❯ docker compose up -d --force-recreate --remove-orphans
[+] Running 0/1
 β Ώ speedtest-tracker Error                                                                                                                                                                                                              1.8s
Error response from daemon: pull access denied for speedtest-tracker, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

Also tried pulling the image first, from ghcr.io and withous specifying the repo, like in the provided instructions:

❯ docker pull ghcr.io/alexjustesen/speedtest-tracker:v0.1.0-alpha.2
Error response from daemon: denied

❯ docker pull speedtest-tracker:v0.1.0-alpha.2
Error response from daemon: pull access denied for speedtest-tracker, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

Any suggestion is more than welcome. :)

No log line matching the '' filter

Hi,
I've deployed the container on RPi 4 using docker compose with sqlite database.
The log shows only "No log line matching the '' filter".
The only thing I've changed is the port on the host side and the volume mapping.

Please advise.

Feature Request: Adding columns to DB for latency and jitter values

Right now DL/UL/Ping values have specific columns in the results table, could it be possible to add the columns relevant to latency and jitter values for DL/UL/Ping? I know you also record the entire json result in a column, but it would be simpler to have the data in the columns to build graphs. :)

  • ping/latency - ping/jitter
  • download/latency/iqm - download/latency/jitter
  • upload/latency/iqm - upload/latency/jitter

JSON result:

{
    "type": "result",
    "timestamp": "2022-10-19T14:58:06Z",
    "ping": {
        "jitter": 0.669,
        "latency": 9.098,
        "low": 8.265,
        "high": 9.836
    },
    "download": {
        "bandwidth": 101028973,
        "bytes": 731422984,
        "elapsed": 7206,
        "latency": {
            "iqm": 58.306,
            "low": 9.128,
            "high": 325.879,
            "jitter": 47.725
        }
    },
    "upload": {
        "bandwidth": 29942177,
        "bytes": 187101993,
        "elapsed": 6301,
        "latency": {
            "iqm": 10.126,
            "low": 8.357,
            "high": 12.516,
            "jitter": 0.967
        }
    },
    "packetLoss": 0,
    "isp": "Tecno General S.r.l",
    "interface": {
        "internalIp": "10.1.10.23",
        "name": "eth0",
        "macAddr": "XX:XX:XX:XX:XX:XX",
        "isVpn": false,
        "externalIp": "XXX.XXX.XXX.XXX"
    },
    "server": {
        "id": 4302,
        "host": "speedtest.vodafone.it",
        "port": 8080,
        "name": "Vodafone IT",
        "location": "Milan",
        "country": "Italy",
        "ip": "217.171.46.93"
    },

Web UI login/password

Hi,

What's the login / password from the Web UI?

Screen Shot 2022-09-29 at 21 23 05

my docker compose:

speedtest-new:
    container_name: speedtest-new
    image: ghcr.io/alexjustesen/speedtest-tracker:latest
    restart: unless-stopped
    environment:
      - TZ=${TZ}
      - PUID=${UID}
      - PGID=${GID}
      - PHP_POOL_NAME=speedtest-tracker_php
      - DB_CONNECTION=sqlite
      - DB_DATABASE=/app/database.sqlite
    ports:
      - 8765:80
    volumes:
      - ${VLM_PATH}/speedtest-new:/app

Low speed values with selected server in config.yml

I noticed really low speed values reported in the admin panel, I just did a manual test with the server 4302 I configured in config.yml:

speedtest:
  enabled: true
  schedule: '*/40 * * * *' # every hour
  ookla_server_id: 4302 # specify a server ID to use a sepecific server
tz: 'Europe/Rome'
   Speedtest by Ookla

      Server: Vodafone IT - Milan (id: 4302)
         ISP: Tecno General S.r.l
Idle Latency:     8.64 ms   (jitter: 0.31ms, low: 8.36ms, high: 9.29ms)
    Download:   813.10 Mbps (data used: 874.1 MB)
                 42.38 ms   (jitter: 38.70ms, low: 9.66ms, high: 941.40ms)
      Upload:   261.07 Mbps (data used: 150.7 MB)
                  9.76 ms   (jitter: 0.77ms, low: 8.44ms, high: 12.24ms)
 Packet Loss:     0.0%
  Result URL: https://www.speedtest.net/result/c/158c6f1d-3278-4606-b24a-fbd142c6deec

Is alpha.6 still using config.yml? If that's the case, I'm worried about the performance within docker, but the old speedtest-tracker worked fine in that regard. How do I check detailed info of a single test (server used, etc.)?

UI extremely slow

Describe the bug
From login, to navigate on web application, every click takes to many seconds. Maybe duplicate from issue #92, but he behaviour is exactly the same, loads up to 20 seconds.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'https://IP:8443'
  2. Click on 'Login'
  3. Navigate to the application menus
  4. See slowness

Expected behavior
Faster load on ms. Actually is taking up to 18 seconds to load some pages

Environment (please complete the following information):

  • OS: Docker
  • Architecture: [e.g. arm64, amd64]
  • Browser [safari]
  • Version 0.2.0

Screenshots
Login screen:
Loading screen

Dashboard:
Web application

Logs
Screenshot 2022-11-05 at 21 48 41

Console:
Console errors

Additional context
I'm using docker with sqlite. Mapped config file and accessing trough mi local IP and HTTPS.

500 Server Error

While awaiting the a build for RPI's - Have the latest build running on my Windows machine using Docker.
Provided a blank sqlite db.

Logging in with admin@example and password.
Seeing a 500 server error. Nothing obvious to indicate what the problem could be.

Call is against - http://localhost:8080/livewire/message/filament.core.auth.login

Oops! An Error Occurred
The server returned a "405 Method Not Allowed".
Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.

Screen Shot 2022-09-29 at 11 15 34

Any ideas?
Thanks

[Feature Request] Add read-only switch to allow for external access without auth

Describe the feature
It would be great if it were possible to configure this docker image locally, then add a switch into the Docker env to disable all the configuration options. Then it should be possible to allow external access without worrying about authentication. Just to monitor or show internet speed over time.

Additional context
I'd like to be able to share a link to the speedtest tracker page and allow others to view the results without authentication. If they are authenticated (I assume) they will be able to change the settings, which is not what I want. This would be handy when showing ISP of significant speed fluctuations/discrepancies.

Support for arm v7

Is your feature request related to a problem? Please describe.
I want to be able to run this as docker container on raspberry pi (arm v7).

Describe the solution you'd like
Is there any plan to support this in the near future?

Additional context
NA

Errors on startup

Pulled it, finally! :)

Errors on startup:

[2022-09-15 14:00:04] production.ERROR: The command "'speedtest' '--accept-license' '--format=json'" failed.
Exit Code: 1(General error)
Working directory: /run/s6/services/queue-worker
Output:
================
Error Output:
================
==============================================================================
Ookla collects certain data through Speedtest that may be considered
personally identifiable, such as your IP address, unique device
identifiers or location. Ookla believes it has a legitimate interest
to share this data with internet providers, hardware manufacturers and
industry regulators to help them understand and create a better and
faster internet. For further information including how the data may be
shared, where the data may be transferred and Ookla's contact details,
please see our Privacy Policy at:
       http://www.speedtest.net/privacy
==============================================================================
To accept the message please run speedtest interactively or use the following: 
    speedtest --accept-gdpr
 {"exception":"[object] (Symfony\\Component\\Process\\Exception\\ProcessFailedException(code: 0): The command \"'speedtest' '--accept-license' '--format=json'\" failed.
Exit Code: 1(General error)
Working directory: /run/s6/services/queue-worker
Output:
================
Error Output:
================
==============================================================================
Ookla collects certain data through Speedtest that may be considered
personally identifiable, such as your IP address, unique device
identifiers or location. Ookla believes it has a legitimate interest
to share this data with internet providers, hardware manufacturers and
industry regulators to help them understand and create a better and
faster internet. For further information including how the data may be
shared, where the data may be transferred and Ookla's contact details,
please see our Privacy Policy at:
       http://www.speedtest.net/privacy
==============================================================================
To accept the message please run speedtest interactively or use the following: 
    speedtest --accept-gdpr
 at /var/www/html/app/Jobs/ExecSpeedtest.php:54)
οΏ½
[stacktrace]
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\\Jobs\\ExecSpeedtest->handle()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(651): Illuminate\\Container\\BoundMethod::call()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\\Container\\Container->call()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Bus\\Dispatcher->Illuminate\\Bus\\{closure}()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\\Pipeline\\Pipeline->then()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(124): Illuminate\\Bus\\Dispatcher->dispatchNow()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Queue\\CallQueuedHandler->Illuminate\\Queue\\{closure}()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(126): Illuminate\\Pipeline\\Pipeline->then()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\Queue\\CallQueuedHandler->dispatchThroughMiddleware()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(98): Illuminate\\Queue\\CallQueuedHandler->call()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(425): Illuminate\\Queue\\Jobs\\Job->fire()
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(375): Illuminate\\Queue\\Worker->process()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(173): Illuminate\\Queue\\Worker->runJob()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(150): Illuminate\\Queue\\Worker->daemon()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(134): Illuminate\\Queue\\Console\\WorkCommand->runWorker()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Queue\\Console\\WorkCommand->handle()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(651): Illuminate\\Container\\BoundMethod::call()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(144): Illuminate\\Container\\Container->call()
#26 /var/www/html/vendor/symfony/console/Command/Command.php(308): Illuminate\\Console\\Command->execute()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(126): Symfony\\Component\\Console\\Command\\Command->run()
#28 /var/www/html/vendor/symfony/console/Application.php(1002): Illuminate\\Console\\Command->run()
#29 /var/www/html/vendor/symfony/console/Application.php(299): Symfony\\Component\\Console\\Application->doRunCommand()
#30 /var/www/html/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Application.php(102): Symfony\\Component\\Console\\Application->run()
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\\Console\\Application->run()
#33 /var/www/html/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle()
#34 {main}
"} 
sendmail: account default from /etc/msmtprc: envelope-from address is missing

Originally posted by @alexdelprete in #9 (comment)

Can not access GUI

hi guys,

I installed everything but I can not access the webGUI because of SSL error.

how can I turn off SSL ?

is there an environment variable available ?

thanks

Speedtests are still a bit off..

Even after the release with #49 implemented, the speeds that are displayed on the dashboard / results are still off from the actual results that the url displays / in the database.

Example:
Dashboard shows ---
10-22-2022_20-36-32

but going into the database file and grabbing the url for said run shows my actual download speed at 941.63 Mbps and upload at 41.62 Mbps.

The download and upload for the result in the actual database file are reported as:

Download: 117703158 Bytes which equals out the 941.625264 megabits
Upload: 5201880 Bytes which equals out the 41.61504 megabits

which with rounding, the information in the database file come out to where the url speeds are shown when converted, so the calculation is wrong somewhere in terms of the what the dashboard is showing for the speedtest tracker.

iPerf support

Relying on one service that isn't open source for tests isn't a great idea. This issue is to remind myself to explore adding support for iPerf.

https://iperf.fr/

healthchecks.io integration

Is your feature request related to a problem? Please describe.
Keep track of service status and get notified when speedtest doesn't run (or fails).

Describe the solution you'd like
Ping a specified URL on successful (or failed) speedtest. https://healthchecks.io/ is a popular such monitoring service.

Additional context
The original project had this. While not urgent it would bring this project closer to parity.

Known issue: Poor speedtest/networking performance in WSL (maybe macOS)

Problem statement

On certain host systems speedtests can differ drastically between running the test from the host OS and from within the Speedtest Tracker container.

Warning
If you use speedtest.net browser results to quantify the issue I'll throw out the results, you've been warned.

Warning
If you're testing this over wifi, LOL

Windows Subsystem for Linux (WSL)

Status: βœ… confirmed
Fix: ⬜ tbd

Steps to reproduce

  1. Select a server and make sure you're testing against the same server each time
  2. Run a speedtest from within the Speedtest Tracker UI
  3. Run a speedtest from within the Speedtest Tracker Docker container with the command speedtest --server-id=#####
  4. Install the Speedtest CLI in WSL (using the Ubuntu/Debian steps) and run the speedtest from WSL with the command speedtest --server-id=#####`
  5. If your results differ from a health margin (say more than 20%) you're likely having this issue.

MacOS

Status: ⬜ unconfirmed
Fix: ⬜ tbd

Steps to reproduce

  1. Select a server and make sure you're testing against the same server each time
  2. Run a speedtest from within the Speedtest Tracker UI
  3. Run a speedtest from within the Speedtest Tracker Docker container with the command speedtest --server-id=#####
  4. Install the Speedtest CLI in WSL (using the macOS steps) and run the speedtest from WSL with the command speedtest --server-id=#####`
  5. If your results differ from a health margin (say more than 20%) you're likely having this issue.

Debugging

Before saying "me too" please follow the debugging steps below, I'll be adding more as I learn more about the issue and as possibilities are ruled out.

Check your network card

Make sure your hardware actually supports the networking speed you'd expect to see, @JohnnyDeeee gave some tips here #126 (comment).

Don't test the container and then run a speedtest on speedtest.net

These fundamentally don't use the same networking protocol and introduce more variables into the testing process to uncover the root cause. To accurately identify and test against this issue follow the "steps to reproduce under your OS".

Links

Research

Related issues from this project

Dashboard Slow?

Any reason why the entire dashboard would be slow? Seems that the http server is noticably slow to respond.
Running this on a Raspberry Pi 4. Speedtests are fine - super fast with no issues but browing the dashboard is slow.

Alpha 8: scheduler/crontab not working

I changed the cron expression from 60m to to: schedule: '*/1 * * * *' because I wanted to check if latest version tests were working, but no tests have been queued.

The results table in the db is empty.

authentication: false still forces the login screen

problem

the config and start script yields the following issues:

  • login screen still required upon visiting http://localhost:8080, even with authentication: false
  • πŸ‡ Configuring Speedtest Tracker... /entrypoint: 11: [: sqlite: unexpected operator
  • ...and i cannot put the db in /app, because php says app is not a permitted dir, thus i put the db in /var/www/html/db`, as shown below
---
authentication: false
influxdb:
  enabled: false
  version: 2 # Only InfluxDB2 is supported right now
  url: "http://your-influxdb-instance" # Full url to your InfluxDB instance, sometimes this includes a port number
  org: "" # Organization name, usually created when you installed InfluxDB
  bucket: "speedtest-tracker" # A name location to store the speedtest data in
  token: "" # This is your API token
notifications:
  channels:
    discord:
      webhook_url: null # Set as null to disable
    slack:
      webhook_url: null # Set as null to disable
speedtest:
  enabled: true
  schedule: "*/30 * * * *" # every hour
  ookla_server_id: null # specify a server ID to use a specific server
tz: "UTC"
// start.sh
set -exo pipefail
docker run -it --rm --name speedtest-tracker \
  -p 8080:80 \
  -e "PHP_POOL_NAME=speedtest-tracker_php" \
  -e "DB_CONNECTION=sqlite" \
  -e "DB_DATABASE=/var/www/html/db/database.sqlite" \
  -v $PWD/app:/app \
  -v $PWD/db:/var/www/html/db/ \
  ghcr.io/alexjustesen/speedtest-tracker:latest

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.