Edgeweir: Self-Hosted, Open-Source CDN / WAF Control Plane, AGPL

Edgeweir: Open-Source, Self-Hosted CDN / WAF Control Plane; Console + Edge Nodes Fully Open Source, No Feature Restrictions

GitHub:

Nodes:

Documentation:

Website:

If you find it useful, give it a Star :star: — it would mean a lot.


Why I Built It

  • There was no open-source, free, fully featured CDN control plane: WAF, CC protection, traffic scheduling, and node count should not be locked behind a license
  • The GoEdge supply-chain poisoning incident: after the management console was compromised, malicious scripts were distributed via SSH to all nodes and injected into users’ websites. A CDN sits in the middle of all traffic, so its control plane must be open source and auditable

Security Design

  • The console does not store SSH credentials and has no remote execution channel
  • Node private keys are generated locally and never leave the node; mTLS is used throughout after registration
  • Registration tokens are single-use and only their SHA-256 hashes are stored
  • cosign signature verification + per-package SHA-256 verification before node installation; console images are cosign-signed
  • Certificate private keys and DNS API keys are stored using envelope encryption
  • No callbacks, license checks, or telemetry

Features

  • Origin and Caching: origin pools / origin groups, active + passive health checks, session persistence, S3-signed origin pulls, WebSocket, expression-based cache rules, slicing, purging by URL / directory / Host / Cache-Tag, sitemap prewarming
  • HTTPS: automatic issuance and renewal via ACME HTTP-01 / DNS-01, HTTP/2, HTTP/3, Brotli / Zstd / Gzip
  • WAF: OWASP CRS (paranoia level, anomaly score thresholds, exclusions by rule ID), staged rules, rate limiting, redirects / rewrites, request and response header transformations
  • CC Protection: four levels of challenges—Cookie / JS / PoW / image CAPTCHA—Under Attack mode, automatic tiered CC escalation at the node level, JA4 fingerprinting, IP blocking within seconds (global blocking via nftables kernel packet drops)
  • Layer 4 Forwarding: TCP / UDP port pools, PROXY protocol v1 / v2, connection limits, add or remove ports without dropping connections
  • Traffic Scheduling: regional probes, automatic removal of nodes based on node metrics, backup node groups / backup IPs, carrier routes (DNSPod, Tencent Cloud, Alibaba Cloud, Huawei Cloud)
  • Operations: access logs and CSV export, optional ClickHouse, OpenAPI, 2FA / Passkey, audit logs, signed canary upgrades and rollbacks for nodes, backup and recovery

Architecture

  • Console: a single Node.js process and image, with PostgreSQL 18 as its sole dependency
  • Nodes: Go agent + OpenResty, amd64 / arm64, Debian 12+ / Ubuntu 22.04+ / RHEL 9+
  • Console and nodes: protobuf contract, Connect-RPC over mTLS
  • End-to-end tests cover registration, deployments, caching, failover, challenges, CC, CRS, ban deployment (p95 ≤ 5s), Layer 4 forwarding, and traffic scheduling

Deployment

Supports Docker Compose, BaoTa / aaPanel, Railway, Fly.io, and bunny.net. The console generates the node installation command; connect a node with a single command.

Notes

  • AGPL-3.0, suitable for compliant commercial use
  • More features are under continuous development; Issues and forum feedback are welcome

One more request for a Star :star:
:ac17:

9 Likes

Take a look.

1 Like

Do you support HTTP/2 origin pulls?

2 Likes

Thanks for providing the resource information~

1 Like

Thanks for sharing.

1 Like

Supports HTTP/2 and gRPC for origin connections

Impressive!