Files
MyIP/.env.example
T
jason5ng32andClaude Fable 5 d711b7be82 Feat(pulse): Two-tier gating — outage feed no longer needs the pulse beacon backend
The Earth Online entry and panel now show on any deployment whose backend
has CLOUDFLARE_API_KEY (runtime cloudFlare configs flag); the social
sections (composer / feed / visitor map / beacon) stay gated on the pulse
beacon backend. VITE_PULSE_URL is renamed to VITE_PULSE_BEACON_URL, no
legacy fallback.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 09:04:34 +08:00

70 lines
2.7 KiB
Bash

# Server
BACKEND_PORT="11966"
FRONTEND_PORT="18966"
ALLOWED_DOMAINS=""
# THIRD-PARTY APIs
GOOGLE_MAP_API_KEY=""
IPINFO_API_KEY=""
CLOUDFLARE_API_KEY=""
IPAPIIS_API_KEY=""
IP2LOCATION_API_KEY=""
MAC_LOOKUP_API_KEY=""
RIPESTAT_SOURCE_APP=""
# Shareable diagnostic reports — stored in Cloudflare Workers KV. Both values
# below must be set (together with CLOUDFLARE_API_KEY, which additionally
# needs the "Workers KV Storage: Edit" permission) or the share-link feature
# stays hidden. CLOUDFLARE_KV_NAMESPACE_ID is the namespace's hex ID from the
# dashboard, not its name.
CLOUDFLARE_ACCOUNT_ID=""
CLOUDFLARE_KV_NAMESPACE_ID=""
# MaxMind
MAXMIND_ACCOUNT_ID=""
MAXMIND_LICENSE_KEY=""
MAXMIND_AUTO_UPDATE="false"
# CAIDA
CAIDA_AUTO_UPDATE="false"
# SITE
VITE_SITE_URL="https://ipcheck.ing"
# DOCS SITE — origin of the GitBook docs site powering the in-app
# assistant and the Help Center link. Empty disables both.
VITE_DOCS_URL=""
# EARTH ONLINE — full URL of the pulse backend (trailing slashes stripped).
# Empty hides the social parts (status feed / visitor map / visit beacon) at
# build time, like Sentry. The outage feed is independent — it only needs
# CLOUDFLARE_API_KEY above.
VITE_PULSE_BEACON_URL=""
# CURL API
VITE_CURL_IPV4_DOMAIN=""
VITE_CURL_IPV6_DOMAIN=""
VITE_CURL_IPV64_DOMAIN=""
# Google Analytics
VITE_GOOGLE_ANALYTICS_ID=""
# Security related
# SECURITY_BLACKLIST_LOG_FILE_PATH: opt-in on-disk ledger of rate-limited IPs
# (e.g. "logs/blacklist-ip.log"). Empty = no file; the event is always logged
# via the shared logger either way (and mirrored to Sentry when configured).
SECURITY_BLACKLIST_LOG_FILE_PATH=""
SECURITY_RATE_LIMIT=""
SECURITY_DELAY_AFTER=""
# Sentry — all optional; leave empty and no Sentry code ships or runs at all.
# VITE_SENTRY_DSN_FRONTEND: frontend DSN (build-time; baked into the bundle;
# also read by the backend at runtime as the allowlist for /api/monitoring,
# the first-party tunnel that relays envelopes past ad blockers)
# SENTRY_DSN_BACKEND: backend DSN (runtime; read by sentry-instrument.js)
# SENTRY_ENVIRONMENT: backend environment tag — unset means "production",
# set "development" on dev machines (frontend tags itself automatically)
# SENTRY_ORG / SENTRY_PROJECT_FRONTEND / SENTRY_AUTH_TOKEN: source-map upload
# at build time only — the token is a secret, never exposed to the browser
VITE_SENTRY_DSN_FRONTEND=""
SENTRY_DSN_BACKEND=""
SENTRY_ENVIRONMENT=""
SENTRY_ORG=""
SENTRY_PROJECT_FRONTEND=""
SENTRY_AUTH_TOKEN=""
# Logging — LOG_LEVEL: debug/info/warn/error (default info)
# LOG_FORMAT: "json" for log shippers, anything else = pretty
# LOG_HTTP: "true" to enable per-request /api logging (off by default)
LOG_LEVEL=""
LOG_FORMAT=""
LOG_HTTP=""