PlayoutAdmin Environment Variables Reference
Build-time (Vite — baked into JS bundle, requires image rebuild to change)
| Variable |
Value (local) |
Role |
Status |
Used In |
VITE_ASSET_BASE_URL |
http://localhost:15173 |
Base URL prefixed to relative /assets/<key> paths returned by CoreAPI, to build the full browser-facing media/thumbnail URL. Also passed explicitly in GitLab CI (--build-arg), so staging/prod have their own CI-configured value. |
Active |
components/channels/sections/SectionFallback.jsx (currently routed). Also present in components/legacy/origin/CacheOriginManager.jsx, legacy/channels.backup/sections/SectionFallback.jsx, legacy/media/MediaBeta.jsx (all unrouted legacy). Not yet used in MediaList.jsx — planned addition. |
VITE_CORE_API_URL |
http://localhost:3000 |
Base URL for axios clients (authApiClient, coreApiClient) hitting /api/v1. |
Active, but only inside utils/api.js |
utils/api.js — confirmed dead/unimported by any component per grep. Correctly wired, but its only consumer is itself unused. |
VITE_AUTH_API_URL |
http://localhost:3002 |
Base URL for authApiClient. |
Same as above |
utils/api.js only |
VITE_TELLYID_URL |
(passed as ${VITE_AUTH_URL}, renamed) |
Fallback/default for TellyID auth service URL. |
Active |
utils/auth.js |
VITE_AUTH_URL |
from root .env |
Used to construct AUTH_URL for auth redirect flow. |
Active |
components/sideBar/Sidebar.jsx |
NPM_AUTH |
from root .env |
Populates .npmrc for private @playtelly package registry auth during npm install. Build-stage only — never reaches runtime or the JS bundle. |
Active (build infra, not app-level) |
Dockerfile only |
Runtime (container env — read live by nginx via envsubst, changeable without rebuild)
| Variable |
Value (local) |
Role |
Status |
Used In |
COREAPI_URL |
http://coreapi:3000 |
Upstream target for /api/ proxy block. |
Active |
nginx.conf.template |
TUSD_URL |
http://tusd:8080 |
Upstream target for /files/ proxy block (tus resumable upload passthrough). |
Active |
nginx.conf.template |
FORWARDED_HOST |
localhost:15173 |
Intended to set forwarded-host header context. |
Dead — confirmed via grep, zero references in nginx.conf.template or anywhere else; template uses nginx's built-in $http_host, not ${FORWARDED_HOST}. |
Declared in compose environment: only, never consumed |
Planned addition
| Variable |
Proposed value |
Role |
Status |
Used In |
ASSET_SERVING_URL |
http://cproxy_vod:8080 |
New upstream target for /assets/ proxy block, replacing ${COREAPI_URL}/assets/ — routes asset-serving traffic to cproxy → SeaweedFS instead of through CoreAPI. |
Planned |
nginx.conf.template |
Historical context (from git log)
Two commits confirm the current relative-path convention was a deliberate,
completed refactor, not accidental drift:
- PlayoutAdmin:
feat(media): asset URL refactor, nginx X-Forwarded-Host fix, VITE_ASSET_BASE_URL
- CoreAPI:
refactor(media): unified /assets/ route, relative URLs, remove ASSET_BASE_URL from backend
The intended end state is: CoreAPI returns relative /assets/<key> paths only,
and the frontend concatenates VITE_ASSET_BASE_URL (or falls back to "",
matching the existing pattern in SectionFallback.jsx) to build the full URL.
The only outstanding gap is wiring this same established pattern into
MediaList.jsx, which several other components already do correctly.
Known dead files/vars, not to be reconciled against this work
utils/api.js — stale, contains an undefined-variable bug (API_MONO_URL),
duplicate method definitions, large commented-out blocks. Not imported by
any component. Safe to ignore or remove independently of media-serving work.
FORWARDED_HOST — dead env var, safe cleanup item.
media-assets path references in comments (Dockerfile, CoreAPI route
comments) — cosmetic/stale documentation only; actual route is /assets/*.
No functional dependency found anywhere in either codebase.