So I’m relatively new to server hosting. (But experienced with remote web hosting from providers.) After about a year of fighting to run Nextcloud on a hosting company and finally losing everything from the cPanel vulnerability a few months ago, I broke down and launched my own home server. I’m looking for advice to maximize security.
CachyOS Linux with ClamAV Docker via Portainer Nextcloud (E2EE), Immich, DocuSeal and NoteTrace Routed through a domain and subdimains via Zero Trust Cloudflare Tunnel and Cloudflare DNS.
I have regular redundant backups both onsite and offsite with Duplicati.
My passwords for OS and all admin dashboards are extremely long, unique, random strings managed by Bitwarden.
I know just enough about this stuff to get into trouble. What else should I setup? I have little to no monitoring going on and don’t know much about that direction.
Use authelia for 2fa
Disable root ssh
Disable password authentication for ssh. Keys only.
Set up Fail2ban
That’s about all that’s left; 2fa and brute force protection. Good job.
What I did was setting up two routers. The outer one is a big filter, and the only packets coming in went through it.
If someone would have managed to take over this outer router, the next step would have been to probe the inner router. For this, they would send packets originating at the outer router to anything on the inside net.
This would trigger an alert on the inner router that switches a relay, cutting the power on the outer router.
Thank you all for your advice and tips. I am very overwhelmed by the sheer amount of information that’s been given and I’m going to spend some time digesting and reading up on these things. Lots of terminology is over my head at this point and I have a lot of learning to do.
For monitoring, I’d start with alerts on changes you didn’t make. Save a baseline of listening ports with
ss -tlnpand of running containers withdocker ps --format '{{.Names}} {{.Image}}', then have a daily cron job compare both against the baseline and push any difference to your phone with ntfy.Keep the baseline files outside your Docker volumes.
Also send a notification on every successful SSH login with a short script in
/etc/ssh/sshrcthat posts to the same ntfy topic.Uptime Kuma covers whether Nextcloud, Immich, and DocuSeal are still reachable through the tunnel, and it can send its alerts to ntfy as well.
Drafted with AI.
This is an elegant and brilliant idea and I love it. Finding a way to formalize a baseline and then get notified for deviations from that baseline is a fundamental requirement for having things running smoothly.
I’ve been working on a way to automate daily log parsing to get to the same state but including performance metrics and network traffic would definitely round out the signal.
I’d use the same baseline approach for logs and compare counts instead of reading lines. Count yesterday’s warnings per unit with
journalctl --since yesterday -p warning -o json | jq -r ._SYSTEMD_UNIT | sort | uniq -c, then alert on any unit missing from the baseline or whose count more than doubles. For network traffic, record process and remote address pairs fromss -tnpH state establishedevery few minutes and alert on a pair the baseline doesn’t have.Drafted with AI.
Removed by mod


