创建站点
站点把域名与源站池、路由以及你启用的防护绑定在一起。
站点模型快速上手
两条官方路径:用自带 compose 快速评估,或自行构建二进制用于生产环境。
compose 方式只需要 Docker;源码构建还需要 Rust、Node 工具链与 protoc。
Docker
Engine 24+ 与 Compose v2
一次启动控制面、一个 Agent 与 PostgreSQL。
PostgreSQL
14+(推荐 16)
控制面用它保存站点、规则与版本。
端口
9080 · 9090 · 80 · 443
9080 提供 API 与控制台,9090 是 gRPC 控制面。
TLS
首次启动使用自签证书
对外暴露控制台前请替换证书或先行信任。
快速上手
compose 文件会以 all-in-one 模式启动 PingWAF,并同时拉起 PostgreSQL。
compose 文件与示例 TOML 配置都在仓库根目录。
git clone https://github.com/shuaiZend/PingWAF.git
cd PingWAF 如果这台主机可被他人访问,请先设置 JWT_SECRET 与 ADMIN_PASSWORD。
export JWT_SECRET="$(openssl rand -hex 32)"
export ADMIN_PASSWORD="$(openssl rand -hex 16)"
docker compose up -d 控制台使用首次启动生成的自签证书提供 HTTPS,浏览器会告警,直到你在设置中信任或上传自己的证书。
curl --connect-timeout 2 --max-time 3 http://localhost:9080/healthz
# {"status":"ok","database":"up"} 用准备解析到 Agent 的域名创建站点,然后只为这个域名开启需要的防护。
快速上手
需要自定义构建、不同特性组合或可审计二进制时使用这条路径。
protoc 是必需项:缺失时 proto crate 会退化为占位文件,后续 crate 编译失败。
# macOS
brew install protobuf
# Debian / Ubuntu
sudo apt install protobuf-compiler cmake 控制台会被嵌入二进制,因此必须先构建。
cd web && npm ci && npm run build && cd .. full 特性包含 WAF 引擎、挑战与证书自动化。
cargo build --release --bin pingwaf --features full 指向一个 PostgreSQL 实例即可,首次启动会自动建表。
./target/release/pingwaf all-in-one \
--db-url "postgres://pingwaf:pingwaf@localhost:5432/pingwaf" 控制面首次启动会创建管理员账号,控制台会在可用前强制要求修改密码。
defaults.env
对外暴露前务必修改默认值
PINGWAF_JWT_SECRET 与 PINGWAF_ADMIN_PASSWORD 都有可用默认值。请同时设置它们、把 PINGWAF_ALLOW_REGISTRATION 设为 false,并让 9080 只在内网或 VPN 内可达。export PINGWAF_JWT_SECRET="$(openssl rand -hex 32)"
export PINGWAF_ADMIN_PASSWORD="$(openssl rand -hex 16)"
export PINGWAF_ALLOW_REGISTRATION=false 控制面能响应之后,剩下的都是配置工作。
缺少 protoc。安装 protobuf-compiler(或 brew install protobuf)后重新构建——没有它时该 crate 会静默退化为占位文件。
控制台默认使用自签证书提供 HTTPS。信任下载的证书,或在设置 → 控制面 HTTPS 上传自己的证书;用 PINGWAF_TLS_SANS 指定实际访问的主机名。
确认 Agent 能访问 :9090 的 gRPC 控制面(PINGWAF_SERVER_URL),且没有被防火墙或 TLS 终止代理拦截。
只有当站点签发或上传证书后 443 才会开放;在此之前 Agent 只提供 80 端口的 HTTP。
部署与架构文档覆盖 systemd、分布式拓扑、配置优先级以及完整的环境变量清单。