Skip to content

Commit 51e2194

Browse files
alexjustesengitbook-bot
authored andcommitted
GITBOOK-111: No subject
1 parent ab259d4 commit 51e2194

File tree

11 files changed

+311
-213
lines changed

11 files changed

+311
-213
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ description: >-
88
# Introduction
99

1010
{% hint style="info" %}
11-
Docs are up to date through version: `0.26.x`
11+
Docs are up to date through version: `v1.0.1`
1212
{% endhint %}
1313

1414
<figure><img src=".gitbook/assets/dashboard.png" alt=""><figcaption></figcaption></figure>

SUMMARY.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
## 🚀 Getting Started
88

99
* [Installation](getting-started/installation/README.md)
10-
* [Using Docker or Docker Compose](getting-started/installation/using-docker.md)
10+
* [Using Docker Compose](getting-started/installation/using-docker-compose.md)
11+
* [Using Docker](getting-started/installation/using-docker.md)
1112
* [Using Kubernetes](getting-started/installation/using-kubernetes.md)
1213
* [Using QNAP](getting-started/installation/using-qnap.md)
1314
* [Using Synology](getting-started/installation/using-synology.md)
@@ -24,6 +25,7 @@
2425

2526
* [Authentication](security/authentication.md)
2627
* [Authorization](security/authorization.md)
28+
* [Encryption](security/encryption.md)
2729

2830
## ⚙️ Settings
2931

getting-started/environment-variables.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ description: >-
88

99
### Application
1010

11-
<table><thead><tr><th width="218">Name</th><th width="103" data-type="checkbox">Required</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><code>PUID</code></td><td>true</td><td>Used to set the user the container should run as.</td><td><code>1000</code></td></tr><tr><td><code>PGID</code></td><td>true</td><td>Used to set the group the container should run as.</td><td><code>1000</code></td></tr><tr><td><code>APP_NAME</code></td><td>false</td><td>Used to define the application's name in the dashboard and in notifications.<br></td><td></td></tr><tr><td><code>APP_KEY</code></td><td>true</td><td><p>Key used to encrypt and decrypt data.</p><p>You can generate a key at <a href="https://speedtest-tracker.dev">https://speedtest-tracker.dev</a>.</p></td><td><code>base64:ZoOYTjS+LBwFtud8SArwhiw8V4Qi9J+MPiT7z8XjfMo=</code><br>(DONT USE THIS EXAMPLE)</td></tr><tr><td><code>ADMIN_NAME</code></td><td>true</td><td>Name of the initial admin user.<br><b>Note:</b> Only effective during initial setup.</td><td><code>Admin</code></td></tr>
12-
<tr><td><code>ADMIN_EMAIL</code></td><td>true</td><td>Email of the initial admin user.<br><b>Note:</b> Only effective during initial setup.</td><td><code>[email protected]</code></td></tr>
13-
<tr><td><code>ADMIN_PASSWORD</code></td><td>true</td><td>Password of the initial admin user.<br><b>Note:</b> Only effective during initial setup.</td><td><code>password</code></td></tr><tr><td><code>APP_URL</code></td><td>false</td><td>URL used for links in emails and notifications.</td><td><code>https://speedtest.example.com</code></td></tr><tr><td><code>ASSET_URL</code></td><td>false</td><td>URL used for assets, needed when using a reverse proxy.</td><td><code>https://speedtest.example.com</code></td></tr><tr><td><code>APP_TIMEZONE</code></td><td>false</td><td>Application timezone should be set if your database does not use UTC as its default timezone.</td><td><code>Europe/London</code></td></tr><tr><td><code>CHART_BEGIN_AT_ZERO</code></td><td>false</td><td>Begin the dashboard axis charts at zero.<br><br>- Default: <code>true</code></td><td><code>true</code> or <code>false</code></td></tr><tr><td><code>CHART_DATETIME_FORMAT</code></td><td>false</td><td>Set the formatting of timestamps in charts.<br><br>Formatting: <a href="https://www.php.net/manual/en/datetime.format.php">https://www.php.net/manual/en/datetime.format.php</a></td><td><code>j/m G:i</code><br>(18/10 20:06)</td></tr><tr><td><code>DATETIME_FORMAT</code></td><td>false</td><td>Set the formatting of timestamps in tables and notifications.<br><br>Formatting: <a href="https://www.php.net/manual/en/datetime.format.php">https://www.php.net/manual/en/datetime.format.php</a></td><td><code>j M Y, G:i:s</code><br>(18 Oct 2024, 20:06:01)</td></tr><tr><td><code>DISPLAY_TIMEZONE</code></td><td>false</td><td>Display timestamps in your local time.</td><td><code>Europe/London</code></td></tr><tr><td><code>CONTENT_WIDTH</code></td><td>false</td><td>Width of the content section of each page. Can be set to any value found in the Filament <a href="https://filamentphp.com/docs/3.x/panels/configuration#customizing-the-maximum-content-width">docs</a>.<br><br>- Default:<code>7xl</code></td><td></td></tr><tr><td><code>PUBLIC_DASHBOARD</code></td><td>false</td><td>Enables the public dashboard for guest (unauthenticated) users.<br><br>- Default:<code>false</code></td><td></td></tr><tr><td><code>DASHBOARD_POLLING</code></td><td>false</td><td>Frequency charts and stats refresh on the dashboard. Can be represented using a string in seconds or<code>false</code>to disable.<br><br>- Default:<code>60s</code></td><td></td></tr><tr><td><code>NOTIFICATION_POLLING</code></td><td>false</td><td>Frequency database notifications are polled. Can be represented using a string in seconds or<code>false</code>to disable.<br><br>- Default:<code>60s</code></td><td></td></tr><tr><td><code>RESULTS_POLLING</code></td><td>false</td><td>Frequency data refreshes in the results table. Can be represented using a string in seconds or<code>false</code>to disable.<br><br>- Default:<code>false</code></td><td></td></tr></tbody></table>
11+
<table><thead><tr><th width="218">Name</th><th width="103" data-type="checkbox">Required</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><code>PUID</code></td><td>true</td><td>Used to set the user the container should run as.</td><td><code>1000</code></td></tr><tr><td><code>PGID</code></td><td>true</td><td>Used to set the group the container should run as.</td><td><code>1000</code></td></tr><tr><td><code>APP_NAME</code></td><td>false</td><td>Used to define the application's name in the dashboard and in notifications.<br></td><td></td></tr><tr><td><code>APP_KEY</code></td><td>true</td><td><p>Key used to encrypt and decrypt data.</p><p>You can generate a key at <a href="https://speedtest-tracker.dev">https://speedtest-tracker.dev</a>.</p></td><td></td></tr><tr><td><code>ADMIN_NAME</code></td><td>true</td><td>Name of the initial admin user.<br>Note: Only effective during initial setup.</td><td><code>Admin</code></td></tr><tr><td><code>ADMIN_EMAIL</code></td><td>true</td><td>Email of the initial admin user.<br>Note: Only effective during initial setup.</td><td><code>[email protected]</code></td></tr><tr><td><code>ADMIN_PASSWORD</code></td><td>true</td><td>Password of the initial admin user.<br>Note: Only effective during initial setup.</td><td><code>password</code></td></tr><tr><td><code>APP_URL</code></td><td>false</td><td>URL used for links in emails and notifications.</td><td><code>https://speedtest.example.com</code></td></tr><tr><td><code>ASSET_URL</code></td><td>false</td><td>URL used for assets, needed when using a reverse proxy.</td><td><code>https://speedtest.example.com</code></td></tr><tr><td><code>APP_TIMEZONE</code></td><td>false</td><td>Application timezone should be set if your database does not use UTC as its default timezone.</td><td><code>Europe/London</code></td></tr><tr><td><code>CHART_BEGIN_AT_ZERO</code></td><td>false</td><td>Begin the dashboard axis charts at zero.<br><br>- Default: <code>true</code></td><td><code>true</code> or <code>false</code></td></tr><tr><td><code>CHART_DATETIME_FORMAT</code></td><td>false</td><td>Set the formatting of timestamps in charts.<br><br>Formatting: <a href="https://www.php.net/manual/en/datetime.format.php">https://www.php.net/manual/en/datetime.format.php</a></td><td><code>j/m G:i</code><br>(18/10 20:06)</td></tr><tr><td><code>DATETIME_FORMAT</code></td><td>false</td><td>Set the formatting of timestamps in tables and notifications.<br><br>Formatting: <a href="https://www.php.net/manual/en/datetime.format.php">https://www.php.net/manual/en/datetime.format.php</a></td><td><code>j M Y, G:i:s</code><br>(18 Oct 2024, 20:06:01)</td></tr><tr><td><code>DISPLAY_TIMEZONE</code></td><td>false</td><td>Display timestamps in your local time.</td><td><code>America/New_York</code></td></tr><tr><td><code>CONTENT_WIDTH</code></td><td>false</td><td>Width of the content section of each page. Can be set to any value found in the Filament <a href="https://filamentphp.com/docs/3.x/panels/configuration#customizing-the-maximum-content-width">docs</a>.<br><br>- Default:<code>7xl</code></td><td></td></tr><tr><td><code>PUBLIC_DASHBOARD</code></td><td>false</td><td>Enables the public dashboard for guest (unauthenticated) users.<br><br>- Default:<code>false</code></td><td></td></tr><tr><td><code>DASHBOARD_POLLING</code></td><td>false</td><td>Frequency charts and stats refresh on the dashboard. Can be represented using a string in seconds or<code>false</code>to disable.<br><br>- Default:<code>60s</code></td><td></td></tr><tr><td><code>NOTIFICATION_POLLING</code></td><td>false</td><td>Frequency database notifications are polled. Can be represented using a string in seconds or<code>false</code>to disable.<br><br>- Default:<code>60s</code></td><td></td></tr><tr><td><code>RESULTS_POLLING</code></td><td>false</td><td>Frequency data refreshes in the results table. Can be represented using a string in seconds or<code>false</code>to disable.<br><br>- Default:<code>false</code></td><td></td></tr></tbody></table>
1412

1513
### Speedtest
1614

17-
<table><thead><tr><th width="221">Name</th><th data-type="checkbox">Required</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><code>SPEEDTEST_SKIP_IPS</code></td><td>false</td><td>A comma separated list of public IP addresses where tests will be skipped when present.</td><td><code>127.0.0.1</code> or <code>127.0.0.0/16</code></td></tr><tr><td><code>SPEEDTEST_SCHEDULE</code></td><td>false</td><td>Cron expression used to run speedtests on a scheduled basis. https://crontab.guru/ is a helpful tool.</td><td><code>6 */2 * * *</code><br>(<em>At minute 6 past every 2nd hour)</em></td></tr><tr><td><code>SPEEDTEST_SERVERS</code></td><td>false</td><td><p>Comma separated list of server IDs to randomly use for speedtest.</p><p></p><p>To find servers near you visit: <a href="https://c.speedtest.net/speedtest-servers-static.php">https://c.speedtest.net/speedtest-servers-static.php</a></p></td><td><code>52365</code> or <code>36998,52365</code></td></tr><tr><td><code>SPEEDTEST_BLOCKED_SERVERS</code></td><td>false</td><td>Comma separated list of server IDs that should not be used when running speedtests.</td><td></td></tr><tr><td><code>PRUNE_RESULTS_OLDER_THAN</code></td><td>false</td><td>Set the value to greated than zero to prune stored results. This value should be represented in days, e.g. <code>7</code> will purge all results over 7 days old.</td><td><code>7</code></td></tr></tbody></table>
15+
<table><thead><tr><th width="221">Name</th><th data-type="checkbox">Required</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td><code>SPEEDTEST_SKIP_IPS</code></td><td>false</td><td>A comma separated list of public IP addresses where tests will be skipped when present.</td><td><code>127.0.0.1</code> or <code>127.0.0.0/16</code></td></tr><tr><td><code>SPEEDTEST_SCHEDULE</code></td><td>false</td><td>Cron expression used to run speedtests on a scheduled basis. https://crontab.guru/ is a helpful tool.</td><td><code>6 */2 * * *</code><br>(<em>At minute 6 past every 2nd hour)</em></td></tr><tr><td><code>SPEEDTEST_SERVERS</code></td><td>false</td><td><p>Comma separated list of server IDs to randomly use for speedtest.</p><p>To find servers near you visit: <a href="https://c.speedtest.net/speedtest-servers-static.php">https://c.speedtest.net/speedtest-servers-static.php</a></p></td><td><code>52365</code> or <code>36998,52365</code></td></tr><tr><td><code>SPEEDTEST_BLOCKED_SERVERS</code></td><td>false</td><td>Comma separated list of server IDs that should not be used when running speedtests.</td><td></td></tr><tr><td><code>PRUNE_RESULTS_OLDER_THAN</code></td><td>false</td><td>Set the value to greated than zero to prune stored results. This value should be represented in days, e.g. <code>7</code> will purge all results over 7 days old.</td><td><code>7</code></td></tr></tbody></table>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,17 @@
11
# Installation
22

3+
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).
4+
5+
Use the install guides listed below to install Speedtest Tracker:
6+
7+
### Docker
8+
9+
* [Docker Compose](using-docker-compose.md)
10+
* [Docker Run](using-docker.md)
11+
* [Kubernetes](using-kubernetes.md)
12+
13+
### NAS Devices
14+
15+
* [QNAP](using-qnap.md)
16+
* [Synology](using-synology.md)
17+
* [Unraid](using-unraid.md)
Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
---
2+
description: >-
3+
These instructions will run you through setting up Speedtest Tracker on a
4+
Docker server using Docker Compose.
5+
---
6+
7+
# Using Docker Compose
8+
9+
Setting up your environment with Docker Compose is the recommended way as it'll setup the application and a database for you. These steps will run you through setting up the application using Docker and Docker Compose.
10+
11+
{% hint style="info" %}
12+
Docker run commands can be found on the [Using Docker](using-docker.md) page and assume you already have a database installed and configured.
13+
{% endhint %}
14+
15+
### Install with Docker Compose
16+
17+
{% stepper %}
18+
{% step %}
19+
#### Generate an Application Key
20+
21+
You can get a generated key on [https://speedtest-tracker.dev/](https://speedtest-tracker.dev/) or run the command below. The key is required for [encryption](../../security/encryption.md).
22+
23+
Copy this key including the `base64:` prefix and paste it as your `APP_KEY` value.
24+
25+
```bash
26+
echo -n 'base64:'; openssl rand -base64 32;
27+
```
28+
{% endstep %}
29+
30+
{% step %}
31+
#### **Setting Up Docker**
32+
33+
SQLite is fine for most installs but you can also use more traditional relational databases like MariaDB, MySQL and Postgres.
34+
35+
{% tabs %}
36+
{% tab title="SQLite" %}
37+
```yaml
38+
services:
39+
speedtest-tracker:
40+
image: lscr.io/linuxserver/speedtest-tracker:latest
41+
restart: unless-stopped
42+
container_name: speedtest-tracker
43+
ports:
44+
- 8080:80
45+
- 8443:443
46+
environment:
47+
- PUID=1000
48+
- PGID=1000
49+
- APP_KEY=
50+
- DB_CONNECTION=sqlite
51+
volumes:
52+
- /path/to/data:/config
53+
- /path/to-custom-ssl-keys:/config/keys
54+
```
55+
{% endtab %}
56+
57+
{% tab title="MariaDB" %}
58+
<pre class="language-yaml"><code class="lang-yaml">services:
59+
<strong> speedtest-tracker:
60+
</strong> image: lscr.io/linuxserver/speedtest-tracker:latest
61+
restart: unless-stopped
62+
container_name: speedtest-tracker
63+
ports:
64+
- 8080:80
65+
- 8443:443
66+
environment:
67+
- PUID=1000
68+
- PGID=1000
69+
- APP_KEY=
70+
- DB_CONNECTION=mariadb
71+
- DB_HOST=db
72+
- DB_PORT=3306
73+
- DB_DATABASE=speedtest_tracker
74+
- DB_USERNAME=speedtest_tracker
75+
- DB_PASSWORD=password
76+
volumes:
77+
- /path/to/data:/config
78+
- /path/to-custom-ssl-keys:/config/keys
79+
depends_on:
80+
- db
81+
db:
82+
image: mariadb:11
83+
restart: always
84+
environment:
85+
- MYSQL_DATABASE=speedtest_tracker
86+
- MYSQL_USER=speedtest_tracker
87+
- MYSQL_PASSWORD=password
88+
- MYSQL_RANDOM_ROOT_PASSWORD=true
89+
volumes:
90+
- speedtest-db:/var/lib/mysql
91+
healthcheck:
92+
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
93+
interval: 5s
94+
retries: 3
95+
timeout: 5s
96+
volumes:
97+
speedtest-db:
98+
</code></pre>
99+
{% endtab %}
100+
101+
{% tab title="MySQL" %}
102+
```yaml
103+
services:
104+
speedtest-tracker:
105+
image: lscr.io/linuxserver/speedtest-tracker:latest
106+
restart: unless-stopped
107+
container_name: speedtest-tracker
108+
ports:
109+
- 8080:80
110+
- 8443:443
111+
environment:
112+
- PUID=1000
113+
- PGID=1000
114+
- APP_KEY=
115+
- DB_CONNECTION=mysql
116+
- DB_HOST=db
117+
- DB_PORT=3306
118+
- DB_DATABASE=speedtest_tracker
119+
- DB_USERNAME=speedtest_tracker
120+
- DB_PASSWORD=password
121+
volumes:
122+
- /path/to/data:/config
123+
- /path/to-custom-ssl-keys:/config/keys
124+
depends_on:
125+
- db
126+
db:
127+
image: mysql:8
128+
restart: always
129+
environment:
130+
- MYSQL_DATABASE=speedtest_tracker
131+
- MYSQL_USER=speedtest_tracker
132+
- MYSQL_PASSWORD=password
133+
- MYSQL_RANDOM_ROOT_PASSWORD=true
134+
volumes:
135+
- speedtest-db:/var/lib/mysql
136+
healthcheck:
137+
test: ["CMD", "mysqladmin", "ping", "-p${MYSQL_PASSWORD}"]
138+
interval: 5s
139+
retries: 5
140+
timeout: 5s
141+
volumes:
142+
speedtest-db:
143+
```
144+
{% endtab %}
145+
146+
{% tab title="Postgres" %}
147+
```yaml
148+
services:
149+
speedtest-tracker:
150+
image: lscr.io/linuxserver/speedtest-tracker:latest
151+
restart: unless-stopped
152+
container_name: speedtest-tracker
153+
ports:
154+
- 8080:80
155+
- 8443:443
156+
environment:
157+
- PUID=1000
158+
- PGID=1000
159+
- APP_KEY=
160+
- DB_CONNECTION=pgsql
161+
- DB_HOST=db
162+
- DB_PORT=5432
163+
- DB_DATABASE=speedtest_tracker
164+
- DB_USERNAME=speedtest_tracker
165+
- DB_PASSWORD=password
166+
volumes:
167+
- /path/to/data:/config
168+
- /path/to-custom-ssl-keys:/config/keys
169+
depends_on:
170+
- db
171+
db:
172+
image: postgres:17
173+
restart: always
174+
environment:
175+
- POSTGRES_DB=speedtest_tracker
176+
- POSTGRES_USER=speedtest_tracker
177+
- POSTGRES_PASSWORD=password
178+
volumes:
179+
- speedtest-db:/var/lib/postgresql/data
180+
healthcheck:
181+
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
182+
interval: 5s
183+
retries: 5
184+
timeout: 5s
185+
volumes:
186+
speedtest-db:
187+
```
188+
{% endtab %}
189+
{% endtabs %}
190+
191+
{% hint style="info" %}
192+
If you would like to provide your own SSL keys, they must be named `cert.crt` (full chain) and `cert.key` (private key), and mounted in the container folder `/config/keys`.
193+
{% endhint %}
194+
{% endstep %}
195+
196+
{% step %}
197+
#### **Environment Variables**
198+
199+
In order for the application to run smoothly, some environment variables need to be set. Check out the [Environment Variables](../environment-variables.md) section. Make sure all r**equired** variables are configured.
200+
{% endstep %}
201+
202+
{% step %}
203+
#### **Configuration Variables (Optional)**
204+
205+
You can set configuration variables to have automatic speedtest on an schedule. Check out the [Environment Variables](../environment-variables.md#speedtest) section on how to set the variables. Also see the [FAQ](../../help/faqs.md#speedtest) for tips effectively scheduling tests.
206+
207+
{% hint style="info" %}
208+
Complete overview of the Environment Variables for custom configuration can be found [here](../environment-variables.md).
209+
{% endhint %}
210+
{% endstep %}
211+
212+
{% step %}
213+
#### **Start the Container**
214+
215+
You can now start the container accordingly the platform you are on.
216+
{% endstep %}
217+
218+
{% step %}
219+
#### **First Login**
220+
221+
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.
222+
{% endstep %}
223+
{% endstepper %}

0 commit comments

Comments
 (0)