Repository navigation
CDNLite v0.1.5
CDNLite v0.1.5 Release Notes
Overview
CDNLite v0.1.5 is a major pre-1.0 platform update after v0.0.9.
This release moves CDNLite from the earlier site-based model to a domain-first CDN control plane. It adds cleaner domain onboarding, nameserver verification, per-domain routing modes, improved DNS publishing, database-backed settings, better analytics, readiness checks, report exports, and a more complete domain management dashboard.
Because this is still pre-1.0, this release includes breaking changes.
Highlights
- Replaced the old
sitemodel with the newdomainmodel across API, database, dashboard, edge config, usage ingest, and documentation. - Added Cloudflare-style domain onboarding with nameserver verification and activation flow.
- Added per-domain routing modes: geo, anycast, and DNS-only.
- Improved proxied DNS record publishing logic for apex and non-apex records.
- Added database-backed platform settings with dashboard editing, secret masking, validation, and PowerDNS connection testing.
- Added domain-scoped feature tabs for DNS, SSL, Cache, Redirects, Page Rules, WAF, Rate Limits, Analytics, and Overview.
- Added a new operational overview dashboard with aggregate metrics, warnings, and Markdown report export.
- Improved cache analytics with real cache status tracking and
X-CDNLITE-Cachevisibility. - Added full CRUD support for rate-limit rules.
- Added structured readiness checks for core, edge, PostgreSQL, PowerDNS, edge heartbeat, edge identity, and config freshness.
- Fixed edge identity handling so runtime responses and metrics use the configured edge ID.
- Improved analytics filtering by domain.
- Updated CI, tests, documentation, and local development workflows.
Breaking Changes
Site API renamed to Domain API
The old site terminology has been removed.
Use:
/api/v1/domainsinstead of:
/api/v1/sitesRemoved or replaced concepts include:
site_idSiteServiceSiteControllerSiteRepositorySitesView/api/v1/sites
Database reset recommended
This release performs a domain-first schema reset. For local development, the recommended upgrade path is a clean rebuild:
docker compose down -v
docker compose up --buildFor any existing non-local data, migrate manually before upgrading.
Domain creation flow changed
Domain creation no longer requires a full origin configuration immediately.
The new flow is:
- Create domain.
- Review assigned nameservers.
- Verify delegation.
- Activate the domain.
- Configure DNS, routing, SSL, cache, WAF, redirects, page rules, and analytics from domain tabs.
New Features
Domain-first control plane
CDNLite now uses domains as the primary resource. Domain APIs, CLI behavior, config snapshots, usage ingest, analytics, DNS records, dashboard routes, and documentation were updated around this model.
Nameserver verification and onboarding
New domain onboarding supports:
- Pending nameserver state.
- Assigned expected nameservers.
- Nameserver verification checks.
- Activation after successful verification.
- Lazy PowerDNS zone provisioning.
DNS routing modes
Each domain can now use one of the following routing modes:
geoanycastdns_only
The dashboard includes routing controls, proxy toggles, and generated record previews.
Improved DNS publishing
DNS publishing has been updated for proxied records, including better handling for apex and non-apex records.
Database-backed settings dashboard
Operational settings can now be managed from the dashboard instead of relying only on environment variables.
Settings include:
- PowerDNS
- Nameservers
- Edge DNS
- Cache defaults
- Analytics
- Security
Secret values are masked in API responses and the dashboard.
Domain feature tabs
Domain management now happens from a single domain detail page with dedicated tabs:
- Overview
- DNS
- SSL
- Cache
- Redirects
- Page Rules
- WAF
- Rate Limits
- Analytics
These tabs include shared CRUD flows, tables, enable/disable controls, empty states, and dashboard feedback.
Overview dashboard and Markdown reports
The main dashboard now includes operational metrics such as:
- Domain counts
- Active domains
- Requests in the last 24 hours
- Bandwidth in the last 24 hours
- Cache hit ratio
- Online/offline edge count
- Security events
- Expiring SSL certificates
Markdown report export was added for operational views.
Cache analytics improvements
Cache metrics now track real cache statuses instead of defaulting missing values incorrectly.
This improves visibility for:
- HIT
- MISS
- BYPASS
- STALE
- EXPIRED
- UNKNOWN
The edge also exposes cache status through:
X-CDNLITE-CacheDomain analytics
Analytics endpoints now support domain filtering.
The dashboard includes:
- Global analytics
- Per-domain analytics
- Domain detail analytics tab
- Cache analytics by domain
Rate limit CRUD
Rate-limit rules now support full dashboard and API management:
- Create
- List
- Edit
- Enable / disable
- Delete
Config snapshots are regenerated when rules change.
Readiness API
A structured readiness API was added for operational diagnostics.
It checks areas such as:
- PostgreSQL reachability
- PowerDNS configuration
- PowerDNS connectivity
- Edge heartbeat freshness
- Edge identity
- Config snapshot freshness
The dashboard now shows clickable readiness badges with detailed warnings and fix links.
Edge identity fixes
Edge identity handling was improved so the configured EDGE_ID is used consistently in:
- Response headers
- Usage metrics
- Security events
- Dashboard edge node identity display
The edge agent now rejects empty edge identity unless development mode allows it.
Fixes and Improvements
- Improved dashboard session restoration.
- Improved admin session handling.
- Improved readiness and troubleshooting views.
- Improved migration command error handling.
- Improved E2E seed behavior and PostgreSQL readiness waiting.
- Improved test coverage for migrations, usage analytics, cache analytics, rate limits, readiness, settings, and domain flows.
- Updated CI configuration and removed unstable frontend E2E workflow pieces.
- Updated README badges and project screenshot.
- Updated documentation for the domain-first model, testing, settings, routing, and dashboard workflows.
Upgrade Notes
For local development:
git pull
docker compose down -v
cp .env.dev.example .env
docker compose up --buildThen open:
Core API: http://localhost:8080
Edge: http://localhost:8081
Dashboard: http://localhost:8082
Default local dashboard credentials remain:
Username: admin
Password: admin
Only use the default credentials for local development.
Validation
This release includes updates across backend, frontend, edge runtime, edge agent, documentation, and CI.
Validation coverage includes:
- PHP lint checks
- Shell syntax checks
- Core Python tests
- Dashboard unit tests
- Dashboard typecheck/build
- Smoke tests
- E2E workflow updates
- Focused API tests for domains, analytics, readiness, settings, routing, and rate limits
Known Limitations
CDNLite is still pre-1.0.
The project remains focused on small CDN learning, development, and local/operator workflows. Production deployments should still place the dashboard and API behind proper external authentication and use strong secrets.
Not yet fully implemented:
- Multi-user RBAC
- Billing
- Advanced production certificate automation
- Full push-based edge config distribution
- Advanced cache policy engine
- Production-grade account management
Summary
CDNLite v0.1.1 is a major step toward a cleaner CDN control plane.
The most important change is the move from site-based management to domain-first operations, with stronger onboarding, routing, analytics, dashboard workflows, readiness checks, and operational reporting.