diff --git a/.gitbook/assets/db_notification.png b/.gitbook/assets/db_notification.png index 05b928c..68116c5 100644 Binary files a/.gitbook/assets/db_notification.png and b/.gitbook/assets/db_notification.png differ diff --git a/.gitbook/assets/mail_notification.png b/.gitbook/assets/mail_notification.png index 2e69842..0281aba 100644 Binary files a/.gitbook/assets/mail_notification.png and b/.gitbook/assets/mail_notification.png differ diff --git a/.gitbook/assets/prometheus_settings.png b/.gitbook/assets/prometheus_settings.png index ca3b1ff..a4d97fb 100644 Binary files a/.gitbook/assets/prometheus_settings.png and b/.gitbook/assets/prometheus_settings.png differ diff --git a/.gitbook/assets/webhook_notification.png b/.gitbook/assets/webhook_notification.png index 8fad263..04c1783 100644 Binary files a/.gitbook/assets/webhook_notification.png and b/.gitbook/assets/webhook_notification.png differ diff --git a/README.md b/README.md index 0a469a1..1875132 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ description: >- # Introduction {% hint style="info" %} -Docs are up-to-date through version: `v1.7.x` +Docs are up-to-date through version: `v1.13.x` {% endhint %}
diff --git a/SUMMARY.md b/SUMMARY.md index ecc88f0..9f02157 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -33,6 +33,7 @@ * [InfluxDB v2](settings/data-platforms/influxdb2.md) * [Prometheus](settings/data-platforms/prometheus.md) * [Notifications](settings/notifications/README.md) + * [Apprise](settings/notifications/apprise.md) * [Database](settings/notifications/database.md) * [Mail](settings/notifications/mail.md) * [Webhook](settings/notifications/webhook.md) diff --git a/features.md b/features.md index 55714d9..20da87e 100644 --- a/features.md +++ b/features.md @@ -4,4 +4,4 @@ description: A full list of implemented features and those that are planned. # Features -
FeaturesStatus
Install options
Docker images for x86Done
Docker images for arm64Done
unRAID Community AppDone
Dashboard
Show the most recent resultsDone
Pretty graphsDone
Results
History of failed and successful resultsDone
Filter by scheduled and successfulDone
Export selected results to CSVDone
Speedtest options
Scheduled testsDone
Adhoc testDone
Manually specify a serverDone
Manually specify a list of serversDone
Threshold alertsDone
Ping options
Ping a domain or list of domainsPlanned
Database support
SQLite (default)Done
MariaDB / MySQLDone
PostgresqlDone
InfluxDB v2Done
PrometheusPlanned
Notification Channels
In-appDone
MailDone
DiscordDone
GotifyDone
SlackDone
TelegramDone
WebhooksDone
NtfyDone
PushoverDone
HealthCheck.ioDone
Application Monitoring
https://ohdear.app/Planned
https://thenping.me/Planned
https://healthchecks.io/Planned
+
FeaturesStatus
Install options
Docker images for x86Done
Docker images for arm64Done
unRAID Community AppDone
Dashboard
Show the most recent resultsDone
Pretty graphsDone
Results
History of failed and successful resultsDone
Filter by scheduled and successfulDone
Export selected results to CSVDone
Speedtest options
Scheduled testsDone
Adhoc testDone
Manually specify a serverDone
Manually specify a list of serversDone
Threshold alertsDone
Ping options
Ping a domain or list of domainsPlanned
Database support
SQLite (default)Done
MariaDB / MySQLDone
PostgresqlDone
InfluxDB v2Done
PrometheusDone
Notification Channels
In-appDone
MailDone
WebhooksDone
AppriseDone
Application Monitoring
https://ohdear.app/Planned
https://thenping.me/Planned
https://healthchecks.io/Planned
diff --git a/getting-started/environment-variables.md b/getting-started/environment-variables.md index a8cd0d5..c1eba47 100644 --- a/getting-started/environment-variables.md +++ b/getting-started/environment-variables.md @@ -8,17 +8,22 @@ description: >- ### Application -
NameRequiredDescriptionExample
PUIDtrueUsed to set the user the container should run as.1000
PGIDtrueUsed to set the group the container should run as.1000
APP_NAMEfalseUsed to define the application's name in the dashboard and in notifications.
APP_KEYtrueKey used to encrypt and decrypt data. See the install docs to generate a key.
ADMIN_NAMEfalseName of the initial admin user.
Note: Only effective during initial setup.
Admin
ADMIN_EMAILfalseEmail of the initial admin user.
Note: Only effective during initial setup.
admin@example.com
ADMIN_PASSWORDfalsePassword of the initial admin user.
Note: Only effective during initial setup.
password
ALLOWED_IPSfalseBlock requests to the application unless from the allowed addresses.127.0.0.1,127.0.0.2
APP_URLfalseURL used for links in emails and notifications.https://speedtest.example.com
ASSET_URLfalseURL used for assets, needed when using a reverse proxy.https://speedtest.example.com
APP_LOCALEfalseChange the default langugage.
APP_TIMEZONEfalseApplication timezone should be set if your database does not use UTC as its default timezone.Europe/London
CHART_BEGIN_AT_ZEROfalseBegin the dashboard axis charts at zero.

- Default: true
true or false
CHART_DATETIME_FORMATfalseSet the formatting of timestamps in charts.

Formatting: https://www.php.net/manual/en/datetime.format.php
j/m G:i
(18/10 20:06)
DATETIME_FORMATfalseSet the formatting of timestamps in tables and notifications.

Formatting: https://www.php.net/manual/en/datetime.format.php
j M Y, G:i:s
(18 Oct 2024, 20:06:01)
DISPLAY_TIMEZONEfalseDisplay timestamps in your local time.America/New_York
CONTENT_WIDTHfalseWidth of the content section of each page. Can be set to any value found in the Filament docs.

- Default:7xl
PUBLIC_DASHBOARDfalseEnables the public dashboard for guest (unauthenticated) users.

- Default:false
DEFAULT_CHART_RANGEfalseSet the default time range for the dashboards

- Default:24h
- Values:24h, week, month
week
+
NameRequiredDescriptionExample
PUIDtrueUsed to set the user the container should run as.1000
PGIDtrueUsed to set the group the container should run as.1000
APP_KEYtrueKey used to encrypt and decrypt data. See the install docs to generate a key.
APP_URLtrueURL used for links in emails and notifications.https://speedtest.example.com
APP_NAMEfalseUsed to define the application's name in the dashboard and in notifications.
ADMIN_NAMEfalseName of the initial admin user.
Note: Only effective during initial setup.
Admin
ADMIN_EMAILfalseEmail of the initial admin user.
Note: Only effective during initial setup.
admin@example.com
ADMIN_PASSWORDfalsePassword of the initial admin user.
Note: Only effective during initial setup.
password
ASSET_URLfalseURL used for assets, needed when using a reverse proxy.https://speedtest.example.com
APP_LOCALEfalseChange the default language.
APP_TIMEZONEfalseApplication timezone should be set if your database does not use UTC as its default timezone.Europe/London
ALLOWED_IPSfalseBlock requests to the application unless from the allowed addresses.127.0.0.1,127.0.0.2
*** -### Speedtest +### Display -
NameRequiredDescriptionExample
SPEEDTEST_SKIP_IPSfalseA comma separated list of public IP addresses where tests will be skipped when present.127.0.0.1 or 127.0.0.0/16
SPEEDTEST_SCHEDULEfalseCron expression used to run speedtests on a scheduled basis. https://crontab.guru/ is a helpful tool.6 */2 * * *
(At minute 6 past every 2nd hour)
SPEEDTEST_SERVERSfalse

Comma separated list of server IDs to randomly use for speedtest.

To find servers near you visit: https://c.speedtest.net/speedtest-servers-static.php

52365 or 36998,52365
SPEEDTEST_BLOCKED_SERVERSfalseComma separated list of server IDs that should not be used when running speedtests.
SPEEDTEST_INTERFACEfalseSet the network interface to use for the test. This need to be the network interface available inside the containereth0
SPEEDTEST_CHECKINTERNET_URLfalseSet the URL used for checking of an active internet connection. We check only for an HTTP 200 response ocde.
THRESHOLD_ENABLEDfalseEnable the thresholds. Note: Only effective during initial setup.true
THRESHOLD_DOWNLOADfalse

Set the Download Threshold

Note: Only effective during initial setup.

900
THRESHOLD_UPLOADfalse

Set the Upload Threshold

Note: Only effective during initial setup.

900
THRESHOLD_PINGfalse

Set the Ping Threshold

Note: Only effective during initial setup.

25
PRUNE_RESULTS_OLDER_THANfalseSet the value to greater than zero to prune stored results. This value should be represented in days, e.g. 7 will purge all results over 7 days old.7
+
NameRequiredDescriptionExample
CHART_BEGIN_AT_ZEROfalseBegin the dashboard axis charts at zero.

- Default: true
true or false
CHART_DATETIME_FORMATfalseSet the formatting of timestamps in charts.

Formatting: https://www.php.net/manual/en/datetime.format.php
j/m G:i
(18/10 20:06)
DATETIME_FORMATfalseSet the formatting of timestamps in tables and notifications.

Formatting: https://www.php.net/manual/en/datetime.format.php
j M Y, G:i:s
(18 Oct 2024, 20:06:01)
DISPLAY_TIMEZONEfalseDisplay timestamps in your local time.America/New_York
CONTENT_WIDTHfalseWidth of the content section of each page. Can be set to any value found in the Filament docs.

- Default: 7xl
PUBLIC_DASHBOARDfalseEnables the public dashboard for guest (unauthenticated) users.

- Default: false
DEFAULT_CHART_RANGEfalseSet the default time range for the dashboards

- Default: 24h
Options: 24h, week or month
*** -### API +### Speed tests + +
NameRequiredDescriptionExample
SPEEDTEST_SKIP_IPSfalseA comma separated list of public IP addresses where tests will be skipped when present.127.0.0.1 or 127.0.0.0/16
SPEEDTEST_SCHEDULEfalseCron expression used to run speedtests on a scheduled basis. https://crontab.guru/ is a helpful tool.6 */2 * * *
(At minute 6 past every 2nd hour)
SPEEDTEST_SERVERSfalse

Comma separated list of server IDs to randomly use for speedtest.

To find servers near you visit: https://c.speedtest.net/speedtest-servers-static.php

52365 or 36998,52365
SPEEDTEST_BLOCKED_SERVERSfalseComma separated list of server IDs that should not be used when running an Ookla Speedtest.
SPEEDTEST_INTERFACEfalseSet the network interface to use for the test. This need to be the network interface available inside the containereth0
SPEEDTEST_EXTERNAL_IP_URLfalseURL of a service used to get the external WAN IP address.
SPEEDTEST_INTERNET_CHECK_HOSTNAMEfalseHostname used to ping for an active internet connection.
THRESHOLD_ENABLEDfalseEnable the thresholds. Note: Only effective during initial setup.true
THRESHOLD_DOWNLOADfalse

Set the Download Threshold

Note: Only effective during initial setup.

900
THRESHOLD_UPLOADfalse

Set the Upload Threshold

Note: Only effective during initial setup.

900
THRESHOLD_PINGfalse

Set the Ping Threshold

Note: Only effective during initial setup.

25
PRUNE_RESULTS_OLDER_THANfalseSet the value to greater than zero to prune stored results. This value should be represented in days, e.g. 7 will purge all results over 7 days old.7
-
NameRequiredDescriptionExample
API_RATE_LIMITfalseNumber of requests per minute to the API.

- Default: 60
100
API_MAX_RESULTSfalseSets the maximum number of results returned by API.

- Default 500
500
+*** + +### API +
NameRequiredDescriptionExample
API_RATE_LIMITfalseNumber of requests per minute to the API.

- Default: 60
100
API_MAX_RESULTSfalseSets the maximum number of results returned by API.

- Default 500
500
diff --git a/getting-started/installation/README.md b/getting-started/installation/README.md index 115b677..e37ce3b 100644 --- a/getting-started/installation/README.md +++ b/getting-started/installation/README.md @@ -2,6 +2,10 @@ Speedtest Tracker is containerized so you can run it anywhere you run your containers. The image is built by LinuxServer.io, build information can be found [here](https://fleet.linuxserver.io/image?name=linuxserver/speedtest-tracker). +{% hint style="danger" %} +Only the installation methods listed below are supported. Any other installation methods, such as bare metal setups or Proxmox LXCs, are **not supported** by this project. +{% endhint %} + Use the install guides listed below to install Speedtest Tracker: ### Docker diff --git a/getting-started/installation/using-docker-compose.md b/getting-started/installation/using-docker-compose.md index d0895eb..96fdaba 100644 --- a/getting-started/installation/using-docker-compose.md +++ b/getting-started/installation/using-docker-compose.md @@ -50,7 +50,8 @@ services: environment: - PUID= - PGID= - - APP_KEY= + - APP_KEY= # Required + - APP_URL= # Required - DB_CONNECTION=sqlite volumes: - /path/to/data:/config @@ -70,7 +71,8 @@ services: environment: - PUID= - PGID= - - APP_KEY= + - APP_KEY= # Required + - APP_URL= # Required - DB_CONNECTION=mariadb - DB_HOST=db - DB_PORT=3306 @@ -115,7 +117,8 @@ services: environment: - PUID= - PGID= - - APP_KEY= + - APP_KEY= # Required + - APP_URL= # Required - DB_CONNECTION=mysql - DB_HOST=db - DB_PORT=3306 @@ -148,7 +151,49 @@ volumes: {% endtab %} {% tab title="Postgres" %} - +```yaml +services: + speedtest-tracker: + image: lscr.io/linuxserver/speedtest-tracker:latest + restart: unless-stopped + container_name: speedtest-tracker + ports: + - 8080:80 + - 8443:443 + environment: + - PUID= + - PGID= + - APP_KEY= # Required + - APP_URL= # Required + - DB_CONNECTION=pgsql + - DB_HOST=db + - DB_PORT=5432 + - DB_DATABASE=speedtest_tracker + - DB_USERNAME=speedtest_tracker + - DB_PASSWORD=password + volumes: + - /path/to/data:/config + - /path/to-custom-ssl-keys:/config/keys + depends_on: + - db + db: + image: postgres:18 + restart: always + environment: + - POSTGRES_DB=speedtest_tracker + - POSTGRES_USER=speedtest_tracker + - POSTGRES_PASSWORD=password + - PGDATA=/var/lib/postgresql/data/ + volumes: + - speedtest-db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"] + interval: 10s + retries: 5 + timeout: 5s +volumes: + speedtest-db: +``` {% endtab %} {% endtabs %} diff --git a/getting-started/installation/using-docker.md b/getting-started/installation/using-docker.md index 7763281..b5ff34a 100644 --- a/getting-started/installation/using-docker.md +++ b/getting-started/installation/using-docker.md @@ -38,18 +38,18 @@ You will need to get your user's `PUID` and `PGID`, you can do this by running ` {% tabs %} {% tab title="SQLite" %} -```docker -docker run -d --name speedtest-tracker --restart unless-stopped \ +
docker run -d --name speedtest-tracker --restart unless-stopped \
     -p 8080:80 \
     -p 8443:443 \
     -e PUID= \
     -e PGID= \
-    -e APP_KEY= \
+    -e APP_KEY= \
+    -e APP_URL= \
     -e DB_CONNECTION=sqlite \
     -v /path/to/data:/config \
     -v /path/to-custom-ssl-keys:/config/keys \
     lscr.io/linuxserver/speedtest-tracker:latest
-```
+
{% endtab %} {% tab title="MariaDB" %} @@ -59,7 +59,8 @@ docker run -d --name speedtest-tracker --restart unless-stopped \ -p 8443:443 \ -e PUID= \ -e PGID= \ - -e APP_KEY= \ + -e APP_KEY= \ + -e APP_URL= \ -e DB_CONNECTION=mariadb \ -e DB_HOST= \ -e DB_PORT=3306 \ @@ -79,7 +80,8 @@ docker run -d --name speedtest-tracker --restart unless-stopped \ -p 8443:443 \ -e PUID= \ -e PGID= \ - -e APP_KEY= \ + -e APP_KEY= \ + -e APP_URL= \ -e DB_CONNECTION=mysql \ -e DB_HOST= \ -e DB_PORT=3306 \ @@ -99,7 +101,8 @@ docker run -d --name speedtest-tracker --restart unless-stopped \ -p 8443:443 \ -e PUID=1000 \ -e PGID=1000 \ - -e APP_KEY= + -e APP_KEY= \ + -e APP_URL= \ -e DB_CONNECTION=pgsql \ -e DB_HOST= \ -e DB_PORT=5432 \ @@ -146,3 +149,7 @@ You can now start the container accordingly the platform you are on. During the start the container there is a default username and password created. Use the [default login](../../security/authentication.md#default-user-account) credentials to login to the application. You can [change the default user](../../security/authentication.md#change-account-details) after logging in. {% endstep %} {% endstepper %} + +[^1]: Generate with: `echo -n 'base64:'; openssl rand -base64 32` + +[^2]: The URL where you'll access the app (e.g., `http://localhost:8080`) diff --git a/getting-started/installation/using-synology.md b/getting-started/installation/using-synology.md index d1bae61..c08d71a 100644 --- a/getting-started/installation/using-synology.md +++ b/getting-started/installation/using-synology.md @@ -18,25 +18,25 @@ This guide assumes you know how to use the old "Docker" application. {% stepper %} {% step %} -### Download Image +#### Download Image Open the Docker interface of your Synology Device, search for `linuxserver/speedtest-tracker` in the Registry and download it. {% endstep %} {% step %} -### Create Directory +#### Create Directory Create a local directory (i.e. `/volume1/docker/speedtest-tracker`) which later can be mapped to the docker container. {% endstep %} {% step %} -### Start Image +#### Start Image Launch the image once the download is completed. {% endstep %} {% step %} -### Map Ports +#### Map Ports Map the ports to available ports. @@ -51,13 +51,13 @@ Make sure the ports you choose are not used by any other application or DSM serv {% endstep %} {% step %} -### Map Directory +#### Map Directory Map the directory you created earlier to the mount path `/config`. {% endstep %} {% step %} -### Finish +#### Finish Review your settings and click "done". diff --git a/help/error-messages.md b/help/error-messages.md index 09d958e..c16f48d 100644 --- a/help/error-messages.md +++ b/help/error-messages.md @@ -1,18 +1,82 @@ # Error Messages -### Speedtest errors +### Troubleshooting + +For all below errors there will be more information provided in the container logs. You can check the logs for more details by checking the container logs by running `docker logs speedtest-tracker`. + +or any other equivalent command for your setup. + +
+ +Enable Debugging + +By default `APP_DEBUG` is set to `false` in production to prevent verbose error outputs. To debug the issue follow the steps below. + +1. Set `APP_DEBUG=true` as a environment variable +2. Restart the container +3. Reproduce the error by visiting the page or performing the action that caused the error +4. View the output in the UI or in the logs to help resolve the issue, if you can not resolve it open an issue in the [GitHub](https://github.com/alexjustesen/speedtest-tracker/issues) repository +5. In the output the line that starts with `[timestamp] production.ERROR:` is the error the server ran into +6. Once the issue is resolved you can remove the `APP_DEBUG` environment variable + +
+ +### Application + +
+ +I'm getting a 500 | SERVER ERROR error + +The `500 | SERVER ERROR` is caused by either a bug or a misconfiguration. You must e[nable debugging](error-messages.md#enable-debugging) to determine the exact cause of the error. + +
+ +
+ +Unsupported cipher or incorrect key length. Supported ciphers are: aes-128-cbc, aes-256-cbc, aes-128-gcm, aes-256-gcm. + +This error is shown when the `APP_KEY` is not set or not set correctly. Make suer you set the `APP_KEY` as described in the [installation steps](../getting-started/installation/using-docker-compose.md#install-with-docker-compose). + +
+ +### Speedtest Process + +
+ +Failed to connected to hostname + +When a speedtest is being [processed](../other/speedtest-process.md) Speedtest Tracker will make a ICMP ping to [icanhazip.com](http://icanhazip.com) to check if there is an internet connection before starting the Speedtest + +**Possible reasons**: + +* There is a docker network problem or no internet connection. +* Some DNS blocks lists will block this domain, if you're getting errors and your server has access to the internet you'll need to add this to your allow lists. +* _Most_ Docker setups can send ICMP requests without needed elevated privileges on the host or in the container. That being said if your Docker user doesn't run with elevated permissions or doesn't belong to the Docker group you can get a failure on this step. To allow the user to send ICMP requests you need to add the permission to the container. + +**Configuration options** + +* Use available [Environment Variables](../getting-started/environment-variables.md#speed-tests) to change the endpoint to your liking + +
-Tests are saying there is no internet while there is. +Failed to fetch external IP address -When a speedtest is being processed Speedtest Tracker will make a call to [http://icanhazip.com](http://icanhazip.com) to get your external IP address. This is done to determine if your server has access to the internet and to check if your external IP address (WAN IP) should be skipped. +When the `SPEEDTEST_SKIP_IPS` environment variable is Speedtest Tracker will make a call to [http://icanhazip.com](http://icanhazip.com/) to get your external IP address. This is done check if your external IP address (WAN IP) should be skipped. -Some DNS blocks lists will block this domain, if you're getting errors and your server has access to the internet you'll need to add this to your allow lists. +**Possible reasons**: + +* There is a docker network problem or no internet connection. +* Some DNS blocks lists will block this domain, if you're getting errors and your server has access to the internet you'll need to add this to your allow lists. + +**Configuration options** + +* Use available [Environment Variables](../getting-started/environment-variables.md#speed-tests) to change the endpoint to your liking. :warning: Whatever service you choose needs to only return an IP address in the body of the response for this to work.
-### Ookla errors +### Ookla Related
@@ -37,3 +101,29 @@ This usually means the defined server is no longer available. Remove it from you Not 100% sure what causes this exception yet but it's likely when the CLI can't locate a local server. You should specify a list of servers to see if that addresses the issue.
+ +
+ +Unable to retrieve Ookla servers, check internet connection and see logs. + +This errors is shown when we try to retrieve the Ookla server list when selecting an server wehn running an manual speedtest. We get the list from: [https://www.speedtest.net/api/js/servers](https://www.speedtest.net/api/js/servers). + +This error is useually caused by a docker network problem or no internet connection. You can check the [container logs](error-messages.md#troubleshooting) for more details. + +
+ +### InfluxDB + +
+ +Failed to write to InfluxDB + +When Speedtest Tracker fails to write data to InfluxDB this error is shown. The [container logs](error-messages.md#troubleshooting) will show more details on why it failed. + +**Possible reasons:** + +* Connectivity problem to influxdb +* Problem with authentication +* Specified bucket does not exist in InfluxDB + +
diff --git a/help/faqs.md b/help/faqs.md index 32aa0ea..91c3322 100644 --- a/help/faqs.md +++ b/help/faqs.md @@ -25,17 +25,16 @@ You need a `APP_KEY` for the encryption. See the [installation docs](../getting- -### Time zones -
-How do I set the display and schedule time zone? +I'm getting duplicate message via Apprise -1. Set `DISPLAY_TIMEZONE` environment variables to your local timezone. -2. Restart the container +By default when sending an notifications via Apprise we wait up to 30 seconds for Apprise to respond back with any message. Incase this 30 seconds is exceeded, we will retry 3 times. In case of any very slow Apprise processing this might cause duplicated notifications. Please check the [logs](error-messages.md#troubleshooting) to see the the timeout happend
+### Time zones +
My display timestamps or scheduled tests aren't correct. @@ -55,20 +54,3 @@ Once set restart the container. Starting your cron schedule at an off-peak minute can help reduce network congestion or avoid overloading a speed test server. This [comment](https://github.com/alexjustesen/speedtest-tracker/issues/552#issuecomment-2028532010) on this issue can help you get the formatting right.
- -### Other - -
- -I'm getting a 500 | SERVER ERROR error - -By default `APP_DEBUG` is set to `false` in production to prevent verbose error outputs. To debug the issue follow the steps below. - -1. Set `APP_DEBUG=true` as a environment variable -2. Restart the container -3. Reproduce the error by visiting the page or performing the action that caused the error -4. View the output in the UI or in the logs to help resolve the issue, if you can not resolve it open an issue in the [GitHub](https://github.com/alexjustesen/speedtest-tracker/issues) repository -5. In the output the line that starts with `[timestamp] production.ERROR:` is the error the server ran into -6. Once the issue is resolved you can remove the `APP_DEBUG` environment variable - -
diff --git a/security/authorization.md b/security/authorization.md index 0527ad7..d92192a 100644 --- a/security/authorization.md +++ b/security/authorization.md @@ -23,7 +23,7 @@ ### Other -
UserAdmin
Manage API tokensfalsetrue
Trigger a manual Speedtestfalsetrue
+
UserAdmin
Manage API tokensfalsetrue
Trigger a manual Speedtesttruetrue
*** diff --git a/settings/data-platforms/prometheus.md b/settings/data-platforms/prometheus.md index ed416d3..84be1cf 100644 --- a/settings/data-platforms/prometheus.md +++ b/settings/data-platforms/prometheus.md @@ -2,14 +2,18 @@ After each test, Speedtest Tracker exposes the metrics for Prometheus to scrape. For long term storage or custom visualizations. -### Authentication +### Allowed IPs -To configure Speedtest Tracker to expose its metrics behind `basic auth`, apply the following settings - -
NameDefaultDescription
Use Basic AuthenticationfalseEnable / Disable Basic Auth
usernameblankusername for authentication
passwordblankpassword for authentication
+You can configure the Prometheus endpoint so it’s only accessible from specific IP addresses or networks. This can include single IPs or entire CIDR ranges.
+### Grafana Dashboard + +You can use this community made Grafana Dashboard to visualize your data. + +{% embed url="https://github.com/CrazyWolf13/Speedtest-Tracker-Prometheus" %} + ### Data pattern Speedtest Tracker exports data in two categories: labels and metrics. Labels are used for filtering, while metrics are used for displaying data. diff --git a/settings/notifications/apprise.md b/settings/notifications/apprise.md index f5d7c98..5dfd401 100644 --- a/settings/notifications/apprise.md +++ b/settings/notifications/apprise.md @@ -1,22 +1,33 @@ ---- -hidden: true ---- - # Apprise -Speedtest Tracker uses [Apprise](https://github.com/caronc/apprise-api) to send notifications to a wide variety of messaging services with a simple, unified configuration. +Apprise provides a unified notification channel that lets you send alerts to numerous services—like Discord, Pushover, and Ntfy as well as many additional platforms + +### Why Apprise + +Apprise allows the application to sent notifications to a wide variety of services. It let us focus on features instead of maintaining X number of notification channels. Essentially helping us cut down on maintenance/feature requests. -Apprise allows you to easily deliver alerts to popular platforms such as Discord, Slack, Telegram and many more. +### Apprise Server -{% hint style="warning" %} -To use Apprise notifications, you must deploy the [Apprise API](https://github.com/caronc/apprise-api) service. This is out of scope of this documentation. +{% hint style="info" %} +We don't offer support on setting up Apprise, incase of any problems with the Apprise Container please reach out to the Apprise team. {% endhint %} -

Apprise Settings

+To use Apprise, you’ll need to set up your own Apprise instance. This container isn’t created automatically, so make sure to include it in your deployment. See the Apprise [Github Repo](https://github.com/caronc/apprise-api) for the setup instructions. On the notification page you will need to define the location of your Apprise instance. Make sure this instance is reachable for the Speedtest Tracker. -
NameDescription
URLThis is the URL of your running Apprise API instance
Service URLThis is the URL of the service that will receive the notification. You can find a full list of supported services and how to format their URLs in the Apprise notification services documentation.
+### Notification Channels -### Triggers +Notification channels are the formatted URLs used by Apprise to send notifications to various services. Refer to the [Apprise documentation](https://github.com/caronc/apprise?tab=readme-ov-file#supported-notifications) for a full list of supported channels and their required formats. You can add as many different channels as you wish. The notifications will be sent to all of them. + +### Tips and Tricks -
NameDescription
On completed speedtestOn each successful speedtest a notification will be send to the application.
On absolute threshold failureOn any absolute threshold failure a notification will be send to the application.
+#### Format + +By default the format used for message is `markdown` This allows us to do some formatting on the message like bold text etc. + +#### Preview Images + +By default Apprise does not allow preview images for URLs. This is an default setting on the Apprise instance. Depending on the service used you can override this settings in the notification channel URL. Check the Apprise documentation to see if your service support this and how to set it. + +### Triggers +
NameDescription
on every scheduled speedtest runOn each successful scheduled speedtest a notification will be send to the application.
on threshold failures for scheduled speedtestsOn any absolute threshold failure for scheduled speedtest a notification will be send to the application.
diff --git a/settings/notifications/database.md b/settings/notifications/database.md index a253512..e4f0348 100644 --- a/settings/notifications/database.md +++ b/settings/notifications/database.md @@ -6,4 +6,4 @@ Notifications sent to the database channel will show up under the 🔔 icon in t ### Triggers -
NameDescription
On completed speedtestOn each successful speedtest a notification will be send to the application.
On absolute threshold failureOn any absolute threshold failure a notification will be send to the application.
+
NameDescription
on every scheduled speedtest runOn each successful scheduled speedtest a notification will be send to the application.
on threshold failures for scheduled speedtestsOn any absolute threshold failure for scheduled speedtest a notification will be send to the application.
diff --git a/settings/notifications/mail.md b/settings/notifications/mail.md index 85a97a7..a8e1bbe 100644 --- a/settings/notifications/mail.md +++ b/settings/notifications/mail.md @@ -51,7 +51,7 @@ MAIL_FROM_NAME="Speedtest Tracker" ### Triggers -
NameDescription
On completed speedtestOn each successful speedtest a notification will be send to the application.
On absolute threshold failureOn any absolute threshold failure a notification will be send to the application.
+
NameDescription
on every scheduled speedtest runOn each successful scheduled speedtest a notification will be send to the application.
on threshold failures for scheduled speedtestsOn any absolute threshold failure for scheduled speedtest a notification will be send to the application.
### Recipients diff --git a/settings/notifications/webhook.md b/settings/notifications/webhook.md index c6ef093..8bb7ab3 100644 --- a/settings/notifications/webhook.md +++ b/settings/notifications/webhook.md @@ -6,59 +6,65 @@ A webhook will send a JSON payload to a receiver of your choice ### Payload -Payload sent for a completed test - -```json -{ - "result_id": 1, - "site_name": "Speedtest Tracker", - "server_name": "Speedtest", - "server_id": 52365, - "isp": "Super Speed", - "ping": 2.782, - "download": 937874216, - "upload": 937797864, - "packet_loss": 0, - "speedtest_url": "https://www.speedtest.net/result/c/af8ddebf-7ef7-4b8d-b0c1-aaaaaaaaaaaa", - "url": "http://localhost/admin/results" -} -``` - -Payload sent for a threshold failure - +{% tabs %} +{% tab title="Threshold Failure " %} ```json { - "result_id": 1, + "result_id": 14, "site_name": "Speedtest Tracker", - "isp": "Super Speed", + "isp": "Speedy Communications", "benchmarks": { "download": { "bar": "min", "passed": false, "type": "absolute", - "value": 2000, + "test_value": 1022, + "benchmark_value": 2000, "unit": "mbps" }, "upload": { "bar": "min", "passed": false, "type": "absolute", - "value": 2000, + "test_value": 1018, + "benchmark_value": 2000, "unit": "mbps" }, "ping": { "bar": "max", "passed": false, "type": "absolute", - "value": 1, + "test_value": 3, + "benchmark_value": 1, "unit": "ms" } }, - "speedtest_url": "https://www.speedtest.net/result/c/af8ddebf-7ef7-4b8d-b0c1-aaaaaaaaa", - "url": "http://localhost/admin/results" + "speedtest_url": "https://www.speedtest.net/result/c/1433a2de-eb3c-4a0e-ab29-xxxxxx", + "url": "http://192.168.1.5/admin/results" +} +``` +{% endtab %} + +{% tab title="Completed test" %} +```json +{ + "result_id": 17, + "site_name": "Speedtest Tracker", + "server_name": "Speedtest", + "server_id": 52365, + "status": "completed", + "isp": "Speedy Communications", + "ping": 3, + "download": 1026, + "upload": 1012, + "packet_loss": 0, + "speedtest_url": "https://www.speedtest.net/result/c/288aa4aa-a52e-493c-8d60-xxxx", + "url": "http://192.168.1.5/admin/results" } ``` +{% endtab %} +{% endtabs %} ### Triggers -
NameDescription
On completed speedtestOn each successful speedtest a notification will be send to the application.
On absolute threshold failureOn any absolute threshold failure a notification will be send to the application.
+
NameDescription
on every scheduled speedtest runOn each successful scheduled speedtest a notification will be send to the application.
on threshold failures for scheduled speedtestsOn any absolute threshold failure for scheduled speedtest a notification will be send to the application.