Here is my setup:

I have multiple DuckDNS domains (and subdomains) pointing to my home IP. My home router has port 80 and port 443 forwarded to Nginx Proxy Manager on my home server. Nginx Proxy Manager points to the appropriate docker container and each one is encrypted with Let’s Encrypt.

Am I missing anything here or is this how I’m supposed to be doing it? Every app that has a DuckDNS url has a password in some shape or form.

  • Clearwater@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 hour ago

    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.

  • redlemace@lemmy.world
    link
    fedilink
    English
    arrow-up
    12
    ·
    16 hours ago

    My usual additions:

    1. Have the router to block portscanners
    2. fail2ban on internet facing services.
      • redlemace@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        2 hours ago

        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:

        1. If source is whitelisted, Accept (avoid being locked out myself)
        2. If source IP is in the blacklist, drop all
        3. if source IP tries to connect to port 21,22,25,137-139, 113 (and a bunch of others) add it to the blacklist

        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)

    • Jediwan@lemy.lolOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      16 hours ago

      Thanks I’ll look into these. Quick question: how does fail2ban use port 80 if that’s already used by nginx?

      • redlemace@lemmy.world
        link
        fedilink
        English
        arrow-up
        9
        ·
        15 hours ago

        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://<url>/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.

  • Brkdncr@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    10 hours ago

    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.

  • tofu@lemmy.nocturnal.garden
    link
    fedilink
    English
    arrow-up
    6
    ·
    16 hours ago

    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.

    • Jediwan@lemy.lolOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      16 hours ago

      Thanks I’m going to look into fail2ban. I mostly wanted to make sure I wasn’t being a total idiot here.

      • redlemace@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        15 hours ago

        I wasn’t being a total idiot

        that goes unanswered ;) it’s not unlikely selfhosters have at least one loose screw.

        • irmadlad@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          ·
          14 hours ago

          selfhosters have at least one loose screw.

          I have a box of them, right next to my box of strings too short to use.

  • frongt@lemmy.zip
    link
    fedilink
    English
    arrow-up
    5
    arrow-down
    1
    ·
    16 hours ago

    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.

    • redlemace@lemmy.world
      link
      fedilink
      English
      arrow-up
      6
      ·
      15 hours ago

      Safety is relative.

      It’s also not a state you can reach, it’s a mindset as well as an on-going process

  • irmadlad@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    15 hours ago

    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.

  • Decronym@lemmy.decronym.xyzB
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    1
    ·
    edit-2
    1 hour ago

    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
    VPN Virtual Private Network
    nginx Popular HTTP server

    3 acronyms in this thread; the most compressed thread commented on today has 13 acronyms.

    [Thread #71 for this comm, first seen 7th Feb 2026, 20:10] [FAQ] [Full list] [Contact] [Source code]