consolidate runtime env into .env, drop ecosystem env blocks (#1229)

- Make .env the single source of truth for runtime config. Remove all
  `env:` blocks from SREBOT/ecosystem.config.js and TSSBOT/ecosystem.config.js
  so values can't silently shadow .env. Both ecosystem files load .env via
  `require('dotenv').config()` and PM2 inherits the resolved environment.

- Rename SREBOT_STORAGE_VOL_PATH → STORAGE_VOL_PATH across all readers
  (BOT/utils.py, BOT/receiver_bridge.py, BOT/render_recap.py, server.js,
  web/server.js, dateindex.js, scripts/*, srebot.service, tests/, README,
  and both .env files). STORAGE is shared between SREBOT and TSSBOT, so the
  variable shouldn't carry one bot's prefix.

- Rename per-process PORT env vars to disambiguated names so .env can be
  the source of truth without collisions:
    PORT (api)     → SREBOT_API_PORT     (server.js)
    PORT (web)     → SREBOT_WEB_PORT     (web/server.js)
    WEBHOOK_PORT   → SREBOT_WEBHOOK_PORT (github_webhook_updater.py)
  SREBOT_EXTERNAL_HOST/PORT/UPSTREAM_URL were already uniquely named;
  they just move from ecosystem env to .env.

- TSSBOT/.env: drop GITHUB_WEBHOOK_SECRET (only srebot-webhook consumes it)
  and the stale SREBOT_DEPLOY_PATH. SREBOT/.env: also drop the obsolete
  SREBOT_DEPLOY_PATH (ecosystem now hardcodes __dirname).

- ecosystem.config.js no longer references SREBOT_DEPLOY_PATH; deploy path
  is always __dirname of the ecosystem file.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
NotSoToothless
2026-05-14 00:07:34 -07:00
committed by GitHub
parent 2f6a9687b1
commit 3fb15d6282
15 changed files with 54 additions and 66 deletions
+3 -3
View File
@@ -33,7 +33,7 @@ def _infer_storage_root(auth_file: Path) -> Path:
def _prepare_env(storage_root: Path) -> None:
os.environ["SREBOT_STORAGE_VOL_PATH"] = str(storage_root)
os.environ["STORAGE_VOL_PATH"] = str(storage_root)
def _score_hit(clan: dict[str, Any], needle: str) -> bool:
@@ -72,10 +72,10 @@ async def _main() -> int:
auth_file = Path(args.auth_file).expanduser().resolve()
storage_root = _infer_storage_root(auth_file)
else:
storage_root_env = os.environ.get("SREBOT_STORAGE_VOL_PATH", "").strip()
storage_root_env = os.environ.get("STORAGE_VOL_PATH", "").strip()
if not storage_root_env:
print(
"SREBOT_STORAGE_VOL_PATH is not set. Export it or pass --auth-file.",
"STORAGE_VOL_PATH is not set. Export it or pass --auth-file.",
file=sys.stderr,
)
return 2