Skip to content

Microservices

This page is a quick-reference audit of every service defined in Quickstart/compose/ — what port(s) it exposes locally, and what env vars / config it consumes. For how to add or wire a new service into the Makefile, see the CoreAPI Development Guide.

Access

Service Container Port(s) Env / config consumed
authapi authapi 3002:3002 ../../.env (full shared env), ZITADEL_PAT_PATH (inline, points at mounted zitadel.pat)
tellyid tellyid 5174:80 ../../.env, build args VITE_BACKEND_URL (← BACKEND_URL), VITE_CORE_API_URL

Infrastructure

Service Container Port(s) Env / config consumed
postgres 5432:5432 ../../.env (needs POSTGRES_USER at minimum, used in healthcheck)
pgadmin 5050:80 inline only — PGADMIN_DEFAULT_EMAIL, PGADMIN_DEFAULT_PASSWORD, PGADMIN_CONFIG_SERVER_MODE, PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED (all hardcoded, no .env)
redis (none exposed) none
nats nats 4222:4222 (client), 8222:8222 (HTTP monitoring) none
zitadel zitadel 8080:8080 ../../.env, ZITADEL_MASTERKEY (via command flag)
login (Zitadel Login UI) 3001:3000 ../../.env, inline ZITADEL_API_URL, ZITADEL_SERVICE_USER_TOKEN_FILE
seaweedfs seaweedfs 8333:8333 (S3), 9333:9333 (Master API), 8888:8888 (Filer UI) none directly (config via mounted seaweedfs_s3.json)
seaweedfs_init (none — one-shot) ../../.envMINIO_BUCKET, MINIO_TEMP_BUCKET, MINIO_ACCESS_KEY, MINIO_SECRET_KEY
tusd tusd 1080:8080 inline only — MINIO_BUCKET, MINIO_ACCESS_KEY, MINIO_SECRET_KEY (all with fallback defaults), hardcoded hook to coreapi:3000/hooks/tusd
verdaccio playtelly-verdaccio 4873:4873 none
vernemq 1886:1884 (MQTT), 9006:8080 (WebSocket) ../../.env

CDN stack (infrastructure/cdn.yml)

Service Container Port(s) Env / config consumed
streamer_bkk cdn_streamer_bkk 18080:18080, 18081:18081 none via compose — config from mounted streamer-bkk/streamer.yml
streamer_ntb cdn_streamer_ntb 19080:18080, 19081:18081 none via compose — config from mounted streamer-ntb/streamer.yml
cproxy_bkk_1 cdn_cproxy_bkk_1 28080:8080, 28081:8081 none via compose — config from mounted cproxy-bkk-1/cproxy.yml
elb_bkk cdn_elb_bkk 38080:8090, 38081:8100 none via compose — config from mounted elb-bkk/elb.yml
colorbars cdn_broadcast_colorbars 9999:9999 inline — PORT, COLORBARS_STREAMS
node_x cdn_node_x 17080:18080, 17081:18081, 58080:8080, 58081:8081, 2222:22 none
scope (Weave Scope) scope 4040:4040 none

Services

Service Container Port(s) Env / config consumed
coreapi coreapi 3000:3000 ../../.env (full shared env), inline MEDIA_SERVER_URL
documentations 8001:80 none
org-console 4000:80 build-args only (not .env): VITE_AUTH_URL, VITE_AUTH_API_URL, VITE_AUTH_TOKEN_KEY, VITE_PLAYOUT_URL, VITE_TELLYBOARD_URL, VITE_SPATIO_URL, VITE_TELLYCONNECT_URL, VITE_PLATFORM_URL, VITE_CORE_API_URL
platform-console 4001:80 build-args only: VITE_AUTH_URL, VITE_AUTH_API_URL, VITE_CORE_API_URL, VITE_TELLYBOARD_URL, VITE_TELLYCONNECT_URL
playoutadmin playoutadmin 15173:80 ../../.env + build-args (VITE_TELLYID_URL, VITE_CORE_API_URL, VITE_AUTH_URL, VITE_ASSET_BASE_URL, COREAPI_URL, TUSD_URL, NPM_AUTH) + inline runtime env (COREAPI_URL, TUSD_URL, FORWARDED_HOST)
spatioadmin spatioadmin 5160:80 build-arg only — VITE_API_BASE_URL (hardcoded to localhost:3000)
tellyboardadmin tellyboard-frontend 5175:80 ../../.env + build-args (VITE_TELLYID_URL, VITE_AUTH_URL, VITE_CORE_API_URL, NPM_AUTH) + inline FORWARDED_HOST
website-app (TicketCMS) jticketing.website 13000:13000 inline only — VITE_API_BASE_URL (hardcoded), VITE_PAYMENT_GATEWAY_BASE_URL (hardcoded), VITE_MAINTENANCE_MODE/VITE_MAINTENANCE_PIN/VITE_TELEMETRY_URL (← TICKETING_VITE_* from shell/.env, but no env_file: present — these will only resolve if already exported in the shell)

Notable patterns / things worth flagging

  • Most backend/infra services (authapi, postgres, zitadel, coreapi, playoutadmin, tellyboardadmin, vernemq, login) pull from the single shared ../../.env via env_file:.
  • Most frontend admin consoles (org-console, platform-console, spatioadmin) skip env_file: entirely and rely only on Docker build-args — meaning their config is baked in at image build time, not runtime-configurable via .env alone.
  • website-app (TicketCMS) references $TICKETING_VITE_* vars but has no env_file: block — these will silently resolve empty unless already present in the invoking shell's environment. Worth double-checking before relying on it.
  • CDN stack services (streamer_*, cproxy_*, elb_*) take no compose-level env at all — all their behavior comes from the mounted .yml config files specific to each component, which is a different configuration surface than the rest of the stack.
  • Port collisions to be aware of: TUSD_URL/COREAPI_URL are hardcoded to internal Docker network hostnames (http://tusd:8080, http://coreapi:3000) in a few services — these only resolve inside the internal Docker network, not from the host machine.