Skip to main content

Configuration

ProbeGlass reads its process configuration from four places. Later sources win:

  1. Built-in defaults
  2. A YAML file
  3. PROBEGLASS_* environment variables
  4. Command-line flags

The dashboard's own settings — theme, accent colour, density, layout, language, the accounts, the API key — are not in this list. They live in the database and are edited in the UI, because they are per-install or per-account state rather than deployment configuration.

Which file is read​

If you do not pass -config, ProbeGlass looks in two more places before giving up:

-config PATH
→ $PROBEGLASS_CONFIG
→ <data_dir>/probeglass.yaml (only if that file exists)
→ no file at all

The third entry is what makes the container image work without arguments: mount a probeglass.yaml next to the database and it is picked up. A missing file is not an error; a file that exists but does not parse is, and the process refuses to start rather than silently running on defaults.

Process settings​

KeyDefaultMeaning
listen:8080Address the dashboard listens on
data_dir/dataDirectory holding the database
db_path<data_dir>/probeglass.dbPath to the SQLite file, if you want it elsewhere
base_url—Public URL, used in links inside alerts
log_levelinfodebug, info, warn, or error
log_formattexttext or json
trust_proxyfalseHonour X-Forwarded-* headers from a reverse proxy

PROBEGLASS_ADMIN_PASSWORD is the one setting with no file equivalent: putting a password in a file that gets committed is how it ends up in a repository. It is read only when the database has no password yet.

listen: ":8080"
data_dir: /data
base_url: https://probeglass.lan
log_level: info
log_format: text
trust_proxy: false

retention:
raw: 7d
hourly: 90d
caution

Only set trust_proxy: true when ProbeGlass is actually behind a proxy that sets X-Forwarded-For. Otherwise any client can forge its own address, and the login rate limiter becomes trivial to sidestep.

base_url is used to build the link inside an alert message. Without it, alerts carry no link — which is survivable, but a link that goes straight to the dashboard turns "something is wrong" into a two-second check.

Retention​

KeyDefaultMeaning
retention.raw7dHow long individual probe results are kept
retention.hourly90dHow long hourly rollups are kept; daily rollups are kept forever

Durations accept Go syntax (30s, 5m, 2h) plus the day and week suffixes these settings are naturally written in (7d, 90d, 2w), or a bare number of seconds. 1.5d works too.

These are the two settings that decide how much disk the database uses. Roughly: a week of raw samples for forty sensors at one-minute intervals is about 400 000 rows and a few tens of MB, and the daily rollups that outlive them are a rounding error. See History and uptime.

Where to go next​