fix: make telemetry opt-in

This commit is contained in:
Linus Rath
2026-06-14 14:31:26 +02:00
parent 8df483d8c7
commit 3e12fca517
5 changed files with 75 additions and 21 deletions
+49
View File
@@ -63,6 +63,7 @@ CFG_OAUTH_ISSUER_URL=""
CFG_SESSION_SECRET=""
CFG_SETTINGS_SYNC_ENABLED="false"
CFG_SETTINGS_DATA_DIR="./data/settings"
CFG_TELEMETRY="false"
CFG_LOG_FORMAT="text"
CFG_LOG_LEVEL="info"
CFG_APP_SHORT_NAME=""
@@ -733,6 +734,30 @@ screen_security_config() {
echo -e " ${DIM}You can add a SESSION_SECRET to .env.local at any time.${RESET}"
fi
echo ""
hr
echo ""
echo -e " ${BOLD}Anonymous Usage Stats${RESET}"
echo ""
echo -e " Bulwark can send one anonymous heartbeat per day. It helps us see how"
echo -e " many instances run, on what platforms, and which features are enabled"
echo -e " so we can ${BOLD}make the product better${RESET}."
echo ""
echo -e " ${STAR} ${BOLD}No private data${RESET} - no email addresses, hostnames, or IPs"
echo -e " ${STAR} Just version, platform, and which features are turned on"
echo -e " ${STAR} ${BOLD}Off by default${RESET} - you can change it any time in the admin UI"
echo ""
prompt_yesno "Enable anonymous telemetry to help improve Bulwark?" "$CFG_TELEMETRY" "CFG_TELEMETRY"
if [[ "$CFG_TELEMETRY" == "true" ]]; then
echo ""
echo -e " ${OK} ${GREEN}Thanks! Telemetry will be enabled. We appreciate it.${RESET}"
else
echo ""
note "Telemetry stays off. No heartbeats will be sent."
fi
draw_footer
read -r
}
@@ -948,6 +973,11 @@ screen_summary() {
else
echo -e " Session Secret ........ ${DIM}Not set${RESET}"
fi
if [[ "$CFG_TELEMETRY" == "true" ]]; then
echo -e " Anonymous Telemetry ... ${GREEN}${BOLD}Enabled${RESET} ${DIM}(thank you!)${RESET}"
else
echo -e " Anonymous Telemetry ... ${DIM}Off${RESET}"
fi
echo ""
# Logging
@@ -1093,6 +1123,20 @@ ENVEOF
cat >> "$ENV_FILE" << ENVEOF
# -- Anonymous Telemetry -------------------------------------------------------
# Opt-in, anonymous heartbeats (no PII). Off by default; helps improve Bulwark.
# Toggleable later in the admin UI unless this is set. See
# https://bulwarkmail.org/docs/legal/privacy/telemetry
ENVEOF
if [[ "$CFG_TELEMETRY" == "true" ]]; then
echo "BULWARK_TELEMETRY=on" >> "$ENV_FILE"
else
echo "# BULWARK_TELEMETRY=on" >> "$ENV_FILE"
fi
cat >> "$ENV_FILE" << ENVEOF
# -- Logging -------------------------------------------------------------------
LOG_FORMAT=${CFG_LOG_FORMAT}
LOG_LEVEL=${CFG_LOG_LEVEL}
@@ -1340,6 +1384,11 @@ load_existing_config() {
get_env_val "SESSION_SECRET"; [[ -n "$val" ]] && CFG_SESSION_SECRET="$val"
get_env_val "SETTINGS_SYNC_ENABLED"; [[ -n "$val" ]] && CFG_SETTINGS_SYNC_ENABLED="$val"
get_env_val "SETTINGS_DATA_DIR"; [[ -n "$val" ]] && CFG_SETTINGS_DATA_DIR="$val"
get_env_val "BULWARK_TELEMETRY"
case "$(echo "$val" | tr '[:upper:]' '[:lower:]')" in
on|true|1|yes) CFG_TELEMETRY="true" ;;
off|false|0|no) CFG_TELEMETRY="false" ;;
esac
get_env_val "LOG_FORMAT"; [[ -n "$val" ]] && CFG_LOG_FORMAT="$val"
get_env_val "LOG_LEVEL"; [[ -n "$val" ]] && CFG_LOG_LEVEL="$val"
get_env_val "LOGIN_COMPANY_NAME"; [[ -n "$val" ]] && CFG_LOGIN_COMPANY_NAME="$val"