UI for where settings come from

It would be nice to see where every non-default setting was being set and what it was being set to. For example a page in the web ui that lists any setting that is being configured with an indicator for "environment variable" or "command line parameter" or "pihole-ftl.conf" etc

In the absence of such a UI feature, you can restart pihole-FTL and then look in file /var/log/pihole-FTL.log and see every parameter listed. The lines will look like this (your parameters may vary):

[2021-12-06 22:01:37.992 7871M] Starting config file parsing (/etc/pihole/pihole-FTL.conf)
[2021-12-06 22:01:37.992 7871M]    SOCKET_LISTENING: only local
[2021-12-06 22:01:37.992 7871M]    AAAA_QUERY_ANALYSIS: Hide AAAA queries
[2021-12-06 22:01:37.992 7871M]    MAXDBDAYS: max age for stored queries is 90 days
[2021-12-06 22:01:37.992 7871M]    RESOLVE_IPV6: Don't resolve IPv6 addresses
[2021-12-06 22:01:37.992 7871M]    RESOLVE_IPV4: Resolve IPv4 addresses
[2021-12-06 22:01:37.993 7871M]    DBINTERVAL: saving to DB file every 1800 seconds
[2021-12-06 22:01:37.993 7871M]    DBFILE: Using /etc/pihole/pihole-FTL.db
[2021-12-06 22:01:37.993 7871M]    MAXLOGAGE: Importing up to 24.0 hours of log data
[2021-12-06 22:01:37.993 7871M]    PRIVACYLEVEL: Set to 0
[2021-12-06 22:01:37.993 7871M]    IGNORE_LOCALHOST: Show queries from localhost
[2021-12-06 22:01:37.993 7871M]    BLOCKINGMODE: Null IPs for blocked domains
[2021-12-06 22:01:37.993 7871M]    ANALYZE_ONLY_A_AND_AAAA: Disabled. Analyzing all queries
[2021-12-06 22:01:37.993 7871M]    DBIMPORT: Importing history from database
[2021-12-06 22:01:37.993 7871M]    PIDFILE: Using /run/pihole-FTL.pid
[2021-12-06 22:01:37.994 7871M]    PORTFILE: Using /run/pihole-FTL.port
[2021-12-06 22:01:37.994 7871M]    SOCKETFILE: Using /run/pihole/FTL.sock
[2021-12-06 22:01:37.994 7871M]    SETUPVARSFILE: Using /etc/pihole/setupVars.conf
[2021-12-06 22:01:37.994 7871M]    MACVENDORDB: Using /etc/pihole/macvendor.db
[2021-12-06 22:01:37.994 7871M]    GRAVITYDB: Using /etc/pihole/gravity.db
[2021-12-06 22:01:37.994 7871M]    PARSE_ARP_CACHE: Active
[2021-12-06 22:01:37.994 7871M]    CNAME_DEEP_INSPECT: Active
[2021-12-06 22:01:37.994 7871M]    DELAY_STARTUP: No delay requested.
[2021-12-06 22:01:37.994 7871M]    BLOCK_ESNI: Enabled, blocking _esni.{blocked domain}
[2021-12-06 22:01:37.994 7871M]    NICE: Set process niceness to -10 (default)
[2021-12-06 22:01:37.995 7871M]    MAXNETAGE: Removing IP addresses and host names from network table after 90 days
[2021-12-06 22:01:37.995 7871M]    NAMES_FROM_NETDB: Enabled, trying to get names from network database
[2021-12-06 22:01:37.995 7871M]    EDNS0_ECS: Overwrite client from ECS information
[2021-12-06 22:01:37.995 7871M]    REFRESH_HOSTNAMES: Periodically refreshing IPv4 names
[2021-12-06 22:01:37.995 7871M]    RATE_LIMIT: Rate-limiting client making more than 1000 queries in 60 seconds
[2021-12-06 22:01:37.995 7871M]    REPLY_ADDR4: Automatic interface-dependent detection of address
[2021-12-06 22:01:37.995 7871M]    REPLY_ADDR6: Automatic interface-dependent detection of address
[2021-12-06 22:01:37.995 7871M]    SHOW_DNSSEC: Enabled, showing automatically generated DNSSEC queries
[2021-12-06 22:01:37.995 7871M]    MOZILLA_CANARY: Enabled
[2021-12-06 22:01:37.995 7871M]    PIHOLE_PTR: internal PTR generation enabled (pi.hole)
[2021-12-06 22:01:37.995 7871M]    ADDR2LINE: Enabled
[2021-12-06 22:01:37.996 7871M]    REPLY_WHEN_BUSY: Permit queries when the database is busy
[2021-12-06 22:01:37.996 7871M]    BLOCK_TTL: 2 seconds
[2021-12-06 22:01:37.996 7871M]    BLOCK_ICLOUD_PR: Disabled

A debug log also shows you the non-default configuration parameters.

No need to restart when the last log containing this is still available. Note that most config changes are only effective after restarting so there may be a discrepancy between what you find in pihole-FTL.conf and what is really used without a restart.

Environment variables are not read by FTL intentionally, the docker scripts transform them into a pihole-FTL.conf file before starting the daemon to ensure there is a single-source-of-truth.

The logs are rotated nightly at midnight, so you may have to search through previous days logs and if it's been more than four days since FTL restart there will be nothing in them.