Skip to content

CDN Infrastructure

PlayTelly's CDN stack runs as a set of Castis microservices orchestrated via cdn.yml in the Quickstart compose. All services are linux/amd64 binaries running under Rosetta on Mac M-series for local dev, and on Rocky Linux 9 x86_64 in production.

Services

Service Image Purpose
streamer_bkk cdn/streamer Castis Streamer — DASH/HLS origin, Bangkok node
streamer_ntb cdn/streamer Castis Streamer — DASH/HLS origin, Nonthaburi node
cproxy_bkk_1 cproxy:v1 cproxy — caching reverse proxy in front of streamers
elb_bkk elb:v1 Castis ELB — load balancer in front of cproxy nodes
colorbars cdn/colorbars ffmpeg UDP multicast broadcaster (live channel testing)

Architecture

Client
  └── ELB (elb_bkk :38090)
        └── cproxy (cproxy_bkk_1 :28080)
              ├── streamer_bkk (:18080)  ← /bkk/* routes
              └── streamer_ntb (:19080)  ← /ntb/* routes
                    └── SeaweedFS S3 (http-remote fallback)

CoreAPI's distribution domain manages all nodes — streamers, caches, and ELBs are registered in the database and controlled via their respective APIs.

Networks

Network Purpose
internal All services — CoreAPI, DB, SeaweedFS, CDN
cdn_net CDN-only — streamers + colorbars for UDP multicast

See Also