refactor: trim env.example to genuinely customer-facing config only

Full review of what belongs in the public installer vs. what customers
should never need to see, per an explicit audit request:

- Removed DB_USER/DB_NAME as customer-configurable env vars entirely --
  nothing outside this compose stack ever connects to Postgres directly,
  so there was no real reason a customer would ever change these.
  Hardcoded to postgres/argus in docker-compose.yml and the two scripts
  that referenced them (backup.sh, restore.sh); DB_PASSWORD remains the
  one real secret, still auto-generated by install.sh.
- Removed ANIS_ADMIN_KEY entirely -- confirmed dead in a prior session's
  audit: it's ANIS's own admin-dashboard credential, unrelated to the
  ARGUS<->ANIS intelligence protocol, which ARGUS never sends. Carried
  over into this file by copy-paste from ANIS's own env template, not
  because ARGUS ever uses it.
- Reordered/re-commented env.example around what a customer actually
  might touch (timezone, ANIS bootstrap trio, network ports for
  conflict resolution, DOCKER_API_VERSION for NAS platforms) versus
  what's fully automated (DB_PASSWORD) -- with an explicit note that
  ongoing product configuration (WAF, DNS, users, policies) happens in
  the dashboard, not this file.
- ANIS_ENABLED/ANIS_URL defaults aligned with the Community Edition
  auto-provisioning decision (true / https://anis.weboria.eu) --
  previously still showed the pre-decision false/empty defaults since
  this repo's initial population predated that change landing.
- Flagged CHANGELOG.md as stale (last entry v3.29.0, well behind the
  current shipped version) with an honest note rather than silently
  leaving a misleading "GitHub Releases page" pointer or backfilling
  invented descriptions of past releases.

No file needed to move to the private repo -- everything here (install/
update/backup/restore/healthcheck/uninstall scripts, the compose
manifest, license/notice docs) is either required for the customer to
install and operate ARGUS or a legal-transparency requirement. None of
it is build logic, dev configuration, or reproducible source.
This commit is contained in:
2026-07-25 17:06:47 +00:00
parent 27be26f5f2
commit db132c9f92
5 changed files with 67 additions and 50 deletions
+17 -9
View File
@@ -11,14 +11,18 @@ services:
max-file: "3"
environment:
TZ: ${TZ:-UTC}
POSTGRES_USER: ${DB_USER:-postgres}
# Internal database credentials, not customer-configurable — nothing
# outside this compose stack ever connects to Postgres directly, so
# there's no real reason to let these vary. Only the password (below)
# needs to be a real secret; the username/db name are just labels.
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres}
POSTGRES_DB: ${DB_NAME:-argus}
POSTGRES_DB: argus
command: postgres -c timezone=${TZ:-UTC} -c log_timezone=${TZ:-UTC} -c shared_preload_libraries=timescaledb -c timescaledb.telemetry_level=off -c max_locks_per_transaction=512
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-postgres}"]
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 10
@@ -104,7 +108,7 @@ services:
environment:
TZ: ${TZ:-UTC}
PORT: "8080"
DATABASE_URL: postgres://${DB_USER:-postgres}:${DB_PASSWORD:-postgres}@db:5432/${DB_NAME:-argus}?sslmode=disable
DATABASE_URL: postgres://postgres:${DB_PASSWORD:-postgres}@db:5432/argus?sslmode=disable
REDIS_URL: redis://valkey:6379/0
ENVIRONMENT: ${ENVIRONMENT:-production}
NGINX_CONTAINER: argus-proxy
@@ -118,12 +122,16 @@ services:
NGINX_HTTPS_PORT: ${NGINX_HTTPS_PORT:-}
API_HOST_PORT: ${API_HOST_PORT:-9080}
API_HOST: ${API_HOST:-}
# ANIS community intelligence — optional, off by default. Set these to
# connect this instance to an already-running ANIS hub.
ANIS_ENABLED: ${ANIS_ENABLED:-false}
ANIS_URL: ${ANIS_URL:-}
# ANIS community intelligence — on by default against the public
# Community Edition hub (empty license key = community tier, no signup
# required). These three only matter on first boot; manage the
# connection afterward from Threat Intel -> ANIS Connection in the
# dashboard. (No ANIS_ADMIN_KEY here: it's ANIS's own admin-dashboard
# credential, unrelated to the ARGUS<->ANIS protocol, which ARGUS never
# sends — a prior version of this file carried it by mistake.)
ANIS_ENABLED: ${ANIS_ENABLED:-true}
ANIS_URL: ${ANIS_URL:-https://anis.weboria.eu}
ANIS_LICENSE_KEY: ${ANIS_LICENSE_KEY:-}
ANIS_ADMIN_KEY: ${ANIS_ADMIN_KEY:-}
ANIS_SHARE_ATTACKERS: ${ANIS_SHARE_ATTACKERS:-false}
DNS_SECURITY_LISTEN_ADDR: ":53"
ports: