Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
Commit95d0b72

fix(deploy): pass the whole .env into the container (env_file), not a hardcoded allowlist

fix(deploy): pass the whole .env into the container (env_file), not a hardcoded allowlist

docker-compose.standalone.yml only forwarded a hand-maintained allowlist
of env vars into the gluecron container (DATABASE_URL, ANTHROPIC_API_KEY,
GOOGLE_OAUTH_*). Any env-gated feature whose variable wasn't manually
added here was SILENTLY DEAD even when correctly set in .env — the app
reads process.env, but the value never reached the container.

This bit real features: /settings/deploy-targets shows "SERVER_TARGETS_KEY
not set" (the key can't reach the app), WORKFLOW_SECRETS_KEY (workflow
secrets encryption), and — critically for the in-progress work — every
VAPRON_* deploy-trigger var, so the Gluecron→Vapron deploy could never
have been configured no matter what was in .env.

Fix the whole class at the root: add `env_file: .env` so the entire
.env passes through, and any documented variable works the moment it's
set. The explicit `environment:` block is kept — it still wins for the
pinned literals (PORT, NODE_ENV, GIT_REPOS_PATH, APP_BASE_URL, SSH_PORT)
and documents the load-bearing vars. env_file + environment coexist;
environment takes precedence.

SERVER_TARGETS_KEY itself was generated (openssl rand -hex 32) and set in
the box .env in the same change.
ccantynz-alt committed on July 22, 2026Parent: 9bc1aed
1 file changed+11095d0b723e7ef561c71daeabd01efe12162f87577
1 changed file+11−0
Modifieddocker-compose.standalone.yml+11−0View fileUnifiedSplit
3636
3737 gluecron:
3838 build: .
39 # Pass the ENTIRE .env into the container. Previously only a hardcoded
40 # allowlist below reached the app, so any env-gated feature whose var
41 # wasn't hand-added here was silently dead even when set in .env —
42 # SERVER_TARGETS_KEY (deploy targets), WORKFLOW_SECRETS_KEY (workflow
43 # secrets), the VAPRON_* deploy vars, etc. env_file fixes the whole
44 # class: set a documented var in .env and it just works. The explicit
45 # `environment:` block below still wins for the literals it pins
46 # (PORT, NODE_ENV, GIT_REPOS_PATH, APP_BASE_URL, SSH_PORT) and stays as
47 # documentation of the load-bearing ones.
48 env_file:
49 - .env
3950 environment:
4051 - DATABASE_URL=${DATABASE_URL:-}
4152 - GIT_REPOS_PATH=/data/repos
4253