+
{/* Icon */}
-

+
{/* Title + description */}
-
- {title}
-
+
{title}
{description}
{/* Badges */}
- {Appsec !== undefined && (
-
- )}
- {Mode !== undefined && (
-
- )}
- {Metrics !== undefined && (
-
- )}
- {MTLS !== undefined && (
-
- )}
- {Prometheus !== undefined && (
-
- )}
+ {/* for each BADGE_DEFS key,value create the badge */}
+ {Object.entries(BADGE_DEFS).map(([key, badge]) => {
+ const badgeDef = badge as FeatureBadgeDef;
+ return (
+ )}
+ tooltip={badgeDef.tooltip}
+ //color is badgedef displayColor if provided, otherwise calculate wit getColorForBadge
+ color= {badgeDef.displayColor ? badgeDef.displayColor(Object.fromEntries(bouncerSupportedFeatures) as Record) : getColorForBadge(Object.fromEntries(bouncerSupportedFeatures) as Record, badgeDef.linkedFeatures)}
+ />
+ );
+ })}
);
diff --git a/crowdsec-docs/unversioned/bouncers/apache.mdx b/crowdsec-docs/unversioned/bouncers/apache.mdx
index dcd63bf6b..aede859c3 100644
--- a/crowdsec-docs/unversioned/bouncers/apache.mdx
+++ b/crowdsec-docs/unversioned/bouncers/apache.mdx
@@ -12,9 +12,10 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Apache"
imgSrc="/img/crowdsec_apache2.svg"
description="Apache module-based remediation component with live mode and in-memory cache support."
+ featuresSupport="livemode"
/>
-A Remediation Component for Apache.
+# A Remediation Component for Apache.
:::warning
diff --git a/crowdsec-docs/unversioned/bouncers/aws-waf.mdx b/crowdsec-docs/unversioned/bouncers/aws-waf.mdx
index bb3d4c2df..02799e9e4 100644
--- a/crowdsec-docs/unversioned/bouncers/aws-waf.mdx
+++ b/crowdsec-docs/unversioned/bouncers/aws-waf.mdx
@@ -12,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="AWS WAF"
imgSrc="/img/aws-waf-bouncer-logo.png"
description="Automatically adds rules to AWS WAF ACLs and manages IPSets based on CrowdSec decisions."
- MTLS
+ featuresSupport="mtls,apimode"
/>
## Overview
diff --git a/crowdsec-docs/unversioned/bouncers/blocklist-mirror.mdx b/crowdsec-docs/unversioned/bouncers/blocklist-mirror.mdx
index 1c948e2c4..3758e46b7 100644
--- a/crowdsec-docs/unversioned/bouncers/blocklist-mirror.mdx
+++ b/crowdsec-docs/unversioned/bouncers/blocklist-mirror.mdx
@@ -4,6 +4,7 @@ title: Blocklist mirror
sidebar_position: 7
---
+import useBaseUrl from "@docusaurus/useBaseUrl"
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import BouncerHeader from "@site/src/components/bouncer-header";
@@ -12,8 +13,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Blocklist Mirror"
imgSrc="/img/crowdsec_http.svg"
description="Exposes CrowdSec decisions via HTTP(S) endpoints in pre-defined formats for network appliances."
- MTLS
- Prometheus
+ featuresSupport="mtls, prometheus, streammode"
/>
diff --git a/crowdsec-docs/unversioned/bouncers/cloudflare.mdx b/crowdsec-docs/unversioned/bouncers/cloudflare.mdx
index a56fb66d0..5425fc4d0 100644
--- a/crowdsec-docs/unversioned/bouncers/cloudflare.mdx
+++ b/crowdsec-docs/unversioned/bouncers/cloudflare.mdx
@@ -4,6 +4,7 @@ title: CrowdSec Cloudflare Worker Bouncer
toc_max_heading_level: 3
---
+import useBaseUrl from "@docusaurus/useBaseUrl"
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import BouncerHeader from "@site/src/components/bouncer-header";
@@ -12,6 +13,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Cloudflare Worker Bouncer"
imgSrc="/img/crowdsec_cloudfare.svg"
description="Syncs CrowdSec decisions with Cloudflare Workers to block or challenge traffic on your zones."
+ featuresSupport="mtls, streammode, apimode"
/>
:::tip
diff --git a/crowdsec-docs/unversioned/bouncers/custom.mdx b/crowdsec-docs/unversioned/bouncers/custom.mdx
index e780dcc92..8dfc21538 100644
--- a/crowdsec-docs/unversioned/bouncers/custom.mdx
+++ b/crowdsec-docs/unversioned/bouncers/custom.mdx
@@ -12,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Custom"
imgSrc="/img/crowdsec_custom.svg"
description="Invokes custom user scripts with new, expired and removed decisions from CrowdSec LAPI."
- Prometheus
+ featuresSupport="prometheus, streammode"
/>
CrowdSec Remediation Component written to invoke custom scripts.
diff --git a/crowdsec-docs/unversioned/bouncers/envoy.mdx b/crowdsec-docs/unversioned/bouncers/envoy.mdx
index 115fe03ab..a337555cf 100644
--- a/crowdsec-docs/unversioned/bouncers/envoy.mdx
+++ b/crowdsec-docs/unversioned/bouncers/envoy.mdx
@@ -11,10 +11,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Envoy Gateway (Kubernetes)"
imgSrc="/img/crowdsec_http.svg"
description="External authorization bouncer for Envoy Gateway with AppSec support."
- Mode={false}
- Metrics
- Prometheus={false}
- Appsec
+ featuresSupport="streammode, metrics, !prometheus, appsec"
/>
# CrowdSec Remediation QuickStart for Envoy Gateway
diff --git a/crowdsec-docs/unversioned/bouncers/fastly.mdx b/crowdsec-docs/unversioned/bouncers/fastly.mdx
index 5e319db7f..5ca737547 100644
--- a/crowdsec-docs/unversioned/bouncers/fastly.mdx
+++ b/crowdsec-docs/unversioned/bouncers/fastly.mdx
@@ -9,6 +9,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Fastly"
imgSrc="/img/crowdsec_fastly.png"
description="Syncs CrowdSec decisions with Fastly's VCL. Supports IP, Range, Country and AS scoped decisions."
+ featuresSupport="mtls, apimode"
/>
# Fastly bouncer
diff --git a/crowdsec-docs/unversioned/bouncers/firewall.mdx b/crowdsec-docs/unversioned/bouncers/firewall.mdx
index 18013a498..e82b5db4f 100644
--- a/crowdsec-docs/unversioned/bouncers/firewall.mdx
+++ b/crowdsec-docs/unversioned/bouncers/firewall.mdx
@@ -12,9 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Firewall"
imgSrc="/img/crowdsec_firewall.svg"
description="Golang-based remediation component for firewalls (iptables, nftables, ipset, pf)."
- MTLS
- Prometheus
- Metrics
+ featuresSupport="mtls, prometheus, metrics, streammode"
/>
CrowdSec Remediation Component written in golang for firewalls.
diff --git a/crowdsec-docs/unversioned/bouncers/haproxy.mdx b/crowdsec-docs/unversioned/bouncers/haproxy.mdx
index 8d568fc93..538643cb2 100644
--- a/crowdsec-docs/unversioned/bouncers/haproxy.mdx
+++ b/crowdsec-docs/unversioned/bouncers/haproxy.mdx
@@ -11,8 +11,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="HAProxy"
imgSrc="/img/crowdsec_haproxy.svg"
description="Lua-based remediation component for HAProxy (legacy — stream mode only, no AppSec support)."
- Mode
- Appsec={false}
+ featuresSupport="streammode, !appsec"
/>
:::danger
diff --git a/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx b/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx
index 6e40cd893..af27ea6c6 100644
--- a/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx
+++ b/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx
@@ -11,11 +11,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="HAProxy SPOA"
imgSrc="/img/crowdsec_haproxy.svg"
description="Go-based SPOA bouncer for HAProxy with AppSec (WAF) support — the recommended HAProxy integration."
- MTLS
- Mode={false}
- Appsec
- Metrics
- Prometheus
+ featuresSupport="mtls, streammode, appsec, metrics, prometheus"
/>
# A remediation component for HAProxy
diff --git a/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx b/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx
index c28b43f1c..b83c9a058 100644
--- a/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx
+++ b/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx
@@ -12,10 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Ingress Nginx"
imgSrc="/img/crowdsec_nginx.svg"
description="CrowdSec integration for ingress-nginx (deprecated — Lua support removed in v1.12)."
- Mode
- Appsec
- Metrics
- MTLS
+ featuresSupport="appsec, livemode, streammode, metrics, mtls"
/>
:::danger Deprecated and not recommended
diff --git a/crowdsec-docs/unversioned/bouncers/magento.mdx b/crowdsec-docs/unversioned/bouncers/magento.mdx
index d71d65fc8..5bb0481f2 100644
--- a/crowdsec-docs/unversioned/bouncers/magento.mdx
+++ b/crowdsec-docs/unversioned/bouncers/magento.mdx
@@ -4,6 +4,7 @@ title: Magento 2
sidebar_position: 1
---
+import useBaseUrl from "@docusaurus/useBaseUrl"
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import BouncerHeader from "@site/src/components/bouncer-header";
@@ -12,8 +13,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Magento 2"
imgSrc="/img/bouncer/magento/crowdsec_magento_bouncer.png"
description="Magento 2 extension that protects stores against malicious traffic using CrowdSec."
- Mode
- MTLS
+ featuresSupport="livemode, streammode, mtls"
/>
## Introduction
diff --git a/crowdsec-docs/unversioned/bouncers/nginx.mdx b/crowdsec-docs/unversioned/bouncers/nginx.mdx
index fbdf1bbfd..fc7dc468b 100644
--- a/crowdsec-docs/unversioned/bouncers/nginx.mdx
+++ b/crowdsec-docs/unversioned/bouncers/nginx.mdx
@@ -12,10 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Nginx"
imgSrc="/img/crowdsec_nginx.svg"
description="Lua-based reverse-proxy bouncer with live & stream remediation and built-in AppSec (WAF) support."
- Mode
- Appsec
- Metrics
- MTLS
+ featuresSupport="appsec, livemode, streammode, metrics, mtls"
/>
A lua Remediation Component for nginx.
diff --git a/crowdsec-docs/unversioned/bouncers/openresty.mdx b/crowdsec-docs/unversioned/bouncers/openresty.mdx
index 3a084f2a3..8b851e8b7 100644
--- a/crowdsec-docs/unversioned/bouncers/openresty.mdx
+++ b/crowdsec-docs/unversioned/bouncers/openresty.mdx
@@ -12,10 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="OpenResty"
imgSrc="/img/openresty.svg"
description="Lua-based reverse-proxy bouncer for OpenResty with live & stream remediation and AppSec (WAF) support."
- Mode
- Appsec
- Metrics
- MTLS
+ featuresSupport="appsec, livemode, streammode, metrics, mtls"
/>
A lua Remediation Component for OpenResty.
diff --git a/crowdsec-docs/unversioned/bouncers/php-lib.mdx b/crowdsec-docs/unversioned/bouncers/php-lib.mdx
index 8b744bcab..bba9e444f 100644
--- a/crowdsec-docs/unversioned/bouncers/php-lib.mdx
+++ b/crowdsec-docs/unversioned/bouncers/php-lib.mdx
@@ -4,6 +4,7 @@ title: PHP Remediation Library
sidebar_position: 1
---
+import useBaseUrl from "@docusaurus/useBaseUrl"
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import BouncerHeader from "@site/src/components/bouncer-header";
@@ -12,10 +13,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="PHP Remediation Library"
imgSrc="/img/crowdsec_bouncer_php.png"
description="PHP library for building custom CrowdSec bouncers with live & stream mode and AppSec support."
- Mode
- MTLS
- Appsec
- Metrics
+ featuresSupport="livemode, streammode, mtls, appsec, metrics"
/>
## Overview
diff --git a/crowdsec-docs/unversioned/bouncers/php.mdx b/crowdsec-docs/unversioned/bouncers/php.mdx
index 5775bc694..0637de5cc 100644
--- a/crowdsec-docs/unversioned/bouncers/php.mdx
+++ b/crowdsec-docs/unversioned/bouncers/php.mdx
@@ -4,6 +4,7 @@ title: PHP Standalone
sidebar_position: 1
---
+import useBaseUrl from "@docusaurus/useBaseUrl"
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import BouncerHeader from "@site/src/components/bouncer-header";
@@ -12,10 +13,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="PHP Standalone"
imgSrc="/img/crowdsec_bouncer_php.png"
description="PHP-based standalone remediation component with live & stream mode and AppSec support."
- Mode
- MTLS
- Appsec
- Metrics
+ featuresSupport="livemode, streammode, mtls, appsec, metrics"
/>
## Overview
diff --git a/crowdsec-docs/unversioned/bouncers/stormshield.mdx b/crowdsec-docs/unversioned/bouncers/stormshield.mdx
index 013b7d18c..b5f958f5b 100644
--- a/crowdsec-docs/unversioned/bouncers/stormshield.mdx
+++ b/crowdsec-docs/unversioned/bouncers/stormshield.mdx
@@ -3,6 +3,7 @@ id: stormshield
title: Stormshield
---
+import useBaseUrl from "@docusaurus/useBaseUrl"
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import BouncerHeader from "@site/src/components/bouncer-header";
@@ -11,6 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Stormshield"
imgSrc="/img/bouncer/stormshield/logo.png"
description="Syncs IP bans from CrowdSec with Stormshield network appliances."
+ featuresSupport="mtls, apimode"
/>
## Overview
diff --git a/crowdsec-docs/unversioned/bouncers/traefik.mdx b/crowdsec-docs/unversioned/bouncers/traefik.mdx
index d5350a418..22b2cf4ef 100644
--- a/crowdsec-docs/unversioned/bouncers/traefik.mdx
+++ b/crowdsec-docs/unversioned/bouncers/traefik.mdx
@@ -4,6 +4,7 @@ title: Traefik (Kubernetes)
sidebar_position: 5
---
+import useBaseUrl from "@docusaurus/useBaseUrl"
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
import BouncerHeader from "@site/src/components/bouncer-header";
@@ -12,9 +13,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Traefik (Kubernetes)"
imgSrc="/img/traefik.logo.png"
description="Traefik middleware plugin for Kubernetes that blocks IPs via CrowdSec decisions."
- Metrics
- Prometheus
- MTLS
+ featuresSupport="metrics, prometheus, mtls, streammode"
/>
:::tip AppSec Support
diff --git a/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx b/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx
index fad14afff..69d1a30ff 100644
--- a/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx
+++ b/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx
@@ -3,6 +3,7 @@ id: windows_firewall
title: Windows Firewall
---
+import useBaseUrl from "@docusaurus/useBaseUrl"
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
import BouncerHeader from "@site/src/components/bouncer-header";
@@ -11,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Windows Firewall"
imgSrc="/img/cs-windows-firewall-bouncer-logo.png"
description="Interacts with the Windows Firewall to block IPs banned by CrowdSec."
- MTLS
+ featuresSupport="mtls, streammode"
/>
## Overview
diff --git a/crowdsec-docs/unversioned/bouncers/wordpress.mdx b/crowdsec-docs/unversioned/bouncers/wordpress.mdx
index 928876d5b..61a1e0ea7 100644
--- a/crowdsec-docs/unversioned/bouncers/wordpress.mdx
+++ b/crowdsec-docs/unversioned/bouncers/wordpress.mdx
@@ -3,6 +3,7 @@ id: wordpress
title: WordPress Plugin
---
+import useBaseUrl from "@docusaurus/useBaseUrl"
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import BouncerHeader from "@site/src/components/bouncer-header";
@@ -11,10 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="WordPress Plugin"
imgSrc="/img/crowdsec_wp.png"
description="Protects WordPress sites against malicious traffic using CrowdSec detection and blocklists."
- Mode
- MTLS
- Appsec
- Metrics
+ featuresSupport="livemode, streammode, mtls, appsec, metrics"
/>
## What can you do with this plugin?
From 8afb01207f0bd0d382f72ef67c0a683a0c76eee6 Mon Sep 17 00:00:00 2001
From: jdv
Date: Thu, 6 Aug 2026 18:48:27 +0200
Subject: [PATCH 03/13] overriding titles to avoid duplicaiton
---
crowdsec-docs/sidebarsUnversioned.ts | 52 +++++++++++++------
.../src/components/bouncer-header.tsx | 12 ++---
crowdsec-docs/unversioned/bouncers/apache.mdx | 2 +-
.../unversioned/bouncers/aws-waf.mdx | 2 +-
.../unversioned/bouncers/blocklist-mirror.mdx | 2 +-
.../unversioned/bouncers/cloudflare.mdx | 2 +
crowdsec-docs/unversioned/bouncers/custom.mdx | 2 +
crowdsec-docs/unversioned/bouncers/fastly.mdx | 3 +-
.../unversioned/bouncers/firewall.mdx | 2 +
.../unversioned/bouncers/haproxy.mdx | 2 +-
.../unversioned/bouncers/haproxy_spoa.mdx | 2 +-
.../unversioned/bouncers/ingress-nginx.mdx | 2 +
.../unversioned/bouncers/magento.mdx | 2 +-
.../bouncers/misp-feed-generator.mdx | 19 +++----
crowdsec-docs/unversioned/bouncers/nginx.mdx | 2 +
.../unversioned/bouncers/openresty.mdx | 2 +
.../unversioned/bouncers/php-lib.mdx | 1 +
crowdsec-docs/unversioned/bouncers/php.mdx | 1 +
.../unversioned/bouncers/stormshield.mdx | 1 +
.../unversioned/bouncers/traefik.mdx | 2 +
.../unversioned/bouncers/windows-firewall.mdx | 2 +
.../unversioned/bouncers/wordpress.mdx | 2 +
22 files changed, 78 insertions(+), 41 deletions(-)
diff --git a/crowdsec-docs/sidebarsUnversioned.ts b/crowdsec-docs/sidebarsUnversioned.ts
index fa512f02e..b542b5fe8 100644
--- a/crowdsec-docs/sidebarsUnversioned.ts
+++ b/crowdsec-docs/sidebarsUnversioned.ts
@@ -675,21 +675,11 @@ const sidebarsUnversionedConfig: SidebarConfig = {
label: "Firewall",
id: "bouncers/firewall",
},
- {
- type: "doc",
- label: "HAProxy",
- id: "bouncers/haproxy",
- },
{
type: "doc",
label: "HAProxy SPOA",
id: "bouncers/haproxy_spoa",
},
- {
- type: "doc",
- label: "Ingress Nginx",
- id: "bouncers/ingress-nginx",
- },
{
type: "doc",
label: "Magento 2",
@@ -735,16 +725,48 @@ const sidebarsUnversionedConfig: SidebarConfig = {
label: "Traefik (Kubernetes)",
id: "bouncers/traefik",
},
+ {
+ type: "html",
+ value: "
",
+ defaultStyle: false,
+ },
+ // ── More ──────────────────────────────────────────────────────────
+ {
+ type: "html",
+ value: "More",
+ defaultStyle: false,
+ },
{
type: "link",
label: "Third Party",
href: "https://app.crowdsec.net/hub/remediation-components",
},
- // {
- // "type": "doc",
- // "label": "Contributing",
- // "id": "bouncers/contributing/contributing_bouncers"
- // },
+ {
+ "type": "link",
+ "label": "Contributing",
+ "href": "/docs/next/contributing/contributing_bouncers"
+ },
+ {
+ type: "html",
+ value: "
",
+ defaultStyle: false,
+ },
+ // ── Deprecated ──────────────────────────────────────────────────────────
+ {
+ type: "html",
+ value: "Deprecated",
+ defaultStyle: false,
+ },
+ {
+ type: "doc",
+ label: "HAProxy",
+ id: "bouncers/haproxy",
+ },
+ {
+ type: "doc",
+ label: "Ingress Nginx",
+ id: "bouncers/ingress-nginx",
+ },
],
blocklistsSideBar: [
{
diff --git a/crowdsec-docs/src/components/bouncer-header.tsx b/crowdsec-docs/src/components/bouncer-header.tsx
index 120dc3ded..cea98b8f6 100644
--- a/crowdsec-docs/src/components/bouncer-header.tsx
+++ b/crowdsec-docs/src/components/bouncer-header.tsx
@@ -42,12 +42,6 @@ type FeatureBadgeDef = {
};
const BADGE_DEFS: Record = {
- waf: {
- label: "WAF",
- tooltip: "Supports Web Application Firewall (WAF) functionality",
- linkedFeatures: ["waf"] as FeatureKey[],
- displayText: (bouncerSupportedFeatures: Record) => (bouncerSupportedFeatures.waf ? FEATURE_DEFS.waf.displayText(true) : FEATURE_DEFS.waf.displayText(false)),
- },
updatemode: {
label: "UpdateMode",
tooltip: "Supported decisions update mode",
@@ -68,6 +62,12 @@ const BADGE_DEFS: Record = {
return modes.join(" | ");
},
},
+ waf: {
+ label: "WAF",
+ tooltip: "Supports Web Application Firewall (WAF) functionality",
+ linkedFeatures: ["waf"] as FeatureKey[],
+ displayText: (bouncerSupportedFeatures: Record) => (bouncerSupportedFeatures.waf ? FEATURE_DEFS.waf.displayText(true) : FEATURE_DEFS.waf.displayText(false)),
+ },
metrics: {
label: "Metrics",
tooltip: "Can send detailed metrics to LAPI",
diff --git a/crowdsec-docs/unversioned/bouncers/apache.mdx b/crowdsec-docs/unversioned/bouncers/apache.mdx
index aede859c3..3cd72fd11 100644
--- a/crowdsec-docs/unversioned/bouncers/apache.mdx
+++ b/crowdsec-docs/unversioned/bouncers/apache.mdx
@@ -15,7 +15,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="livemode"
/>
-# A Remediation Component for Apache.
+# Apache module to block IPs banned by CrowdSec
:::warning
diff --git a/crowdsec-docs/unversioned/bouncers/aws-waf.mdx b/crowdsec-docs/unversioned/bouncers/aws-waf.mdx
index 02799e9e4..6407cb855 100644
--- a/crowdsec-docs/unversioned/bouncers/aws-waf.mdx
+++ b/crowdsec-docs/unversioned/bouncers/aws-waf.mdx
@@ -14,7 +14,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
description="Automatically adds rules to AWS WAF ACLs and manages IPSets based on CrowdSec decisions."
featuresSupport="mtls,apimode"
/>
-
+# Update AWS WAF ACLs with CrowdSec decisions
## Overview
The `crowdsec-awf-waf-bouncer` automatically adds rules to an AWS WAF ACL and manages IPSets content to apply decisions taken by crowdsec.
diff --git a/crowdsec-docs/unversioned/bouncers/blocklist-mirror.mdx b/crowdsec-docs/unversioned/bouncers/blocklist-mirror.mdx
index 3758e46b7..c0ffd43d2 100644
--- a/crowdsec-docs/unversioned/bouncers/blocklist-mirror.mdx
+++ b/crowdsec-docs/unversioned/bouncers/blocklist-mirror.mdx
@@ -16,10 +16,10 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="mtls, prometheus, streammode"
/>
+# Expose CrowdSec decisions via HTTP(S) endpoints
This Remediation Component exposes CrowdSec's active decisions via provided HTTP(S) endpoints in pre-defined formats. It can be used by network appliances which support consumption of blocklists via HTTP.
-
## Installation from repositories
[Setup crowdsec repositories](/u/getting_started/installation/linux#repository-installation).
diff --git a/crowdsec-docs/unversioned/bouncers/cloudflare.mdx b/crowdsec-docs/unversioned/bouncers/cloudflare.mdx
index 5425fc4d0..2431c5289 100644
--- a/crowdsec-docs/unversioned/bouncers/cloudflare.mdx
+++ b/crowdsec-docs/unversioned/bouncers/cloudflare.mdx
@@ -16,6 +16,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="mtls, streammode, apimode"
/>
+# Apply CrowdSec decisions to your Cloudflare zones
+
:::tip
We recommend using the **Self-Hosted Installer** setup method for most users who want to connect a CrowdSec [Blocklist Integration Endpoint](/u/integrations/remediationcomponent) to Cloudflare without installing anything on their infrastructure. It is simpler to install and maintain.
For comparative details, see the [Setup Methods](#setup-methods) section below.
diff --git a/crowdsec-docs/unversioned/bouncers/custom.mdx b/crowdsec-docs/unversioned/bouncers/custom.mdx
index 8dfc21538..b5e82805d 100644
--- a/crowdsec-docs/unversioned/bouncers/custom.mdx
+++ b/crowdsec-docs/unversioned/bouncers/custom.mdx
@@ -15,6 +15,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="prometheus, streammode"
/>
+# Plug your own scripts to handle CrowdSec decisions
+
CrowdSec Remediation Component written to invoke custom scripts.
The crowdsec-custom-bouncer will periodically fetch new, expired and removed decisions from the CrowdSec Local API and will pass them as arguments to a custom user script.
diff --git a/crowdsec-docs/unversioned/bouncers/fastly.mdx b/crowdsec-docs/unversioned/bouncers/fastly.mdx
index 5ca737547..447100319 100644
--- a/crowdsec-docs/unversioned/bouncers/fastly.mdx
+++ b/crowdsec-docs/unversioned/bouncers/fastly.mdx
@@ -12,12 +12,11 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="mtls, apimode"
/>
-# Fastly bouncer
+# Apply CrowdSec decisions to your Fastly services
A Remediation Component that syncs the decisions made by CrowdSec with Fastly's VCL. Manages multi account, multi service setup. Supports IP, Range, Country and AS scoped decisions.
To learn how to set up crowdsec to consume Fastly logs see [this](/u/user_guides/consuming_fastly_logs)
-
## Installation
### Using pip
diff --git a/crowdsec-docs/unversioned/bouncers/firewall.mdx b/crowdsec-docs/unversioned/bouncers/firewall.mdx
index e82b5db4f..5424ff67f 100644
--- a/crowdsec-docs/unversioned/bouncers/firewall.mdx
+++ b/crowdsec-docs/unversioned/bouncers/firewall.mdx
@@ -15,6 +15,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="mtls, prometheus, metrics, streammode"
/>
+# Enforce CrowdSec bans at the Linux firewall level
+
CrowdSec Remediation Component written in golang for firewalls.
:::info When to Choose a Different Bouncer
diff --git a/crowdsec-docs/unversioned/bouncers/haproxy.mdx b/crowdsec-docs/unversioned/bouncers/haproxy.mdx
index 538643cb2..89e9ca95a 100644
--- a/crowdsec-docs/unversioned/bouncers/haproxy.mdx
+++ b/crowdsec-docs/unversioned/bouncers/haproxy.mdx
@@ -13,7 +13,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
description="Lua-based remediation component for HAProxy (legacy — stream mode only, no AppSec support)."
featuresSupport="streammode, !appsec"
/>
-
+#
:::danger
This bouncer isn't actively supported anymore.
diff --git a/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx b/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx
index af27ea6c6..6919239d2 100644
--- a/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx
+++ b/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx
@@ -14,7 +14,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="mtls, streammode, appsec, metrics, prometheus"
/>
-# A remediation component for HAProxy
+# A WAF ready HAProxy module to apply remediations from CrowdSec
:::warning
diff --git a/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx b/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx
index b83c9a058..9b210d7d2 100644
--- a/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx
+++ b/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx
@@ -15,6 +15,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="appsec, livemode, streammode, metrics, mtls"
/>
+#
+
:::danger Deprecated and not recommended
This CrowdSec integration for `ingress-nginx` is being deprecated. `ingress-nginx`
has known security issues, and upstream removed Lua support in version `1.12`,
diff --git a/crowdsec-docs/unversioned/bouncers/magento.mdx b/crowdsec-docs/unversioned/bouncers/magento.mdx
index 5bb0481f2..cba330406 100644
--- a/crowdsec-docs/unversioned/bouncers/magento.mdx
+++ b/crowdsec-docs/unversioned/bouncers/magento.mdx
@@ -15,7 +15,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
description="Magento 2 extension that protects stores against malicious traffic using CrowdSec."
featuresSupport="livemode, streammode, mtls"
/>
-
+# Magento 2 extension to protect your store against malicious traffic
## Introduction
The `CrowdSec Bouncer` extension for Magento 2 has been designed to protect Magento 2 websites from all kinds of attacks by using [CrowdSec](https://www.crowdsec.net/) technology.
diff --git a/crowdsec-docs/unversioned/bouncers/misp-feed-generator.mdx b/crowdsec-docs/unversioned/bouncers/misp-feed-generator.mdx
index 141ef6a7c..62bc06903 100644
--- a/crowdsec-docs/unversioned/bouncers/misp-feed-generator.mdx
+++ b/crowdsec-docs/unversioned/bouncers/misp-feed-generator.mdx
@@ -6,21 +6,16 @@ sidebar_position: 7
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
-import useBaseUrl from '@docusaurus/useBaseUrl';
-import RemediationSupportBadges from '@site/src/components/remediation-support-badge';
+import BouncerHeader from "@site/src/components/bouncer-header";
-
-
-
-
-
-
-
-
-
-
+# Generate a MISP Feed from CrowdSec decisions
+
This Remediation Component generates MISP Feed from CrowdSec decisions. It exposes this Feed over HTTP/S.
This can be used to feed CrowdSec decisions to MISP using the "Feeds" functionality of MISP.
diff --git a/crowdsec-docs/unversioned/bouncers/nginx.mdx b/crowdsec-docs/unversioned/bouncers/nginx.mdx
index fc7dc468b..cf8864210 100644
--- a/crowdsec-docs/unversioned/bouncers/nginx.mdx
+++ b/crowdsec-docs/unversioned/bouncers/nginx.mdx
@@ -15,6 +15,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="appsec, livemode, streammode, metrics, mtls"
/>
+# NGINX WAF ready module to apply remediations from CrowdSec
+
A lua Remediation Component for nginx.
:::tip Enable the WAF for optimal protection
diff --git a/crowdsec-docs/unversioned/bouncers/openresty.mdx b/crowdsec-docs/unversioned/bouncers/openresty.mdx
index 8b851e8b7..4cf77119c 100644
--- a/crowdsec-docs/unversioned/bouncers/openresty.mdx
+++ b/crowdsec-docs/unversioned/bouncers/openresty.mdx
@@ -15,6 +15,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="appsec, livemode, streammode, metrics, mtls"
/>
+# OpenResty WAF ready module to apply remediations from CrowdSec
+
A lua Remediation Component for OpenResty.
:::tip Enable the WAF for optimal protection
diff --git a/crowdsec-docs/unversioned/bouncers/php-lib.mdx b/crowdsec-docs/unversioned/bouncers/php-lib.mdx
index bba9e444f..592019edb 100644
--- a/crowdsec-docs/unversioned/bouncers/php-lib.mdx
+++ b/crowdsec-docs/unversioned/bouncers/php-lib.mdx
@@ -16,6 +16,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="livemode, streammode, mtls, appsec, metrics"
/>
+# PHP library to build your own CrowdSec bouncer
## Overview
This library allows you to create CrowdSec bouncers for PHP applications or frameworks like e-commerce, blog or other exposed applications.
diff --git a/crowdsec-docs/unversioned/bouncers/php.mdx b/crowdsec-docs/unversioned/bouncers/php.mdx
index 0637de5cc..53a8b6de2 100644
--- a/crowdsec-docs/unversioned/bouncers/php.mdx
+++ b/crowdsec-docs/unversioned/bouncers/php.mdx
@@ -16,6 +16,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="livemode, streammode, mtls, appsec, metrics"
/>
+# PHP Standalone Remediation Component to protect your legacy PHP applications
## Overview
This Remediation Component allows you to protect your PHP application from IPs that have been detected by CrowdSec. Depending on
diff --git a/crowdsec-docs/unversioned/bouncers/stormshield.mdx b/crowdsec-docs/unversioned/bouncers/stormshield.mdx
index b5f958f5b..298e0eba2 100644
--- a/crowdsec-docs/unversioned/bouncers/stormshield.mdx
+++ b/crowdsec-docs/unversioned/bouncers/stormshield.mdx
@@ -15,6 +15,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="mtls, apimode"
/>
+# Bridge to Stormshield network appliances to sync CrowdSec IP bans
## Overview
The Stormshield Remediation syncs IP bans from Crowdsec with Stormshield appliances.
diff --git a/crowdsec-docs/unversioned/bouncers/traefik.mdx b/crowdsec-docs/unversioned/bouncers/traefik.mdx
index 22b2cf4ef..50e4d4a4f 100644
--- a/crowdsec-docs/unversioned/bouncers/traefik.mdx
+++ b/crowdsec-docs/unversioned/bouncers/traefik.mdx
@@ -16,6 +16,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="metrics, prometheus, mtls, streammode"
/>
+# Traefik WAF ready middleware plugin for Kubernetes to block IPs via CrowdSec decisions
+
:::tip AppSec Support
This bouncer supports the [AppSec Component](/docs/next/appsec/intro) for
real-time WAF protection. Enable `crowdsecAppsecEnabled: true` in your
diff --git a/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx b/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx
index 69d1a30ff..77e12077e 100644
--- a/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx
+++ b/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx
@@ -15,6 +15,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="mtls, streammode"
/>
+# Windows Firewall Remediation Component to block IPs via CrowdSec decisions
+
## Overview
The Windows firewall Remediation Component interacts with the Windows Firewall to block IPs banned by CrowdSec.
diff --git a/crowdsec-docs/unversioned/bouncers/wordpress.mdx b/crowdsec-docs/unversioned/bouncers/wordpress.mdx
index 61a1e0ea7..5004eecb2 100644
--- a/crowdsec-docs/unversioned/bouncers/wordpress.mdx
+++ b/crowdsec-docs/unversioned/bouncers/wordpress.mdx
@@ -15,6 +15,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
featuresSupport="livemode, streammode, mtls, appsec, metrics"
/>
+# WordPress WAF ready plugin to protect your site against malicious traffic
+
## What can you do with this plugin?
The CrowdSec WordPress plugin enables you to protect your WordPress site against malicious traffic using CrowdSec's advanced threat detection and blocklist capabilities.
In this documentation, you'll find detailed instructions for these main use cases:
From e367daa0b456ed7990dfa83e239c39984ae751cb Mon Sep 17 00:00:00 2001
From: jdv
Date: Thu, 13 Aug 2026 10:54:17 +0200
Subject: [PATCH 04/13] fixing waf from appsec feature and some misconfigured
tags
---
.../src/components/bouncer-header.tsx | 17 ++---
.../components/remediation-support-badge.tsx | 67 -------------------
.../unversioned/bouncers/aws-waf.mdx | 2 +-
.../bouncers/cloudflare-deprecated.mdx | 11 +--
crowdsec-docs/unversioned/bouncers/envoy.mdx | 4 +-
crowdsec-docs/unversioned/bouncers/fastly.mdx | 2 +-
.../unversioned/bouncers/haproxy.mdx | 2 +-
.../unversioned/bouncers/haproxy_spoa.mdx | 2 +-
.../unversioned/bouncers/ingress-nginx.mdx | 2 +-
.../bouncers/misp-feed-generator.mdx | 1 +
crowdsec-docs/unversioned/bouncers/nginx.mdx | 2 +-
.../unversioned/bouncers/openresty.mdx | 2 +-
.../unversioned/bouncers/php-lib.mdx | 2 +-
crowdsec-docs/unversioned/bouncers/php.mdx | 2 +-
.../unversioned/bouncers/stormshield.mdx | 2 +-
.../unversioned/bouncers/traefik.mdx | 4 +-
.../unversioned/bouncers/windows-firewall.mdx | 2 +-
.../unversioned/bouncers/wordpress.mdx | 2 +-
18 files changed, 28 insertions(+), 100 deletions(-)
delete mode 100644 crowdsec-docs/src/components/remediation-support-badge.tsx
diff --git a/crowdsec-docs/src/components/bouncer-header.tsx b/crowdsec-docs/src/components/bouncer-header.tsx
index cea98b8f6..a8f2c8ecc 100644
--- a/crowdsec-docs/src/components/bouncer-header.tsx
+++ b/crowdsec-docs/src/components/bouncer-header.tsx
@@ -18,7 +18,7 @@ type BouncerHeaderProps = {
featuresSupport?: string;
};
-type FeatureKey = "waf" | "mtls" | "metrics" | "prometheus" | "livemode" | "streammode" | "apimode";
+type FeatureKey = "waf" | "mtls" | "metrics" | "prometheus" | "livemode" | "streammode";
type BadgeKey = "waf" | "metrics" | "mtls" | "prometheus" | "updatemode";
type FeatureDef = {
@@ -43,9 +43,9 @@ type FeatureBadgeDef = {
const BADGE_DEFS: Record = {
updatemode: {
- label: "UpdateMode",
+ label: "Update Mode",
tooltip: "Supported decisions update mode",
- linkedFeatures: ["livemode", "streammode", "apimode"] as FeatureKey[],
+ linkedFeatures: ["livemode", "streammode"] as FeatureKey[],
displayText: (bouncerSupportedFeatures: Record) => {
//aggregate the display text of linked features separated by "|" , if they are present only
let modes: string[] = [];
@@ -55,10 +55,7 @@ const BADGE_DEFS: Record = {
if (bouncerSupportedFeatures.streammode) {
modes.push(FEATURE_DEFS.streammode.displayText(true));
}
- if (bouncerSupportedFeatures.apimode) {
- modes.push(FEATURE_DEFS.apimode.displayText(true));
- }
-
+
return modes.join(" | ");
},
},
@@ -94,7 +91,7 @@ const FEATURE_DEFS: Record = {
displayText: (supported: boolean) => (supported ? "Supported" : "Unsupported"),
},
metrics: {
- label: "Metrics",
+ label: "Remediation Metrics",
displayText: (supported: boolean) => (supported ? "Supported" : "Unsupported"),
},
mtls: {
@@ -115,10 +112,6 @@ const FEATURE_DEFS: Record = {
label: "Stream Mode",
displayText: (supported: boolean) => "Stream",
},
- apimode: {
- label: "API Mode",
- displayText: (supported: boolean) => "API",
- },
};
// ----- Update Mode composite logic -----
diff --git a/crowdsec-docs/src/components/remediation-support-badge.tsx b/crowdsec-docs/src/components/remediation-support-badge.tsx
deleted file mode 100644
index e3f122615..000000000
--- a/crowdsec-docs/src/components/remediation-support-badge.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import { ToolTipArrow, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@site/src/ui/tooltip";
-import { clsx } from "clsx";
-import React from "react";
-
-type RemediationSupportBadgesProps = {
- Prometheus: boolean; // Prometheus is a boolean that controls the color of the Prometheus bubble
- MTLS: boolean; // MTLS is a boolean that controls the color of the MTLS bubble
- Mode: boolean; // Mode is a boolean that controls the color of the Mode bubble
- Metrics: boolean; // Metrics is a boolean that controls the color of the Metrics bubble
- Appsec?: boolean; // Appsec is a boolean that controls the color of the AppSec bubble
-};
-
-const RemediationSupportBadge = ({ title, description, support }: { title: string; description: string; support: string }) => {
- const isSupported = support !== "Unsupported";
- const statusClasses = isSupported ? "bg-emerald-700 dark:bg-emerald-600 text-white" : "bg-red-700 dark:bg-red-500 text-white";
-
- return (
-
-
-
-
- {title}
- {support}
-
-
-
- {description}
-
-
-
-
- );
-};
-
-export default function RemediationSupportBadges({
- MTLS,
- Metrics,
- Prometheus,
- Mode,
- Appsec,
-}: Readonly): React.JSX.Element {
- const mtlsSupport = MTLS ? "Supported" : "Unsupported";
- const metricsSupport = Metrics ? "Supported" : "Unsupported";
- const prometheusSupport = Prometheus ? "Supported" : "Unsupported";
- const modeSupport = Mode ? "Live & Stream" : "Stream only";
- const appsecSupport = Appsec !== undefined && Appsec ? "Supported" : "Unsupported";
-
- return (
-
- {Appsec !== undefined && (
-
- )}
-
-
-
-
-
- );
-}
diff --git a/crowdsec-docs/unversioned/bouncers/aws-waf.mdx b/crowdsec-docs/unversioned/bouncers/aws-waf.mdx
index 6407cb855..7bb8799fb 100644
--- a/crowdsec-docs/unversioned/bouncers/aws-waf.mdx
+++ b/crowdsec-docs/unversioned/bouncers/aws-waf.mdx
@@ -12,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="AWS WAF"
imgSrc="/img/aws-waf-bouncer-logo.png"
description="Automatically adds rules to AWS WAF ACLs and manages IPSets based on CrowdSec decisions."
- featuresSupport="mtls,apimode"
+ featuresSupport="mtls,streammode"
/>
# Update AWS WAF ACLs with CrowdSec decisions
## Overview
diff --git a/crowdsec-docs/unversioned/bouncers/cloudflare-deprecated.mdx b/crowdsec-docs/unversioned/bouncers/cloudflare-deprecated.mdx
index 0a81f6d08..2240102ec 100644
--- a/crowdsec-docs/unversioned/bouncers/cloudflare-deprecated.mdx
+++ b/crowdsec-docs/unversioned/bouncers/cloudflare-deprecated.mdx
@@ -6,8 +6,7 @@ title: Cloudflare DEPRECATED BOUNCER
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import useBaseUrl from '@docusaurus/useBaseUrl';
-import RemediationSupportBadges from '@site/src/components/remediation-support-badge';
-
+import BouncerHeader from "@site/src/components/bouncer-header";
@@ -18,9 +17,11 @@ import RemediationSupportBadges from '@site/src/components/remediation-support-b
-
:::danger
diff --git a/crowdsec-docs/unversioned/bouncers/envoy.mdx b/crowdsec-docs/unversioned/bouncers/envoy.mdx
index a337555cf..fb38ad795 100644
--- a/crowdsec-docs/unversioned/bouncers/envoy.mdx
+++ b/crowdsec-docs/unversioned/bouncers/envoy.mdx
@@ -10,8 +10,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
# CrowdSec Remediation QuickStart for Envoy Gateway
diff --git a/crowdsec-docs/unversioned/bouncers/fastly.mdx b/crowdsec-docs/unversioned/bouncers/fastly.mdx
index 447100319..7029f033a 100644
--- a/crowdsec-docs/unversioned/bouncers/fastly.mdx
+++ b/crowdsec-docs/unversioned/bouncers/fastly.mdx
@@ -9,7 +9,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Fastly"
imgSrc="/img/crowdsec_fastly.png"
description="Syncs CrowdSec decisions with Fastly's VCL. Supports IP, Range, Country and AS scoped decisions."
- featuresSupport="mtls, apimode"
+ featuresSupport="mtls, streammode"
/>
# Apply CrowdSec decisions to your Fastly services
diff --git a/crowdsec-docs/unversioned/bouncers/haproxy.mdx b/crowdsec-docs/unversioned/bouncers/haproxy.mdx
index 89e9ca95a..2d5afa939 100644
--- a/crowdsec-docs/unversioned/bouncers/haproxy.mdx
+++ b/crowdsec-docs/unversioned/bouncers/haproxy.mdx
@@ -11,7 +11,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="HAProxy"
imgSrc="/img/crowdsec_haproxy.svg"
description="Lua-based remediation component for HAProxy (legacy — stream mode only, no AppSec support)."
- featuresSupport="streammode, !appsec"
+ featuresSupport="streammode"
/>
#
:::danger
diff --git a/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx b/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx
index 6919239d2..c32e3383d 100644
--- a/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx
+++ b/crowdsec-docs/unversioned/bouncers/haproxy_spoa.mdx
@@ -11,7 +11,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="HAProxy SPOA"
imgSrc="/img/crowdsec_haproxy.svg"
description="Go-based SPOA bouncer for HAProxy with AppSec (WAF) support — the recommended HAProxy integration."
- featuresSupport="mtls, streammode, appsec, metrics, prometheus"
+ featuresSupport="mtls, streammode, metrics, prometheus, waf"
/>
# A WAF ready HAProxy module to apply remediations from CrowdSec
diff --git a/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx b/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx
index 9b210d7d2..997e27a74 100644
--- a/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx
+++ b/crowdsec-docs/unversioned/bouncers/ingress-nginx.mdx
@@ -12,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Ingress Nginx"
imgSrc="/img/crowdsec_nginx.svg"
description="CrowdSec integration for ingress-nginx (deprecated — Lua support removed in v1.12)."
- featuresSupport="appsec, livemode, streammode, metrics, mtls"
+ featuresSupport="livemode, streammode, metrics, mtls, waf"
/>
#
diff --git a/crowdsec-docs/unversioned/bouncers/misp-feed-generator.mdx b/crowdsec-docs/unversioned/bouncers/misp-feed-generator.mdx
index 62bc06903..a65510911 100644
--- a/crowdsec-docs/unversioned/bouncers/misp-feed-generator.mdx
+++ b/crowdsec-docs/unversioned/bouncers/misp-feed-generator.mdx
@@ -12,6 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="MISP Feed Generator"
imgSrc="/img/bouncer/misp_feed_generator/logo.png"
description="Generates a MISP Feed from CrowdSec decisions and exposes it over HTTP/S."
+ featuresSupport="streammode, mtls"
/>
# Generate a MISP Feed from CrowdSec decisions
diff --git a/crowdsec-docs/unversioned/bouncers/nginx.mdx b/crowdsec-docs/unversioned/bouncers/nginx.mdx
index cf8864210..2ec51dffc 100644
--- a/crowdsec-docs/unversioned/bouncers/nginx.mdx
+++ b/crowdsec-docs/unversioned/bouncers/nginx.mdx
@@ -12,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Nginx"
imgSrc="/img/crowdsec_nginx.svg"
description="Lua-based reverse-proxy bouncer with live & stream remediation and built-in AppSec (WAF) support."
- featuresSupport="appsec, livemode, streammode, metrics, mtls"
+ featuresSupport="waf, livemode, streammode, metrics, mtls"
/>
# NGINX WAF ready module to apply remediations from CrowdSec
diff --git a/crowdsec-docs/unversioned/bouncers/openresty.mdx b/crowdsec-docs/unversioned/bouncers/openresty.mdx
index 4cf77119c..59a15d85a 100644
--- a/crowdsec-docs/unversioned/bouncers/openresty.mdx
+++ b/crowdsec-docs/unversioned/bouncers/openresty.mdx
@@ -12,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="OpenResty"
imgSrc="/img/openresty.svg"
description="Lua-based reverse-proxy bouncer for OpenResty with live & stream remediation and AppSec (WAF) support."
- featuresSupport="appsec, livemode, streammode, metrics, mtls"
+ featuresSupport="waf, livemode, streammode, metrics, mtls"
/>
# OpenResty WAF ready module to apply remediations from CrowdSec
diff --git a/crowdsec-docs/unversioned/bouncers/php-lib.mdx b/crowdsec-docs/unversioned/bouncers/php-lib.mdx
index 592019edb..944ec9c88 100644
--- a/crowdsec-docs/unversioned/bouncers/php-lib.mdx
+++ b/crowdsec-docs/unversioned/bouncers/php-lib.mdx
@@ -13,7 +13,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="PHP Remediation Library"
imgSrc="/img/crowdsec_bouncer_php.png"
description="PHP library for building custom CrowdSec bouncers with live & stream mode and AppSec support."
- featuresSupport="livemode, streammode, mtls, appsec, metrics"
+ featuresSupport="livemode, streammode, mtls, waf, metrics"
/>
# PHP library to build your own CrowdSec bouncer
diff --git a/crowdsec-docs/unversioned/bouncers/php.mdx b/crowdsec-docs/unversioned/bouncers/php.mdx
index 53a8b6de2..eb1eef26c 100644
--- a/crowdsec-docs/unversioned/bouncers/php.mdx
+++ b/crowdsec-docs/unversioned/bouncers/php.mdx
@@ -13,7 +13,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="PHP Standalone"
imgSrc="/img/crowdsec_bouncer_php.png"
description="PHP-based standalone remediation component with live & stream mode and AppSec support."
- featuresSupport="livemode, streammode, mtls, appsec, metrics"
+ featuresSupport="livemode, streammode, mtls, waf, metrics"
/>
# PHP Standalone Remediation Component to protect your legacy PHP applications
diff --git a/crowdsec-docs/unversioned/bouncers/stormshield.mdx b/crowdsec-docs/unversioned/bouncers/stormshield.mdx
index 298e0eba2..209ca52b3 100644
--- a/crowdsec-docs/unversioned/bouncers/stormshield.mdx
+++ b/crowdsec-docs/unversioned/bouncers/stormshield.mdx
@@ -12,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Stormshield"
imgSrc="/img/bouncer/stormshield/logo.png"
description="Syncs IP bans from CrowdSec with Stormshield network appliances."
- featuresSupport="mtls, apimode"
+ featuresSupport="mtls, streammode"
/>
# Bridge to Stormshield network appliances to sync CrowdSec IP bans
diff --git a/crowdsec-docs/unversioned/bouncers/traefik.mdx b/crowdsec-docs/unversioned/bouncers/traefik.mdx
index 50e4d4a4f..298d7b247 100644
--- a/crowdsec-docs/unversioned/bouncers/traefik.mdx
+++ b/crowdsec-docs/unversioned/bouncers/traefik.mdx
@@ -12,8 +12,8 @@ import BouncerHeader from "@site/src/components/bouncer-header";
# Traefik WAF ready middleware plugin for Kubernetes to block IPs via CrowdSec decisions
diff --git a/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx b/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx
index 77e12077e..f24c8c2cb 100644
--- a/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx
+++ b/crowdsec-docs/unversioned/bouncers/windows-firewall.mdx
@@ -12,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="Windows Firewall"
imgSrc="/img/cs-windows-firewall-bouncer-logo.png"
description="Interacts with the Windows Firewall to block IPs banned by CrowdSec."
- featuresSupport="mtls, streammode"
+ featuresSupport="mtls, streammode, prometheus"
/>
# Windows Firewall Remediation Component to block IPs via CrowdSec decisions
diff --git a/crowdsec-docs/unversioned/bouncers/wordpress.mdx b/crowdsec-docs/unversioned/bouncers/wordpress.mdx
index 5004eecb2..e66116fd3 100644
--- a/crowdsec-docs/unversioned/bouncers/wordpress.mdx
+++ b/crowdsec-docs/unversioned/bouncers/wordpress.mdx
@@ -12,7 +12,7 @@ import BouncerHeader from "@site/src/components/bouncer-header";
title="WordPress Plugin"
imgSrc="/img/crowdsec_wp.png"
description="Protects WordPress sites against malicious traffic using CrowdSec detection and blocklists."
- featuresSupport="livemode, streammode, mtls, appsec, metrics"
+ featuresSupport="livemode, streammode, mtls, waf, metrics"
/>
# WordPress WAF ready plugin to protect your site against malicious traffic
From c36e196b345b16bba7b571284a62fb4ef69320bf Mon Sep 17 00:00:00 2001
From: jdv
Date: Thu, 13 Aug 2026 17:39:45 +0200
Subject: [PATCH 05/13] fix cropped tooltip
---
crowdsec-docs/src/components/bouncer-header.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/crowdsec-docs/src/components/bouncer-header.tsx b/crowdsec-docs/src/components/bouncer-header.tsx
index a8f2c8ecc..c9de3763d 100644
--- a/crowdsec-docs/src/components/bouncer-header.tsx
+++ b/crowdsec-docs/src/components/bouncer-header.tsx
@@ -150,7 +150,7 @@ const SupportBadge = ({
{displayText}
-