this post was submitted on 29 Mar 2026
38 points (93.2% liked)

Selfhosted

56958 readers
579 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

  7. No low-effort posts. This is subjective and will largely be determined by the community member reports.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

I've been doing some selfhosting and want to setup fail2ban for my exposed apps, but am unsure if that should be setup on my router (OpenWRT), on each server that may be exposed, or just in the Caddy container?

My setup right now is: TP-Link router with OpenWRT Lenovo M910q with Proxmox, which hosts the following:

  • Caddy in a container for reverse proxies to hosted apps
  • Home Assistant OS in VM#1
  • Other apps in docker containers on VM#2
top 16 comments
sorted by: hot top controversial new old
[–] cecilkorik@piefed.ca 17 points 1 month ago

The simple, maybe unhelpful answer is that fail2ban needs to have two things at once: the logs, and a way to block the network traffic.

Where exactly you want those things to coincide is really up to you, there might only be one point that simultaneously has access to both those things, or there might be multiple points depending on how your systems and services and network is configured, or if you're in a bad situation you might find you don't really have any single point where both those things are simultaneously possible, in which case you'll need to reconfigure something until you do have at least one point where both those things are again coincident.

As far as best practices, I can't really say for sure, but I know that one of the more convenient ways to run it is usually on the same system, I usually run it outside of docker, on the host, which can pretty easily get access to the container's logs if necessary, and let fail2ban block traffic on the whole system. For me, any system running any publicly accessible network services that allow password login gets a fail2ban instance.

A whole-network approach where you block the traffic on the firewall is fine too, if that's what you prefer and what you want to work towards, but it's probably going to be significantly more complex to set up because now you need to either figure out how to get fail2ban to be able to access your firewall or a way for your firewall to get the logs it needs.

[–] nymnympseudonym@piefed.social 12 points 1 month ago (3 children)

Honest question: Why fail2ban? Have you considered crowdsec ?

I used to use the former; I've found the latter to be easier to maintain and I like that it shares threats real-time

[–] irotsoma@piefed.blahaj.zone 5 points 1 month ago (1 children)

I didn't like crowdsec because of the limits on the free account. For example, I got way more than the 500 max monthly alerts just with one application being protected. So it was difficult to analyze threats. It was easier to set up though. And both serve slightly different use cases.

[–] MangoPenguin@lemmy.blahaj.zone 3 points 1 month ago

You can analyze with either the CLI or log files piped into something like OpenObserve which is what I do. You don't technically need their dashboard.

[–] anticonnor@lemmy.world 3 points 1 month ago

I'll give it a look. No real reason for fail2ban specifically, it's just often mentioned as an easy process for beginners.

[–] irmadlad@lemmy.world 2 points 1 month ago (1 children)

Honest question: Why fail2ban? Have you considered crowdsec ?

Why not both?

[–] MangoPenguin@lemmy.blahaj.zone 5 points 1 month ago (1 children)

Crowdsec does everything fail2ban does so not much point.

[–] irmadlad@lemmy.world 1 points 1 month ago

In my thinking, redundancy, defense in depth.....maybe? May be overkill. I run them both with no issues.

[–] frongt@lemmy.zip 7 points 1 month ago (1 children)

Don't modify containers. Send their logs to fail2ban and block things at the edge.

[–] anticonnor@lemmy.world 1 points 1 month ago (1 children)

I'm still not sure what this means. Run fail2ban on the router or on each VM? Caddy does have a fail2ban module if it makes more sense to run there?

[–] Eirikr70@jlai.lu 6 points 1 month ago (1 children)

Run it in some place where it can easily read the logs of your apps.

[–] anticonnor@lemmy.world 3 points 1 month ago

Thank you both, I'm starting to get it.

[–] themachine@lemmy.world 5 points 1 month ago (1 children)

If the router is the single point if entry at your edge then I'd run fail2ban on it assuming it can see the traffic

[–] anticonnor@lemmy.world 1 points 1 month ago

Thank you! I'll start there and check that I can easily access the logs.

[–] superglue@lemmy.dbzer0.com 3 points 1 month ago

Linuxserver SWAG container has fail2ban and Nginx built into the same container. It can read your nginx logs and modify the servers firewall rules to ban them.

[–] sepi@piefed.social -1 points 1 month ago

On the computer