Créez un site
Un site relie un domaine aux pools d'origine, aux routes et aux protections activées.
Modèle de siteDémarrage
Deux chemins officiels : la pile compose fournie pour évaluer, ou une compilation maison pour la production.
La voie compose ne demande que Docker ; compiler exige Rust, Node et protoc.
Docker
Engine 24+ avec Compose v2
Démarre le plan de contrôle, un agent et PostgreSQL.
PostgreSQL
14+ (16 recommandé)
Le plan de contrôle y stocke sites, règles et versions.
Ports
9080 · 9090 · 80 · 443
9080 sert l'API et la console, 9090 le plan gRPC.
TLS
Auto-signé au premier démarrage
Remplacez-le ou faites-lui confiance avant d'exposer la console.
Démarrage
Le compose démarre PingWAF en mode all-in-one à côté de PostgreSQL avec l'image publiée.
Le compose et le TOML d'exemple sont à la racine du dépôt.
git clone https://github.com/shuaiZend/PingWAF.git
cd PingWAF Définissez JWT_SECRET et ADMIN_PASSWORD si l'hôte est joignable de l'extérieur.
export JWT_SECRET="$(openssl rand -hex 32)"
export ADMIN_PASSWORD="$(openssl rand -hex 16)"
docker compose up -d La console sert du HTTPS avec un certificat auto-signé généré au premier démarrage ; le navigateur alertera jusqu'à ce que vous le remplaciez.
curl --connect-timeout 2 --max-time 3 http://localhost:9080/healthz
# {"status":"ok","database":"up"} Créez un site avec le domaine pointé vers l'agent, puis activez uniquement les protections voulues.
Démarrage
Utile pour une compilation sur mesure ou un binaire auditable.
protoc est obligatoire : sans lui, le crate proto bascule sur des fichiers factices et la compilation échoue.
# macOS
brew install protobuf
# Debian / Ubuntu
sudo apt install protobuf-compiler cmake La console est embarquée dans le binaire, elle doit donc être compilée en premier.
cd web && npm ci && npm run build && cd .. La feature full inclut le moteur WAF, les défis et l'automatisation des certificats.
cargo build --release --bin pingwaf --features full Pointez vers une instance PostgreSQL ; le schéma est créé au premier démarrage.
./target/release/pingwaf all-in-one \
--db-url "postgres://pingwaf:pingwaf@localhost:5432/pingwaf" Le plan de contrôle crée un administrateur au premier démarrage, et la console impose un changement de mot de passe.
defaults.env
Changez les valeurs par défaut avant toute exposition
PINGWAF_JWT_SECRET et PINGWAF_ADMIN_PASSWORD ont des valeurs fonctionnelles. Définissez-les, passez PINGWAF_ALLOW_REGISTRATION à false et gardez 9080 sur un réseau privé ou un VPN.export PINGWAF_JWT_SECRET="$(openssl rand -hex 32)"
export PINGWAF_ADMIN_PASSWORD="$(openssl rand -hex 16)"
export PINGWAF_ALLOW_REGISTRATION=false Une fois le plan de contrôle joignable, tout le reste est de la configuration.
Un site relie un domaine aux pools d'origine, aux routes et aux protections activées.
Modèle de siteLancez pingwaf server sur le nœud de contrôle et pingwaf agent sur chaque nœud de périphérie ; ils s'enregistrent sur gRPC :9090.
Déploiement distribuéActivez le moteur WAF, le bouclier CC ou la politique anti-bots par site : rien ne s'applique avant.
CapacitésEnvoyez les journaux vers Elasticsearch et conservez les captures dans PostgreSQL pour rejouer.
Observabilitéprotoc manque. Installez protobuf-compiler (ou brew install protobuf) puis recompilez : sans lui le crate utilise des fichiers factices.
La console utilise HTTPS avec un certificat auto-signé. Faites confiance au certificat téléchargé ou importez le vôtre via Réglages → HTTPS du plan de contrôle ; renseignez PINGWAF_TLS_SANS.
Vérifiez qu'il atteint le plan gRPC sur :9090 (PINGWAF_SERVER_URL) et qu'aucun pare-feu ni proxy TLS ne l'en empêche.
443 n'ouvre qu'après l'émission ou l'import d'un certificat ; avant cela l'agent ne sert qu'en HTTP sur 80.
Les documents déploiement et architecture couvrent systemd, les topologies distribuées, la précédence de configuration et toutes les variables d'environnement.