vaheed/CDNLite
GitHub: vaheed/CDNLite
CDNLite 是一套面向受控部署环境的自托管私有 CDN 控制平面,整合了边缘代理、DNS 发布、缓存、WAF 和 SSL 管理等核心 CDN 功能。
Stars: 1 | Forks: 0
# CDNLite
面向企业、托管服务提供商、内部基础设施团队以及受控生产环境部署的自托管私有 CDN 控制平面和边缘平台。
[](https://github.com/vaheed/CDNLite/actions/workflows/ci.yml)
[](https://github.com/vaheed/CDNLite/actions/workflows/docs.yml)
[](docker-compose.yml)
[](LICENSE)

**快速链接:** [文档](docs/index.md) · [快速入门](docs/quickstart.md) · [架构](docs/architecture.md) · [安全](docs/security.md) · [部署](docs/deployment.md) · [路线图](docs/ROADMAP.md)
已发布的 OpenAPI YAML:https://vaheed.github.io/CDNLite/api/openapi.yaml
CDNLite 允许运营商通过 PHP 控制平面、PostgreSQL 状态存储、Vue 仪表盘、OpenResty/Lua 边缘代理、PowerDNS/DNSGeo 发布、缓存与安全规则、SSL 工作流、分析、审计日志,以及基于签名的边缘代理同步,来运行一个私有 CDN 风格的平台。
它的定位是一个面向生产的私有 CDN 基础设施,并不承诺已经具备大型公共 CDN 或企业级身份认证的全部功能。
## CDNLite 适用于哪些人?
- 希望为内部或面向客户的应用拥有专属 CDN 层的私营企业。
- 正在探索托管边缘、DNS、WAF 和反向代理服务的托管服务提供商。
- 致力于构建受控私有边缘网络的 DevOps 和平台团队。
- CDN、DNS、WAF、PowerDNS、DNSGeo 和 OpenResty 的学习者。
- 需要可视化操作和简便默认设置的实验室、演示以及受控的生产环境实验。
## CDNLite 不适用于哪些场景
- CDNLite 不是超大规模 Cloudflare、Fastly 或 Akamai 的替代品。
- CDNLite 目前还不是完整的企业级 SSO、RBAC、多租户隔离或计费平台。
- CDNLite 不是托管式 CDN 服务;你需要自行运营核心组件、DNS、仪表盘和边缘节点。
- 在生产环境中使用需要进行安全加固、外部身份验证、TLS 配置、备份、监控、密钥轮换以及操作审查。
## 功能概述
**控制平面**
- 域名生命周期、域名服务器验证、激活、删除和审计历史。
- 源站管理,支持主备源站及定时的健康检查。
- API、CLI、仪表盘工作流,中心化任务队列,就绪检查和运营报告。
- 针对原始活动、高频安全事件、DNS 同步干扰和终结的 SSL 任务提供有限的留存清理,并优先提供试运行的生产指导。
**边缘代理**
- OpenResty/Lua 反向代理 runtime。
- 签名的边缘代理注册、心跳、配置轮询、指标和安全事件采集。
- 针对边缘同步的独立边缘 token、HMAC 签名、时间戳检查和重放保护。
**DNS 与 GeoDNS**
- 基于 PowerDNS 的记录发布,支持 DNS-only 和代理模式。
- 支持 DNSGeo,实现具备健康感知的私有边缘路由。
- 代理的根域记录默认通过 PowerDNS `LUA` 发布直接的边缘池应答,而代理的子域名则发布稳定的 CDN CNAME。
- 针对根域和泛域名,初始的托管 SSL 会在域名服务器验证后异步排入队列。
**缓存与性能**
- 缓存设置、缓存规则、清理工作流和缓存分析。
- 页面规则、重定向、响应头和源站回退行为。
**安全与 WAF**
- WAF 规则、速率限制、IP 访问规则、安全事件、审计日志和保护配置文件。
- 面向常见入门级安全策略的仪表盘安全中心工作流。
**SSL 与证书**
- ACME DNS-01 签发和续期调度。
- 手动证书导入和针对每个域名的 SSL 设置。
**可观测性**
- 健康端点、边缘心跳、边缘指标、安全事件采集、审计日志、仪表盘报告和故障排除文档。
**运维与部署**
- Docker Compose 部署、分离式部署示例、CI 冒烟/e2e 检查、PowerDNS 诊断、操作手册和压力测试工具。
## 架构概述
```
flowchart LR
Dashboard[Browser Dashboard] --> Core[Core API]
Core --> Postgres[(PostgreSQL)]
Core --> DNS[PowerDNS / DNSGeo]
EdgeAgent[Edge Agent] --> Core
EdgeProxy[Edge Proxy] --> Origins[Origin Servers]
EdgeProxy --> Events[Metrics / Security Events]
Events --> Core
```
正常的拓扑结构是根目录下的 [docker-compose.yml](docker-compose.yml)。分离式部署可以将核心 API、仪表盘、DNS 服务和边缘节点放置在不同的主机或网络上。
## 快速入门
```
cp .env.example .env
docker compose up -d --build
curl -fsS http://localhost:8080/health
curl -fsS http://localhost:8081/health
```
在 `http://localhost:8082` 打开仪表盘。本地引导凭据为 `admin` / `admin`;这仅限本地开发使用,绝不能在共享或生产部署中使用。
后续步骤:
- [一分钟了解 CDN](docs/cdn-in-a-minute.md)
- [快速入门指南](docs/quickstart.md)
- [首个配置示例](docs/examples/index.md)
- [生产环境加固](docs/production-hardening.md)
## 生产与私有部署
对于受控的生产环境实验或私营企业部署,请查阅 [部署](docs/deployment.md)、[生产环境加固](docs/production-hardening.md)、[安全模型](docs/security.md) 和 [企业级就绪状态](docs/enterprise-readiness.md)。
需要规划的事项:
- 在适当情况下分离核心、边缘和 DNS 拓扑。
- 在公共和内部服务边界上配置 TLS。
- 针对 API token、边缘 token、数据库凭据、ACME 凭据和 PowerDNS API 密钥进行密钥轮换。
- 数据库备份和恢复演练。
- 在原生 SSO/RBAC 实现之前,在仪表盘前方部署外部身份验证。
- 网络隔离,避免 PowerDNS、PostgreSQL 和内部 API 被不必要地暴露。
## 安全模型
CDNLite 为私有边缘部署包含了实用的安全基础:
- 发送到核心的边缘请求均经过 HMAC 签名。
- 边缘节点使用独立的边缘 token。
- 时间戳和 nonce 检查为签名的边缘流量提供重放保护。
- 核心 API 使用 bearer token 身份验证进行自动化操作。
- 审计日志会记录操作变更。
- 默认凭据仅用于本地引导,在共享使用前必须替换。
有关漏洞报告,请参阅 [SECURITY.md](SECURITY.md);有关操作加固,请参阅 [docs/security.md](docs/security.md)。
## 对比
| 选项 | 最适合场景 | 权衡 |
| --- | --- | --- |
| 仅使用 Nginx/OpenResty | 单个反向代理或自定义边缘脚本 | 快速且灵活,但没有内置的 CDN 控制平面、仪表盘、DNS 发布、审计跟踪或边缘同步工作流。 |
| 公共 CDN 供应商 | 全球托管式 CDN、托管式 WAF、托管式边缘网络 | 成熟且高可用,但在路由、策略、日志和边缘行为方面私有化控制较少,且存在供应商依赖。 |
| DIY 脚本 | 围绕 DNS 和代理配置的小型一次性自动化 | 初期简单,但后期难以在多个边缘节点上进行审计、测试、回滚或运维。 |
| CDNLite | 用于私有边缘网络的自托管 CDN 控制平面 | 提供一个具有内聚性的控制平面、仪表盘、PowerDNS/DNSGeo、OpenResty 边缘、WAF、缓存规则、SSL、分析和签名边缘同步,但仍需进行生产环境加固,且目前缺乏原生的企业级 SSO/RBAC/计费功能。 |
## 成熟度
CDNLite 适用于实验室、私有部署、演示和受控的生产环境实验。对于企业级生产环境,在将其暴露给关键工作负载之前,请查阅安全加固清单和当前的限制。
当前已知的限制包括:原生 RBAC、OIDC/SAML SSO、完整的多租户隔离、计费工作流、签名的发布构件、Kubernetes 打包以及 HA(高可用)控制平面文档。
## 路线图预览
- RBAC 和受限的 API 密钥。
- OIDC/SAML SSO 和外部身份集成。
- 更强的租户隔离和审计导出。
- Prometheus 指标和 Grafana 仪表盘。
- Helm/Kubernetes 部署和 Terraform 示例。
- HA(高可用)控制平面文档、备份/恢复自动化和边缘自动扩缩容。
- WAF 策略模板、速率限制、缓存规则和私有部署预设。
更详细的路线图请参阅 [docs/ROADMAP.md](docs/ROADMAP.md)。
## 开发与验证
```
docker compose config --quiet
find core -name '*.php' -print0 | xargs -0 -n1 php -l
pytest -q core/tests
cd dash && npm ci && npm run typecheck && npm test && npm run build
cd docs && npm ci && npm run docs:build
```
冒烟测试和 e2e 检查使用根目录的 stack:
```
docker compose up -d --build --wait
./ci/smoke.sh
./ci/e2e.sh
CDNLITE_EDGE_HEALTH_MODE=static ./ci/dns_e2e.sh
```
仅在明确为一次性的环境中运行破坏性的 DNS 压力测试。
## 安全披露
请阅读 [SECURITY.md](SECURITY.md)。请勿在公开的 issue 中发布漏洞利用细节、机密信息、token、生产环境域名或私有日志。
## 许可证
CDNLite 基于 [MIT 许可证](LICENSE) 发布。
标签:CDN, ffuf, OpenVAS, PHP, rizin, Vue, Web缓存, 文件系统扫描, 测试用例, 版权保护, 边缘计算, 运维平台