# 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>
