# Environment Variables

### Application

<table><thead><tr><th width="218">Name</th><th width="100" 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_KEY</code></td><td>true</td><td>Key used to encrypt and decrypt data. See the <a href="installation">install</a> docs to generate a key.</td><td></td></tr><tr><td><code>APP_URL</code></td><td>true</td><td>URL used for links in emails and notifications.</td><td><code>https://speedtest.example.com</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.</td><td></td></tr><tr><td><code>ADMIN_NAME</code></td><td>false</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>false</td><td>Email of the initial admin user.<br>Note: Only effective during initial setup.</td><td><code>admin@example.com</code></td></tr><tr><td><code>ADMIN_PASSWORD</code></td><td>false</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>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_LOCALE</code></td><td>false</td><td>Change the default language.</td><td></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>ALLOWED_IPS</code></td><td>false</td><td>Block requests to the application unless from the allowed addresses.</td><td><code>127.0.0.1,127.0.0.2</code></td></tr></tbody></table>

***

### Display

<table><thead><tr><th width="218">Name</th><th width="100" data-type="checkbox">Required</th><th>Description</th><th>Example</th></tr></thead><tbody><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/4.x/panel-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>DEFAULT_CHART_RANGE</code></td><td>false</td><td>Set the default time range for the dashboards<br><br>- Default: <code>24h</code></td><td>Options: <code>24h</code>, <code>week</code> or <code>month</code></td></tr></tbody></table>

***

### Speed tests

<table><thead><tr><th width="221">Name</th><th width="100" 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://www.speedtest.net/api/js/servers">https://www.speedtest.net/api/js/servers</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 an Ookla Speedtest.</td><td></td></tr><tr><td><code>SPEEDTEST_INTERFACE</code></td><td>false</td><td>Set the network interface to use for the test. This need to be the network interface available inside the container</td><td><code>eth0</code></td></tr><tr><td><code>SPEEDTEST_EXTERNAL_IP_URL</code></td><td>false</td><td>URL of a service used to get the external WAN IP address. URL should contain the protocol i.e. <code>https://</code></td><td><code>https://icanhazip.com</code></td></tr><tr><td><code>SPEEDTEST_INTERNET_CHECK_HOSTNAME</code></td><td>false</td><td>Hostname used to ping for an active internet connection.</td><td></td></tr><tr><td><code>THRESHOLD_ENABLED</code></td><td>false</td><td>Enable the thresholds. Note: Only effective during initial setup.</td><td><code>true</code></td></tr><tr><td><code>THRESHOLD_DOWNLOAD</code></td><td>false</td><td><p>Set the Download Threshold</p><p>Note: Only effective during initial setup.</p></td><td><code>900</code></td></tr><tr><td><code>THRESHOLD_UPLOAD</code></td><td>false</td><td><p>Set the Upload Threshold</p><p>Note: Only effective during initial setup.</p></td><td><code>900</code></td></tr><tr><td><code>THRESHOLD_PING</code></td><td>false</td><td><p>Set the Ping Threshold</p><p>Note: Only effective during initial setup.</p></td><td><code>25</code></td></tr><tr><td><code>PRUNE_RESULTS_OLDER_THAN</code></td><td>false</td><td>Set the value to greater 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>

***

### API

<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>API_RATE_LIMIT</code></td><td>false</td><td>Number of requests per minute to the API.<br><br>- Default: <code>60</code></td><td><code>100</code></td></tr><tr><td><code>API_MAX_RESULTS</code></td><td>false</td><td>Sets the maximum number of results returned by API.<br><br>- Default <code>500</code><br></td><td><code>500</code></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.speedtest-tracker.dev/getting-started/environment-variables.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
