Why we built it
Public CDNs are excellent until you need data residency, custom edge logic, or a bill that does not surprise you. We wanted the KeyCDN workflow — zones, aliases, purge, API — without renting someone else’s network forever.
cdn-server is a self-hosted, KeyCDN-compatible CDN: OpenResty on the hot path, a Go control plane, SQLite, and Ansible for scale-out. You keep the files, the certificates, and the logs.
Public CDNs are excellent until you need data residency, custom edge logic, or a bill that does not surprise you. We wanted the KeyCDN workflow — zones, aliases, purge, API — without renting someone else’s network forever.
One control node writes config and static files. Edges poll a JSON snapshot every few seconds and serve with sendfile and proxy_cache. Add a server from the operator UI; DNS round-robin spreads traffic. No Redis, Postgres, or second proxy on the request path.