My usual additions:
- Have the router to block portscanners
- fail2ban on internet facing services.
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:
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
No spam posting.
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.
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
No trolling.
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!
My usual additions:
- Have the router to block portscanners
What do you mean by this? Closing unused ports?
I'm using RouterOS. In the firewall rules you can create a rule that if an IP touches a port, it get added to a address list (optional with a time-out). So my FW rules begin like this:
So using a portscanner will touch ports I'm not running any service on (like telnet) and you'll be blocked. A time-out of one week on the blacklist usually gives me an blacklist of 6500+ addresses.
This too has endless possibilities. t.ex. like port knocking. ('touch' one or more ports in a specified sequence in a specified time to be allowed to access the actual service port)
This is a waste of time and your router's CPU. You already have a whitelist and know your safe TCP sources, just drop all wan traffic and only allow new input from whitelist. Your chain input rule is just creating a pretty list of bots you're dropping anyway.
Well, here is the CPU load:

And there is no increase on delay's or jitter compared to what i'm already facing on the WAN itself.
It keep's 6000+ hosts with possible harmful intend away from the ports I need/want open to the world. Actually, the router -while still being bored- offloads the services behind it. I really can't see a reason not to keep doing it. But, sure, it's a personal choice.
Delays? Jitter? What are you talking about?
Didn't you say you have whitelist of allowed ips? Why don't you just drop any other inbound traffic?
whitelist of allowed ips
Not exactly.
If source is whitelisted, Accept (avoid being locked out myself)
So all IP's are allowed to begin with, but some ("my" IP's like at home, my office etc) are on a whitelist ahead of everything else. They can't become blacklisted to avoid myself becoming locked out. Then it's the drop all on the blacklisted, followed by portscan detection. Only after that the 'normal' rules (allow https, smtp etc) begin.
Off-topic: Looks like you missed the two spaces after beginning a new line.
Just wanted to inform you in case you werent aware ;)
the spacebar on my Remington isn't what it used to be, maybe a drop of oil will help ;)
Thanks I'll look into these. Quick question: how does fail2ban use port 80 if that's already used by nginx?
It does not. It does not uses ports at all. Fail2ban monitors your logfiles and activates the firewall to block IP's that matched your rules.
t.ex. You can block an IP that tried to access https:///admin. You can block an IP that used wrong credentials x times to login on an ssh port. Or block one that tried to relay via your mailserver. The duration is configurable and alternative duration can be configured for recidivists.
And yes, you can whitelist IP's to avoid locking yourself out. The possibilities are endless.
Always risky to be exposed to the internet. unless you can't, you should look into using tailscale/netbird to keep everything within a VPN.
Networking looks fine, but check fail2ban as the other commenter mentioned, it goes to the npm.
Make sure to keep all internet facing applications up to date and use strong passwords.
Thanks I'm going to look into fail2ban. I mostly wanted to make sure I wasn't being a total idiot here.
I wasn’t being a total idiot
that goes unanswered ;) it's not unlikely selfhosters have at least one loose screw.
selfhosters have at least one loose screw.
I have a box of them, right next to my box of strings too short to use.
Am I missing anything here or is this how I’m supposed to be doing it?
AFA fail2ban, I always set up the jails in aggressive mode:
[sshd]
mode = aggressive
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5 <---edit to tastes
bantime = 3600 <---edit to tastes
findtime = 600 <---edit to tastes
You might want to check out Crowdsec, maybe deploy Tailscale as an overlay. How many users are you providing services for? If just yourself, I use the host allow / host deny feature in Linux. Just make sure you do host allow first, lol.
Safety is relative. How are you handling every hacker in the world knocking on your door?
Personally I only expose a VPN and use that, instead of exposing a bunch of services.
Safety is relative.
It's also not a state you can reach, it's a mindset as well as an on-going process
You're good in that there are no immediate problems with that setup. I run a largely similar setup, have run it for years, and have never had issues.
You can always add more security layers if desired, but from my personal experience and with my risk tolerance, I haven't personally found it necessary.
Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I've seen in this thread:
| Fewer Letters | More Letters |
|---|---|
| HTTP | Hypertext Transfer Protocol, the Web |
| IP | Internet Protocol |
| TCP | Transmission Control Protocol, most often over IP |
| VPN | Virtual Private Network |
| nginx | Popular HTTP server |
4 acronyms in this thread; the most compressed thread commented on today has 12 acronyms.
[Thread #71 for this comm, first seen 7th Feb 2026, 20:10] [FAQ] [Full list] [Contact] [Source code]
If any service has only username and password instead of mfa or password less then it’s not safe.
You also didn’t mention if you have automated patching or immutable backups enabled.
I'd add Crowdsec