Crea un sitio
Un sitio une un dominio con grupos de origen, rutas y las protecciones que actives.
Modelo de sitioInicio rápido
Dos caminos oficiales: la pila compose incluida para evaluar, o una compilación propia para producción.
La ruta compose solo necesita Docker. Compilar requiere Rust, Node y protoc.
Docker
Engine 24+ con Compose v2
Arranca el plano de control, un agente y PostgreSQL.
PostgreSQL
14+ (16 recomendado)
El plano de control guarda sitios, reglas y versiones.
Puertos
9080 · 9090 · 80 · 443
9080 sirve la API y la consola; 9090 el plano gRPC.
TLS
Autofirmado en el primer arranque
Sustitúyelo o confíalo antes de exponer la consola.
Inicio rápido
El compose arranca PingWAF en modo all-in-one junto a PostgreSQL con la imagen publicada.
El compose y el TOML de ejemplo están en la raíz del repositorio.
git clone https://github.com/shuaiZend/PingWAF.git
cd PingWAF Define JWT_SECRET y ADMIN_PASSWORD si el host es accesible desde fuera.
export JWT_SECRET="$(openssl rand -hex 32)"
export ADMIN_PASSWORD="$(openssl rand -hex 16)"
docker compose up -d La consola usa HTTPS con un certificado autofirmado del primer arranque; el navegador avisará hasta que lo confíes o subas el tuyo en Ajustes.
curl --connect-timeout 2 --max-time 3 http://localhost:9080/healthz
# {"status":"ok","database":"up"} Crea un sitio con el dominio que apuntarás al agente y habilita solo las protecciones que necesites.
Inicio rápido
Usa esta ruta cuando necesites una compilación propia o un binario auditable.
protoc es obligatorio: sin él el crate proto cae en marcadores de posición y los crates posteriores fallan.
# macOS
brew install protobuf
# Debian / Ubuntu
sudo apt install protobuf-compiler cmake La consola se embebe en el binario, así que debe compilarse primero.
cd web && npm ci && npm run build && cd .. El conjunto full incluye motor WAF, desafíos y automatización de certificados.
cargo build --release --bin pingwaf --features full Apunta a una instancia PostgreSQL; el esquema se crea en el primer arranque.
./target/release/pingwaf all-in-one \
--db-url "postgres://pingwaf:pingwaf@localhost:5432/pingwaf" El plano de control crea un administrador en el primer arranque y la consola exige cambiar la contraseña.
defaults.env
Cambia los valores por defecto antes de exponer nada
PINGWAF_JWT_SECRET y PINGWAF_ADMIN_PASSWORD tienen valores funcionales. Define ambos, pon PINGWAF_ALLOW_REGISTRATION=false y mantén 9080 en una red privada o VPN.export PINGWAF_JWT_SECRET="$(openssl rand -hex 32)"
export PINGWAF_ADMIN_PASSWORD="$(openssl rand -hex 16)"
export PINGWAF_ALLOW_REGISTRATION=false Cuando el plano de control responde, el resto es configuración.
Un sitio une un dominio con grupos de origen, rutas y las protecciones que actives.
Modelo de sitioEjecuta pingwaf server en el nodo de control y pingwaf agent en cada nodo edge; se registran por gRPC :9090.
Despliegue distribuidoHabilita el motor WAF, el escudo CC o la política de bots por sitio: nada se aplica hasta que lo hagas.
CapacidadesManda los logs a Elasticsearch y conserva las capturas en PostgreSQL para reproducir.
ObservabilidadFalta protoc. Instala protobuf-compiler (o brew install protobuf) y recompila: sin él el crate usa marcadores de posición.
La consola usa HTTPS con certificado autofirmado. Confía en el certificado descargado o sube el tuyo en Ajustes → HTTPS del plano de control; define PINGWAF_TLS_SANS con el hostname real.
Comprueba que alcanza el plano gRPC en :9090 (PINGWAF_SERVER_URL) y que no hay firewall ni proxy TLS por medio.
443 solo se abre tras emitir o subir un certificado; hasta entonces el agente sirve HTTP en el puerto 80.
Los documentos de despliegue y arquitectura cubren systemd, topologías distribuidas, precedencia de configuración y todas las variables de entorno.