Configuration¶
This guide provides a comprehensive reference for all the environment variables used to configure the DashPad-Web container. A proper configuration is key to tailoring the dashboard to your specific needs, from defining API servers to enhancing security.
All configuration for the DashPad-Web container is managed exclusively through environment variables. This design choice provides maximum flexibility, allowing you to use the same Docker image across different environments without any changes. It simplifies deployments for local setups using docker run or Docker Compose, and is especially powerful for cloud-based platforms where environment variables are the standard for injecting configuration.
Important Concepts
- Configuration Method: All settings for the DashPad-Web container are managed exclusively through environment variables.
- Server Definitions: Define each
DashPad-API
server you wish to monitor using a sequentially numbered block of variables (e.g.,SERVER1_...
,SERVER2_...
, etc.). - Reference Example: Full
docker-compose.yml
examples for Linux and unRAID servers are provided at the end of this guide.
Configuration Summary¶
The following tables provide a quick reference for all available environment variables. While many variables are (hopefully!) somewhat self-explanatory, detailed explanations for each variable can be found in the Variable Details section below.
Core Configuration¶
Variable | Default | Example |
---|---|---|
AUTH_USERNAME |
user |
-e AUTH_USERNAME=admin |
AUTH_PASSWORD |
password |
-e AUTH_PASSWORD=mysecret |
USE_HTTPS |
true |
-e USE_HTTPS=false |
PORT |
5240 |
-e PORT=8080 |
Server Definitions¶
Variable | Required | Example |
---|---|---|
SERVERX_NAME |
Yes | -e SERVER1_NAME=unraid |
SERVERX_URL |
Yes | -e SERVER1_URL=https://192.168.1.100:5241 |
SERVERX_KEY |
Yes | -e SERVER1_KEY=a1b2... |
SERVERX_SSLFINGERPRINT |
No | -e SERVER1_SSLFINGERPRINT=AA:BB... |
Server Numbering
When configuring servers, it is important to replace the "X" in all SERVERX_
variables with a number. The numbering should be sequential, beginning with SERVER1_
, followed by SERVER2_
, and so on:
SERVER1_NAME
SERVER1_URL
SERVER1_KEY
SERVER2_NAME
SERVER2_URL
SERVER2_KEY
- ...
Security Configuration¶
Variable | Default | Example |
---|---|---|
SKIP_SSL_FINGERPRINT_VERIFICATION |
false |
-e SKIP_SSL_FINGERPRINT_VERIFICATION=true |
Development Configuration¶
Variable | Default | Example |
---|---|---|
DEVELOPMENT_MODE |
false |
-e DEVELOPMENT_MODE=true |
Variable Details¶
Core Variables¶
AUTH_USERNAME
: The username required to access the web UI via Basic Authentication. It is highly recommended to change this from the default value for any deployment.AUTH_PASSWORD
: The password required for web UI access. Always change this to a strong, unique password.USE_HTTPS
: Toggles HTTPS for the web UI. If set tofalse
, the container serves content over HTTP. This should only be done if you are running DashPad-Web behind another reverse proxy (like Traefik or Nginx Proxy Manager--or on a service like Google Cloud Run) that is already handling SSL termination.PORT
: The internal port that the NGINX server listens on inside the container. You map a host port to this value in your Docker command (e.g.,-p 8080:5240
would make the UI accessible on port 8080 on your host).
Server Definition Variables¶
These variables must be defined in sequential blocks for each DashPad-API
instance you wish to monitor.
SERVERX_NAME
: A unique, friendly name for the server (e.g.,main-server
,backup-nas
). This name is used for display purposes in the UI and should not contain spaces or special characters (dashes are okay).SERVERX_URL
: The full HTTPS URL of theDashPad-API
instance. The connection from DashPad-Web to the API is always encrypted, so this must start withhttps://
.SERVERX_KEY
: The 64-character hexadecimal API key generated by the correspondingDashPad-API
instance. On startup, the container performs a test connection to validate this key. If validation fails, the server will be disabled for monitoring.SERVERX_SSLFINGERPRINT
: The SHA-256 fingerprint of the API server's SSL certificate. This is the most secure way to ensure you are connecting to the correct server and is highly recommended for production environments.
Remember to replace the "X" in all SERVERX_
variables with a number as described previously.
Obtaining An SSL Fingerprint
You can get the SHA-256 fingerprint directly from your DashPad-API
container's logs on its first startup. Alternatively, you can use this openssl
command from a machine that can reach the API server:
openssl s_client -connect <API_HOST>:<API_PORT> -showcerts </dev/null 2>/dev/null | openssl x509 -fingerprint -sha256 -noout -in /dev/stdin
<API_HOST>
and <API_PORT>
with your server's information!
Security Variable¶
SKIP_SSL_FINGERPRINT_VERIFICATION
: If set totrue
, the container will not validate the SSL certificate fingerprints of the backend API servers. This is useful for quick tests or in environments with frequently changing certificates, but it is not recommended for production environments.
Production Security
For any production environment, you should always set SKIP_SSL_FINGERPRINT_VERIFICATION
to false
and provide the correct SSLFINGERPRINT
for each server. The fingerprint is a unique identifier for your API server's certificate. Verifying it ensures that you are establishing a secure connection to a trusted endpoint and helps protects your API keys from being exposed in a man-in-the-middle (MITM) attack.
Development Variable¶
DEVELOPMENT_MODE
: If set totrue
, this disables authentication for source maps and other asset files, making it easier to use browser-based debugging tools to inspect the original Svelte code. This parameter can significantly impact overall performance and should never be enabled in a production environment.
Full Docker Compose Example¶
Here are complete docker-compose.yml
examples for a production-ready, two-server setup.
version: '3.8'
services:
dashpad-web:
image: dashpad-web:latest
container_name: dashpad-web
ports:
# Map the default port 5240 on the host to 5240 in the container
- "5240:5240"
volumes:
# Use a named volume for persistent SSL certificate caching.
# This improves startup performance and resilience.
- dashpad-web:/data
environment:
# --- Authentication: Change these to secure credentials ---
- AUTH_USERNAME=admin
- AUTH_PASSWORD=a-very-secure-password
# --- Security: Set to false for production ---
- SKIP_SSL_FINGERPRINT_VERIFICATION=false
# --- Server 1: Primary NAS ---
- SERVER1_NAME=primary-nas
- SERVER1_URL=https://192.168.1.101:5241
- SERVER1_KEY=a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
- SERVER1_SSLFINGERPRINT=AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00:AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00
# --- Server 2: Media Server ---
- SERVER2_NAME=media-server
- SERVER2_URL=https://192.168.1.102:5241
- SERVER2_KEY=f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5
- SERVER2_SSLFINGERPRINT=00:99:88:77:66:55:44:33:22:11:FF:EE:DD:CC:BB:AA:00:99:88:77:66:55:44:33:22:11:FF:EE:DD:CC:BB:AA
restart: unless-stopped
# Define the named volume for data persistence. Docker will manage this volume.
volumes:
dashpad-web: {}
version: '3.8'
services:
dashpad-web:
image: dashpad-web:latest
container_name: dashpad-web
ports:
# Map the default port 5240 on the host to 5240 in the container
- "5240:5240"
volumes:
# For unRAID, it is recommended to use a host path mount
# to the appdata share for easier management.
- /mnt/user/appdata/dashpad-web:/data
environment:
# --- Authentication: Change these to secure credentials ---
- AUTH_USERNAME=admin
- AUTH_PASSWORD=a-very-secure-password
# --- Security: Set to false for production ---
- SKIP_SSL_FINGERPRINT_VERIFICATION=false
# --- Server 1: unRAID Server ---
- SERVER1_NAME=unraid-server
- SERVER1_URL=https://192.168.1.101:5241
- SERVER1_KEY=a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
- SERVER1_SSLFINGERPRINT=AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00:AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00
# --- Server 2: Media Server ---
- SERVER2_NAME=media-server
- SERVER2_URL=https://192.168.1.102:5241
- SERVER2_KEY=f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3b2a1f6e5
- SERVER2_SSLFINGERPRINT=00:99:88:77:66:55:44:33:22:11:FF:EE:DD:CC:BB:AA:00:99:88:77:66:55:44:33:22:11:FF:EE:DD:CC:BB:AA
restart: unless-stopped
Why is a Volume Recommended?
While all primary configuration is indeed handled by environment variables, mounting a volume to the /data
directory inside the container is recommended for two key reasons:
- Performance: The container caches the SSL certificates of your backend API servers in the
/data
directory. By using a persistent volume, the container can reuse these certificates on restart, which significantly speeds up the startup process, especially in multi-server setups. - Resilience: If an API server is temporarily offline when you restart the DashPad-Web container, having a cached certificate allows the container to start up successfully and continue monitoring your other online servers. Without a volume, the startup would fail for that server until it comes back online.
You can run the container without a volume (it will operate in "ephemeral mode"), but you will see a warning in the logs, and performance will be reduced on every restart.