mrkeyoor.com_
Thu 03 Sept 17:49 UTC
Self-Hostedevaluationupdated 03 Sept 2026

crowdsec review

CrowdSec is a self-hosted security engine that reads server logs and HTTP requests, turns suspicious behavior into decisions, and can share signals with a central threat network. Separate remediation components apply those decisions at a firewall, reverse proxy, or application, so installing the engine alone does not block an attack.

trackingstars / 7d
Verdict

Our CrowdSec run installed 459 Go packages and built successfully, but 18 of 84 package tests failed after 478 seconds, so source adopters should reproduce the suite before trusting commit 909b515. Use CrowdSec when log-driven IP defense, WAF integration, and shared threat signals justify operating an engine plus remediators. Choose a narrower tool for one host, or Wazuh when endpoint security is the actual requirement.

We ran it

Lab card: what happened when we ran crowdsecScreenshot of crowdsec (crowdsec.net)
Install✓ · 72s459 packages
Build✓ · 250s
Tests✗ · 478s66 passed · 18 failed of 84 (go test)
Repo2293 files~196,781 lines of source · 14.9 MB · 19 CI workflows · tests dir

Answers from our run

Does crowdsec build from source?

Dependencies installed in 72 seconds (459 packages), and the build succeeded in 250 seconds. We cloned commit 909b515 into a clean Debian container with 3 CPUs and no project-specific setup.

Do crowdsec's tests pass?

Not all of them: 66 of 84 passed and 18 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use crowdsec?

Teams expecting the Security Engine package to block traffic by itself: the Linux guide says it installs detection, and blocking needs a separate remediation component.

What are the alternatives to crowdsec?

Fail2Ban, Wazuh, Suricata. Our CrowdSec run installed 459 Go packages and built successfully, but 18 of 84 package tests failed after 478 seconds, so source adopters should reproduce the suite before trusting commit 909b515.

Setup3/5Build passed, but protection needs logs, a bouncer, and API wiring
Docs4/5Deep platform guides; the root README is only an overview
Community4/514,741 stars and a same-day release, with 293 issues and PRs
Maturity4/5v1.8.1 is active, but 18 of 84 package tests failed here

Who it’s for

Operations teams protecting public servers whose SSH, web, proxy, or application logs CrowdSec can parse.
Self-hosters who want local behavior detection plus a community-maintained malicious-IP list and accept the documented metadata exchange.
Platform teams prepared to pair one Local API with log processors and remediation components across several machines.
Web operators using a supported reverse proxy who want WAF rules and IP decisions managed from the same engine.

Who it’s NOT for

Teams expecting the Security Engine package to block traffic by itself: the Linux guide says it installs detection, and blocking needs a separate remediation component.
Operators who will neither contribute eligible signals nor pay, but expect the full blocklist: the v1.8 docs cap the free Lite list at 3,000 IPs while regular contributors receive 15,000.
Sites whose strict Content-Security-Policy cannot change for a challenge page: open issue 4646 reports that AppSec bot detection fails to load under that setup.
NPMPlus and Immich operators who must pass uploads above 1 GB through AppSec today: open issue 4636 reports a Lua memory error on that path.
Buyers looking for endpoint malware scanning, file-integrity monitoring, or vulnerability inventory: CrowdSec documents log and HTTP behavior detection, not those endpoint functions.

Setup reality

Our commit 909b515 run installed 459 packages in 72 seconds and built in 250 seconds. Tests failed after 478 seconds: 66 passed and 18 failed out of 84 Go package tests. The supplied log tail names TestFailWithoutExprDebug under pkg/exprhelpers, then ends with FAIL; it does not show a cause.

A deployed system needs acquisition files or detected log sources, matching Hub collections, the Local API, and at least one remediation component for blocking. Manually installed remediators need an API key. Community lists need Central API connectivity; Console enrollment and extra blocklists are separate choices.

The engine supports host, container, appliance, and Kubernetes layouts, but each changes log access and enforcement. AppSec needs a compatible proxy, request forwarding, rules, an enabled data source, and a restart. Multi-server setups add credentials and network exposure for the Local API. The repository had 2,293 files, about 196,781 source lines, and no Dockerfile despite documented Docker distribution paths.

CrowdSec v1.8.1 needs a separate enforcement component

CrowdSec v1.8.1 reads defined log sources, normalizes events, evaluates behavior against scenarios, and stores alerts and decisions in a Local API. Remediation components, still called bouncers in parts of the tooling, fetch those decisions and enforce them through a firewall, reverse proxy, cloud edge, or application. The split is the central buying fact. The engine can detect a brute-force pattern while traffic keeps flowing if no suitable remediator is installed and connected.

The documented defaults bind the API to port 8080/tcp and Prometheus metrics to 6060/tcp on loopback. Hub collections package parsers, scenarios, and enrichers for particular services. Since version 1.7.0, setup can detect running services and choose likely collections and acquisition files. Operators still need to verify that expected sources appear and that their lines are being parsed.

What happened when we ran it

Our sandbox installed 459 Go packages in 72 seconds at commit 909b515, then completed the build in 250 seconds. The test command ran for 478 seconds and exited 1: 66 packages passed and 18 failed out of 84. The fresh Debian container had 3 CPUs, 8 GB of RAM, no secrets, and the golang:1.24-bookworm image. Source compilation worked, but the complete test gate did not.

The supplied log tail shows several packages passing, followed by TestFailWithoutExprDebug failing in pkg/exprhelpers and the suite ending with FAIL. It has no assertion message and does not identify the causes of the other 17 failures. The checkout contained 2,293 files, roughly 196,781 source lines, and 14.9 MB. We counted 19 CI workflow files and a tests directory, with no Dockerfile.

Log acquisition and a bouncer make blocking real

In v1.8.1, package installation is only the first part of a working defense. CrowdSec needs access to service logs, a parser that understands them, and scenarios that turn repeated behavior into decisions. Acquisition metrics show lines read, parsed, unparsed, and whitelisted for each source. An empty or incomplete table is a configuration problem even when the daemon is healthy.

Enforcement adds another process and credential. A manually installed remediation component needs an API key generated by cscli; packaged installers may create it when the component shares a machine with the Local API. CrowdSec's health check separately verifies detection, network connectivity, and remediation. That is useful guidance for custom proxy paths, container log mounts, and distributed installations.

Free blocklists trade wider coverage for eligible signal sharing

The v1.8 docs say regular free contributors receive a Community Blocklist of 15,000 malicious IPs, while free non-contributors receive a Lite list capped at 3,000. Paying users receive the Premium list without contributing. Lists are tailored to scenarios on each engine. Custom or modified scenarios still work locally, but their signals do not count toward contribution because the central service cannot verify them against an official Hub hash.

Unless an operator opts out, the Central API receives the scenario name, its hash and version, the decision timestamp, machine ID, and offending IP with location data when available. Console metrics include deployed engine and remediator names and versions. Organizations with strict data policies should review that exchange and decide whether the smaller Lite list or a paid plan changes the value.

AppSec v1.8 has live edge cases around CSP and large uploads

AppSec in v1.8 forwards an HTTP request from a supported server or proxy to the Security Engine. In-band rules can return a ban or challenge for the current request; asynchronous rules can create later decisions from repeated behavior. Rule files alone do nothing. The docs also require an AppSec acquisition source, a restart, and a remediator that forwards requests to the same listening address.

Two open reports deserve a preproduction test. Issue 4646 describes bot detection on v1.8.0 failing to load when a front Nginx server already sends a strict Content-Security-Policy; its workaround changes the proxy path. Issue 4636 describes uploads above 1 GB failing with a Lua memory error in an NPMPlus and Immich setup on v1.7.8, even after body inspection was disabled for that route. Each report names a specific topology rather than proving a general failure.

One Local API can coordinate several hosts from v1.6.4

Since v1.6.4, remediation components on different machines can share one API key. Log processors register with a central Local API, which applies profiles and exchanges data with the Central API. The guide supports password credentials or TLS authentication and warns that a processor can submit alerts capable of locking out users. Exposing port 8080 beyond loopback therefore calls for tight network ranges and protected credentials.

Log processors do not share events with each other. If a load balancer spreads one attack across several servers, each processor sees only its portion and may take longer to reach a scenario threshold. CrowdSec recommends central logging with one processor for that case. Installing a processor everywhere does not make its local event windows combine automatically.

September 2026 activity is high, and so is issue volume

GitHub showed 14,741 stars, 221 open issues, and 72 open pull requests when we fetched CrowdSec on September 3, 2026. The repository was pushed that day. Version 1.8.0 shipped on August 31, followed by v1.8.1 on September 3 with a fix for a Brave Browser bot-detection false positive. The 293-item combined queue makes it sensible to search for an exact proxy, database, and remediator before rollout.

CrowdSec suits operators who need shared intelligence and more deployment choices than Fail2Ban provides. The successful source build and current release cadence are encouraging; our 18 failing package tests prevent an unconditional recommendation for commit 909b515. Trial the actual log sources and enforcement path, inspect Central API policy, and run the documented health checks. Suricata is the packet-level choice, while Wazuh covers endpoint functions CrowdSec does not claim.

Alternatives

ProjectWhat it isPick it when
Fail2BanA smaller log watcher that bans repeated authentication failures through firewall rules.pick this instead when one Linux host and a few straightforward log-based jails are the whole job.
WazuhAn agent-based security platform covering endpoint telemetry, file changes, vulnerabilities, and log analysis.pick this instead when endpoint monitoring and a SIEM-style management layer matter more than shared IP reputation.
SuricataA network IDS, IPS, and security-monitoring engine built around packet inspection.pick this instead when network traffic inspection and packet rules are the primary requirement.

What people are saying

  1. [github-trending] crowdsecurity/crowdsec

Sources

  1. CrowdSec repository and README
  2. CrowdSec v1.8.1 release notes
  3. CrowdSec Security Engine introduction
  4. CrowdSec remediation component guide
  5. CrowdSec Central API and Community Blocklist
  6. Issue 4646: AppSec bot detection and strict CSP
  7. Issue 4636: AppSec and uploads above 1 GB
  8. CrowdSec open issues and pull requests

More self-hosted reviews

limusic · xbmc · owncast · gogs · kopia · openreplay · the whole board →