[GH-ISSUE #5537] Crowdsec integration #10732

Closed
opened 2026-08-05 01:27:05 -04:00 by saavagebueno · 15 comments
Owner

Originally created by @BLACK4585 on GitHub (Mar 7, 2026).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/5537

Is your feature request related to a problem? Please describe.
I currently use Crowdsec in my setup and seeing how much crab it block I don't want to miss it anymore.

Describe the solution you'd like
You could offer to install Crowdsec too when installing NB with all the required components like bouncers, configs etc.
Being then able to enable Crowdsec by default for all resources and manually toggling them per site would be great.

Describe alternatives you've considered
Use Caddy as my reverse proxy.

Originally created by @BLACK4585 on GitHub (Mar 7, 2026). Original GitHub issue: https://github.com/netbirdio/netbird/issues/5537 **Is your feature request related to a problem? Please describe.** I currently use Crowdsec in my setup and seeing how much crab it block I don't want to miss it anymore. **Describe the solution you'd like** You could offer to install Crowdsec too when installing NB with all the required components like bouncers, configs etc. Being then able to enable Crowdsec by default for all resources and manually toggling them per site would be great. **Describe alternatives you've considered** Use Caddy as my reverse proxy.
saavagebueno added the feature-request label 2026-08-05 01:27:05 -04:00
Author
Owner

@rgareh commented on GitHub (Mar 7, 2026):

Seconding this strongly, and I can add some technical detail about what it actually takes to get CrowdSec working with a NetBird self-hosted stack, because it's non-trivial and I think that case strengthens the argument for official support.

I've done this integration and here's what the path looks like today:

Parser compatibility. The stock CrowdSec traefik-logs parser doesn't handle Traefik's h2c:// gRPC backend URL format, which NetBird uses extensively for its management and signal services. Log lines from these requests fail silently - no parse, no signal, no detection. A custom parser override is required to handle this pattern. This alone is a meaningful barrier for anyone not already deep in CrowdSec internals.

Docker log acquisition. CrowdSec's Docker acquisition requires the correct program label on log lines for parser filtering to work. This isn't documented in either project's getting-started material.

LAPI network binding. CrowdSec binds its LAPI to 127.0.0.1:8080 by default. The Traefik bouncer plugin runs inside Docker and can't reach that. You need to rebind to 0.0.0.0:8080 and add an iptables rule to allow the Docker network through.

Bouncer plugin install. The crowdsec-bouncer-traefik-plugin must be declared in Traefik's experimental plugins block, which means modifying the static config... another undocumented integration point.

Getting all of this right is probably 3–4 hours for someone already familiar with CrowdSec, Traefik, and Docker networking. For anyone newer to one of those pieces, significantly longer.

The solution @BLACK4585 describes, offering CrowdSec as part of the install with bouncers and config pre-wired, is exactly right. An optional flag on getting-started.sh (e.g. --with-crowdsec) that handles the above would make this accessible to the whole self-hosted community rather than just people willing to debug their way through it.

I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort.

<!-- gh-comment-id:4017431278 --> @rgareh commented on GitHub (Mar 7, 2026): Seconding this strongly, and I can add some technical detail about what it actually takes to get CrowdSec working with a NetBird self-hosted stack, because it's non-trivial and I think that case strengthens the argument for official support. I've done this integration and here's what the path looks like today: **Parser compatibility.** The stock CrowdSec `traefik-logs` parser doesn't handle Traefik's `h2c://` gRPC backend URL format, which NetBird uses extensively for its management and signal services. Log lines from these requests fail silently - no parse, no signal, no detection. A custom parser override is required to handle this pattern. This alone is a meaningful barrier for anyone not already deep in CrowdSec internals. **Docker log acquisition.** CrowdSec's Docker acquisition requires the correct `program` label on log lines for parser filtering to work. This isn't documented in either project's getting-started material. **LAPI network binding.** CrowdSec binds its LAPI to `127.0.0.1:8080` by default. The Traefik bouncer plugin runs inside Docker and can't reach that. You need to rebind to `0.0.0.0:8080` and add an iptables rule to allow the Docker network through. **Bouncer plugin install.** The `crowdsec-bouncer-traefik-plugin` must be declared in Traefik's experimental plugins block, which means modifying the static config... another undocumented integration point. Getting all of this right is probably 3–4 hours for someone already familiar with CrowdSec, Traefik, and Docker networking. For anyone newer to one of those pieces, significantly longer. The solution @BLACK4585 describes, offering CrowdSec as part of the install with bouncers and config pre-wired, is exactly right. An optional flag on `getting-started.sh` (e.g. `--with-crowdsec`) that handles the above would make this accessible to the whole self-hosted community rather than just people willing to debug their way through it. I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort.
Author
Owner

@Nilox42 commented on GitHub (Mar 10, 2026):

I Second this strongly too.
Crowdsec would be a extremly good feature.
Securing the entry to a private network is very improtant.
Currently netbird is circumwaying many security features as its a vpn so for example an intrusion detection system on the router or firewall cant catch any bad packages. So the burden of security falls on the entry node or the peer itself. I think the entry is the best point to have strong security and crowdsec is a very easy way to get better security.

<!-- gh-comment-id:4029401881 --> @Nilox42 commented on GitHub (Mar 10, 2026): I Second this strongly too. Crowdsec would be a extremly good feature. Securing the entry to a private network is very improtant. Currently netbird is circumwaying many security features as its a vpn so for example an intrusion detection system on the router or firewall cant catch any bad packages. So the burden of security falls on the entry node or the peer itself. I think the entry is the best point to have strong security and crowdsec is a very easy way to get better security.
Author
Owner

@MeenachiSundaram commented on GitHub (Mar 10, 2026):

I’m new to NB and this is blocking me to move from Pangolin to NB.
Please get this feature part of NB setup just like pangolin does.

<!-- gh-comment-id:4035116908 --> @MeenachiSundaram commented on GitHub (Mar 10, 2026): I’m new to NB and this is blocking me to move from Pangolin to NB. Please get this feature part of NB setup just like pangolin does.
Author
Owner

@lochinbr commented on GitHub (Mar 11, 2026):

Yes, I agree that integrating CrowdSec with Netbird would be an excellent solution. Since both are open-source projects, this integration could significantly enhance security by providing multiple layers of protection.

<!-- gh-comment-id:4043543803 --> @lochinbr commented on GitHub (Mar 11, 2026): Yes, I agree that integrating CrowdSec with Netbird would be an excellent solution. Since both are open-source projects, this integration could significantly enhance security by providing multiple layers of protection.
Author
Owner

@kleuveld commented on GitHub (Mar 13, 2026):

Getting all of this right is probably 3–4 hours for someone already familiar with CrowdSec, Traefik, and Docker networking. For anyone newer to one of those pieces, significantly longer.

The solution @BLACK4585 describes, offering CrowdSec as part of the install with bouncers and config pre-wired, is exactly right. An optional flag on getting-started.sh (e.g. --with-crowdsec) that handles the above would make this accessible to the whole self-hosted community rather than just people willing to debug their way through it.

I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort.

While having it done in the installer would be great, having a good doc describing the steps to get it working would probably already help a lot of folks out. And a guide may be easier to contribute to as well.

<!-- gh-comment-id:4055722138 --> @kleuveld commented on GitHub (Mar 13, 2026): > Getting all of this right is probably 3–4 hours for someone already familiar with CrowdSec, Traefik, and Docker networking. For anyone newer to one of those pieces, significantly longer. > > The solution [@BLACK4585](https://github.com/BLACK4585) describes, offering CrowdSec as part of the install with bouncers and config pre-wired, is exactly right. An optional flag on `getting-started.sh` (e.g. `--with-crowdsec`) that handles the above would make this accessible to the whole self-hosted community rather than just people willing to debug their way through it. > > I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort. While having it done in the installer would be great, having a good doc describing the steps to get it working would probably already help a lot of folks out. And a guide may be easier to contribute to as well.
Author
Owner

@FudiHub commented on GitHub (Mar 21, 2026):

Does this setup protect the netbird dashboard as well or only the services exposed via reverse proxy feature?

<!-- gh-comment-id:4102441212 --> @FudiHub commented on GitHub (Mar 21, 2026): Does this setup protect the netbird dashboard as well or only the services exposed via reverse proxy feature?
Author
Owner

@LordJuice1 commented on GitHub (Mar 31, 2026):

Seconding this strongly, and I can add some technical detail about what it actually takes to get CrowdSec working with a NetBird self-hosted stack, because it's non-trivial and I think that case strengthens the argument for official support.

I've done this integration and here's what the path looks like today:

Parser compatibility. The stock CrowdSec traefik-logs parser doesn't handle Traefik's h2c:// gRPC backend URL format, which NetBird uses extensively for its management and signal services. Log lines from these requests fail silently - no parse, no signal, no detection. A custom parser override is required to handle this pattern. This alone is a meaningful barrier for anyone not already deep in CrowdSec internals.

Docker log acquisition. CrowdSec's Docker acquisition requires the correct program label on log lines for parser filtering to work. This isn't documented in either project's getting-started material.

LAPI network binding. CrowdSec binds its LAPI to 127.0.0.1:8080 by default. The Traefik bouncer plugin runs inside Docker and can't reach that. You need to rebind to 0.0.0.0:8080 and add an iptables rule to allow the Docker network through.

Bouncer plugin install. The crowdsec-bouncer-traefik-plugin must be declared in Traefik's experimental plugins block, which means modifying the static config... another undocumented integration point.

Getting all of this right is probably 3–4 hours for someone already familiar with CrowdSec, Traefik, and Docker networking. For anyone newer to one of those pieces, significantly longer.

The solution @BLACK4585 describes, offering CrowdSec as part of the install with bouncers and config pre-wired, is exactly right. An optional flag on getting-started.sh (e.g. --with-crowdsec) that handles the above would make this accessible to the whole self-hosted community rather than just people willing to debug their way through it.

I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort.

I would love to see this personally.

<!-- gh-comment-id:4167223302 --> @LordJuice1 commented on GitHub (Mar 31, 2026): > Seconding this strongly, and I can add some technical detail about what it actually takes to get CrowdSec working with a NetBird self-hosted stack, because it's non-trivial and I think that case strengthens the argument for official support. > > I've done this integration and here's what the path looks like today: > > **Parser compatibility.** The stock CrowdSec `traefik-logs` parser doesn't handle Traefik's `h2c://` gRPC backend URL format, which NetBird uses extensively for its management and signal services. Log lines from these requests fail silently - no parse, no signal, no detection. A custom parser override is required to handle this pattern. This alone is a meaningful barrier for anyone not already deep in CrowdSec internals. > > **Docker log acquisition.** CrowdSec's Docker acquisition requires the correct `program` label on log lines for parser filtering to work. This isn't documented in either project's getting-started material. > > **LAPI network binding.** CrowdSec binds its LAPI to `127.0.0.1:8080` by default. The Traefik bouncer plugin runs inside Docker and can't reach that. You need to rebind to `0.0.0.0:8080` and add an iptables rule to allow the Docker network through. > > **Bouncer plugin install.** The `crowdsec-bouncer-traefik-plugin` must be declared in Traefik's experimental plugins block, which means modifying the static config... another undocumented integration point. > > Getting all of this right is probably 3–4 hours for someone already familiar with CrowdSec, Traefik, and Docker networking. For anyone newer to one of those pieces, significantly longer. > > The solution [@BLACK4585](https://github.com/BLACK4585) describes, offering CrowdSec as part of the install with bouncers and config pre-wired, is exactly right. An optional flag on `getting-started.sh` (e.g. `--with-crowdsec`) that handles the above would make this accessible to the whole self-hosted community rather than just people willing to debug their way through it. > > I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort. I would love to see this personally.
Author
Owner

@FudiHub commented on GitHub (Apr 1, 2026):

I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort.

Do you mind to share it here maybe? I am very interested doing it manually in the meantime.

<!-- gh-comment-id:4167521481 --> @FudiHub commented on GitHub (Apr 1, 2026): > I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort. Do you mind to share it here maybe? I am very interested doing it manually in the meantime.
Author
Owner

@rgareh commented on GitHub (Apr 1, 2026):

I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort.

Do you mind to share it here maybe? I am very interested doing it manually in the meantime.

I'm keen to see other implementations - I'm back to vanilla netbird given some issues i was facing and going down rabbit holes trying to resolve, but would very much like to see the dashboard and proxied sites, and potentially other public facing services protected.

<!-- gh-comment-id:4173914712 --> @rgareh commented on GitHub (Apr 1, 2026): > > I have working configs and the custom parser override I'm happy to share as a starting point if the maintainers want to pursue this. Happy to contribute to a PR or documentation effort. > > Do you mind to share it here maybe? I am very interested doing it manually in the meantime. I'm keen to see other implementations - I'm back to vanilla netbird given some issues i was facing and going down rabbit holes trying to resolve, but would very much like to see the dashboard and proxied sites, and potentially other public facing services protected.
Author
Owner

@nz2o commented on GitHub (Apr 20, 2026):

I just saw a pleasant surprise - some crowdsec integration in the most recent version. Can't seem to get that guy running though.

https://docs.netbird.io/selfhosted/migration/enable-reverse-proxy#step-7-optional-enable-crowdsec-ip-reputation

I do have the crowdsec bouncer set up on Traefik for both IP and WAF, but I wouldn't think it would directly "argue" with netbird. What I'm seeing is the Access Restrictions page is missing.

<!-- gh-comment-id:4285587234 --> @nz2o commented on GitHub (Apr 20, 2026): I just saw a pleasant surprise - some crowdsec integration in the most recent version. Can't seem to get that guy running though. https://docs.netbird.io/selfhosted/migration/enable-reverse-proxy#step-7-optional-enable-crowdsec-ip-reputation I do have the crowdsec bouncer set up on Traefik for both IP and WAF, but I wouldn't think it would directly "argue" with netbird. What I'm seeing is the Access Restrictions page is missing.
Author
Owner

@FudiHub commented on GitHub (Apr 21, 2026):

I just saw a pleasant surprise - some crowdsec integration in the most recent version. Can't seem to get that guy running though.

https://docs.netbird.io/selfhosted/migration/enable-reverse-proxy#step-7-optional-enable-crowdsec-ip-reputation

I do have the crowdsec bouncer set up on Traefik for both IP and WAF, but I wouldn't think it would directly "argue" with netbird. What I'm seeing is the Access Restrictions page is missing.

This will be added in the next dashboard release.

<!-- gh-comment-id:4285894901 --> @FudiHub commented on GitHub (Apr 21, 2026): > I just saw a pleasant surprise - some crowdsec integration in the most recent version. Can't seem to get that guy running though. > > https://docs.netbird.io/selfhosted/migration/enable-reverse-proxy#step-7-optional-enable-crowdsec-ip-reputation > > I do have the crowdsec bouncer set up on Traefik for both IP and WAF, but I wouldn't think it would directly "argue" with netbird. What I'm seeing is the Access Restrictions page is missing. This will be added in the next dashboard release.
Author
Owner

@websheriff commented on GitHub (Apr 27, 2026):

It looks like the integration is working in proxys, but trying to add the firewall bouncer on the host doesn't seem to be able to connect, is something different that netbird does to prevent it from working?

Pangolin docs for reference: https://docs.pangolin.net/self-host/community-guides/crowdsec#securing-the-host-system-ssh

<!-- gh-comment-id:4332101370 --> @websheriff commented on GitHub (Apr 27, 2026): It looks like the integration is working in proxys, but trying to add the firewall bouncer on the host doesn't seem to be able to connect, is something different that netbird does to prevent it from working? Pangolin docs for reference: https://docs.pangolin.net/self-host/community-guides/crowdsec#securing-the-host-system-ssh
Author
Owner

@FudiHub commented on GitHub (Apr 28, 2026):

It looks like the integration is working in proxys, but trying to add the firewall bouncer on the host doesn't seem to be able to connect, is something different that netbird does to prevent it from working?

Pangolin docs for reference: https://docs.pangolin.net/self-host/community-guides/crowdsec#securing-the-host-system-ssh

I have it working like this. I used pangolin before and set up crowdsec like this. I migrated to netbird and added another bouncer. Works well for me.

<!-- gh-comment-id:4332894512 --> @FudiHub commented on GitHub (Apr 28, 2026): > It looks like the integration is working in proxys, but trying to add the firewall bouncer on the host doesn't seem to be able to connect, is something different that netbird does to prevent it from working? > > Pangolin docs for reference: https://docs.pangolin.net/self-host/community-guides/crowdsec#securing-the-host-system-ssh I have it working like this. I used pangolin before and set up crowdsec like this. I migrated to netbird and added another bouncer. Works well for me.
Author
Owner

@websheriff commented on GitHub (Apr 28, 2026):

It looks like the integration is working in proxys, but trying to add the firewall bouncer on the host doesn't seem to be able to connect, is something different that netbird does to prevent it from working?
Pangolin docs for reference: https://docs.pangolin.net/self-host/community-guides/crowdsec#securing-the-host-system-ssh

I have it working like this. I used pangolin before and set up crowdsec like this. I migrated to netbird and added another bouncer. Works well for me.

I just looked at it again and I do now see it in the bouncer metrics so I guess it can take up to a few hours to show up.

<!-- gh-comment-id:4333095413 --> @websheriff commented on GitHub (Apr 28, 2026): > > It looks like the integration is working in proxys, but trying to add the firewall bouncer on the host doesn't seem to be able to connect, is something different that netbird does to prevent it from working? > > Pangolin docs for reference: https://docs.pangolin.net/self-host/community-guides/crowdsec#securing-the-host-system-ssh > > I have it working like this. I used pangolin before and set up crowdsec like this. I migrated to netbird and added another bouncer. Works well for me. I just looked at it again and I do now see it in the bouncer metrics so I guess it can take up to a few hours to show up.
Author
Owner

@TechHutTV commented on GitHub (Jun 4, 2026):

This was added. Thanks for the request!

<!-- gh-comment-id:4626081668 --> @TechHutTV commented on GitHub (Jun 4, 2026): This was added. Thanks for the request!
Sign in to join this conversation.
No Label feature-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#10732