I’m pretty new to selfhosting and homelabs, and I would appreciate a simple-worded explanation here. Details are always welcome!

So, I have a home network with a dynamic external IP address. I already have my Synology NAS exposed to the Internet with DDNS - this was done using the interface, so didn’t require much technical knowledge.

Now, I would like to add another server (currently testing with Raspberry Pi) in the same LAN that would also be externally reachable, either through a subdomain (preferable), or through specific ports. How do I go about it?

  • pleksi@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    0
    ·
    20 hours ago

    I really feel like people who are beginners shouldnt play with exposing their services. When you set up Caddy or some other reverse proxy and actually monitor it with something like fail2ban you can see that the crawlers etc are pretty fast to find your services. If any user has a very poor password (or is reusing a leaked one) then someone has pretty open access to their stuff and you wont even notice unless you’re logging stuff.

    Of course you can set up 2FA etc but that’s pretty involved compared to a simple wg tunnel that lives on your router.

    • Allero@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      18 hours ago

      For now I’m only toying around, experimenting a little - and then closing ports and turning my Pi off. I do have my NAS constantly exposed, but it is solidly hardened (firewall, no SSH, IP bans for unauthorized actions, etc. etc.), fully updated, hosts no sensitive data, and all that is important is backed up on an offline drive.

    • r0ertel@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      19 hours ago

      My mantra is “plan to be hacked”. Whether this is a good backup strategy, a read-only VM, good monitoring or serious firewall rules.

    • Allero@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      20 hours ago

      Update: tried Caddy, love it, dead simple, super fast, and absolutely works!

      • Possibly linux@lemmy.zip
        link
        fedilink
        English
        arrow-up
        0
        ·
        12 hours ago

        Did you also forward UDP port 443?

        If not I would as well since it is used for QUIC which is supported and automatically turned on for Caddy.

    • Allero@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      21 hours ago

      For now just some experiments alongside NAS

      Planning to host Bitwarden, Wallabag and other niceties on the server, and then when I get something more powerful, spin up Minecraft server and stuff

      • greybeard@feddit.online
        link
        fedilink
        English
        arrow-up
        0
        ·
        17 hours ago

        I’ll be honest, if you aren’t planning on sharing with others, I’d recommend switching to something like wireguard to connect back into your house instead of exposing everything publicly. Some firewalls have wireguard built in, so you can setup the VPN easily. But then all you have to do is keep your VPN endpoint safe to keep your internal network protected from the Internet, instead of having to worry about the security of everything you expose.

        • Allero@lemmy.todayOP
          link
          fedilink
          English
          arrow-up
          0
          ·
          edit-2
          17 hours ago

          That’s a good piece of advice, but die to several considerations (extreme censorship interrupting VPN connections, family using NAS for automatic backups, and some others) I cannot go that route.

          • Possibly linux@lemmy.zip
            link
            fedilink
            English
            arrow-up
            0
            ·
            edit-2
            12 hours ago

            What do you mean by blocked at a protocol level? You might give it a try on a random port to see what happens.

            You could also look into port knocking. It is dated but still worth while.

          • greybeard@feddit.online
            link
            fedilink
            English
            arrow-up
            0
            ·
            17 hours ago

            There’s nothing saying you can’t have ports forwarded for the NAS, and have a VPN for everything else. Censorship may be a problem, but those more often block VPN services like NordVPN, not protocols. So running your own is less likely to be stopped. That said, of course comply with local laws, I don’t know where you live or what’s legal there.

            If you really want multiple things exposed at the same time, you have two options(which can be used in combination if needed/wanted):

            1. A reverse proxy. I use caddy. I give it a config file that says what address and port binds to what hostname, and I forward port 443/80 to it. That works great for web content.
            2. Use custom ports for everything. I saw someone else walking you through that. It works, but is a little harder to remember, so good notes will be important.

            I still recommend against forwarding a lot of ports as a beginner. It’s very common for software and web apps to have security vulnerabilities, and unless you are really on top of it, you could get hit. Not only does that put all your internal devices at risk, not just the one that was original breached, it also will likely become part of a botnet, so your local devices will be used to attack other people. I’d recommend getting confident with your ability to maintain your services and hardening your environment first.

            • Allero@lemmy.todayOP
              link
              fedilink
              English
              arrow-up
              0
              ·
              17 hours ago

              It’s not illegal to use VPN in my area, but connections are blocked on a protocol level, both through OpenVPN and Wireguard.

              I already managed to make caddy work, so, hooray!

              I also found a setting on my router that fully isolates certain devices from the local network. I want to put the server in there, so that the rest of my LAN is not under threat. I also want to figure out VLANs.

              • orosus@lemmy.world
                link
                fedilink
                English
                arrow-up
                0
                ·
                12 hours ago

                I am not an expert on security and I don’t know how to setup ddns, but I simply use Tailscale VPN to access my RPi4 homeserver running Umbrel from outside of my home, I simply installed Tailscale in my Umbrel and in my phone, and when I want to access from my phone Immich, Nextcloud or any other app running on my Umbrel. I simply enable the Tailscale VPN. Maybe it has some limitations, but is the simpler way I found, and based on what I read, it is more secure than exposing a port in the router, but not sure.

                • Allero@lemmy.todayOP
                  link
                  fedilink
                  English
                  arrow-up
                  0
                  ·
                  9 hours ago

                  I would be fairly comfortable running a direct WireGuard connection even without Tailscale, but my location and use case simply won’t allow me to.

                  Your setup is valid, nothing wrong with it, and yes, it is more secure. Just can’t be used in my case.

  • SmokeyDope@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 day ago

    Good to hear you figured it out with router settings. I’m also new to this but got all that figured out this week. As other commenters say I went with a reverse proxy and configured it. I choose caddy over nginx for easy of install and config. I documented just about every step of the process. I’m a little scared to share my website on public fourms just yet but PM me ill send you a link if you want to see my infrastructure page where I share the steps and config files.

  • greybeard@feddit.online
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 day ago

    The synology NAS can act as a reverse proxy for stuff inside your network. I don’t have mine in front of me, so you will have to google the steps, but basically you point the synology to an internal resource and tell it what external subdomain it should respond to.

    • Allero@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 day ago

      Yes, I know where this feature is in the settings, but it’s got its own issues and I also turn the NAS off for the night, so it’s not an option for me.

        • Allero@lemmy.todayOP
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 day ago

          In what way? It is a physical server located in my bedroom, sharing resources online.

          • SufferingSteve@feddit.nu
            link
            fedilink
            English
            arrow-up
            0
            ·
            22 hours ago

            Dude above you over is under the perception that it requires 100% uptime or other users to to be classified, which is wrong. You are definitely self hosting, albeit only for yourself I assume. Which is fine

            • Allero@lemmy.todayOP
              link
              fedilink
              English
              arrow-up
              0
              ·
              21 hours ago

              Yep, sharing stuff for others requires more expertise, as I’ll get responsible for other people’s experience. If I screw something up now, only I will be affected.

              • SufferingSteve@feddit.nu
                link
                fedilink
                English
                arrow-up
                0
                ·
                21 hours ago

                And you are self-sufficient, or whatever the word is. But that’s the key thing for me, not having to rely on others for my services :)

      • Joelk111@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 day ago

        Why do you turn off the NAS at night? Reminds me of my grandparents turning off the wifi at night.

        • Allero@lemmy.todayOP
          link
          fedilink
          English
          arrow-up
          0
          ·
          edit-2
          1 day ago

          Drives are somewhat noisy (even though I took fairly quiet ones) and I appreciate total silence at night. Unfortunately, I don’t have many places to put it outside my single room, so there’s that.

          I’d love to move to SSDs for storage at some point (I know it’s controversial, but they would fit my use case better), but for now it’s too expensive for me.

          • Joelk111@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            24 hours ago

            Ahh, that’s valid. I’ve been wanting to build a (relatively) small 16TB SSD NAS for video editing, after which I could dump footage to my main NAS. SSD NAS systems can definitely make sense depending on your use case. Hell, you can even game off of them if you’ve got 10gig networking.

    • Allero@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 day ago

      I will eventually!

      But for all I understand, it is to put many services on one machine, and I already have a NAS that is not going anywhere

      • ddh@lemmy.sdf.org
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 day ago

        I’ve gone the other way. I used to run a Proxmox cluster, then someone gave me a Synology NAS. Now it’s rare that I spin up Proxmox and instead use a mix of VMs, containers and Synology/Synocommunity apps.

  • Nate066@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    VPN is definitely the way to go for home networks. Your router even has one built in. OpenVPN and Wireguard are good.

    If you really want to expose stuff like this the proper way is to isolate your home network from your internet exposed network using a VLAN. Then use a reverse proxy, like caddy and place everything behind it.

    You do need a business or prosumer router for this though. Something like Firewalla or setting up a OpenWRT or OPNsense.

    Synology also has there quick connect service as well. While not great if you keep UPNP off and ensure your firewall and login rate limiting is turned on it may be better then just directly exposing stuff. But its had its fair share of problems so yeah.

    Consider not self hosting everything. For example if all your family cares about is private photo storage, consider using a open source E2EE encrypted service for photos on the cloud like Ente Photos. Then you can use VPN for the rest.

    Also consider the fallout that would happen if you are hacked. If all your photos and other things get leaked because your setup was not secure was it really any better than using big tech?

    If nothing else please tell me you are using properly setup https certs from Let’s Encrypt or another good CA. Using a firewall and have login rate limiting setup on everything that is exposed. You can also test your SSL setup using something like https://www.ssllabs.com/ssltest/

    • Allero@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      1 day ago

      No truly private photos ever enter the NAS, so on that front it should be fine.

      VPN is not an option for several reasons, unfortunately.

      But I do have a Let’s Encrypt certificate, firewall and I ban IP after 5 unsuccessful login attempts. I also have SSH disabled completely.

      SSL Test gave me a rating of A

  • Chewy@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    If you go with IPv6, all your devices/servers have their own IP. These IPs are valid in your LAN as well a externally.

    But it’s still important to use a reverse proxy (e.g. for TLS).

    • Allero@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 day ago

      Oh, nice! So I don’t have just one, but many external IPs, one for every local device?

      • Chewy@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 day ago

        Yes, even IPv4 was intended to give each device in the world their own IP, but the address space is too limited. IPv6 fixes that.
        Actually, each device usually has multiple IPv6s, and only some/one are globally routable, i.e. it works outside of your home network. Finding out which one is global is a bit annoying sometimes, but it can be done.

        Usually routers still block incoming traffic for security reasons, so you still have to open ports in your router.

  • towerful@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    Who is externally reaching these servers?
    Joe public? Or just you and people you trust?

    If it’s Joe public, I wouldn’t have the entry point on my home network (I might VPS tunnel, or just VPS host it).

    If it’s just me and people I trust, I would use VPN for access, as opposed to exposing all these services publicly

    • Justin@lemmy.jlh.name
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 days ago

      Your stuff is more likely to get scanned sitting in a VPS with no firewall than behind a firewall on a home network

    • Allero@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 days ago

      Just me and the people I trust, but there are certain inconveniences around using VPN for access.

      First, I live in the jurisdiction that is heavily restrictive, so VPN is commonly in use to bypass censorship

      Second, I sometimes access my data from computers I trust but can’t install VPN clients on

      Third, I share my NAS resources with my family, and getting my mom to use a VPN every time she syncs her photos is near impossible

      So, fully recognizing the risks, I feel like I have to expose a lot of my services.

      • somewa@suppo.fi
        cake
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 day ago

        Remember that with services facing public internet it’s not about if you get hacked but when you get hacked. It’s personal photos on someone elses hands then.

        • Allero@lemmy.todayOP
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 day ago

          I do remember that and take quite a few precautions. Also, nothing that can be serioisly used against me is in there.

          • hietsu@sopuli.xyz
            link
            fedilink
            English
            arrow-up
            0
            ·
            1 day ago

            I have wrestled with the same thing as you and I think nginx reverse proxy and subdomains are reasonably good solution:

            • nothing answers from www.mydomain.com or mydomain.com or ip:port.
            • I have subdomains like service.mydomain.com and letsencrypt gives them certs.
            • some services even use a dir, so only service.mydomain.com/something will get you there but nothing else.
            • keep the services updated and using good passwords & non-default usernames.
            • Planned: instant IP ban to anything that touches port 80/443 without using proper subdomain (whitelisting letsencrypt ofc), same with ssh port and other commonly scanner ones. Using fail2ban reading nginx logs for example.
            • Planned: geofencing some ip ranges, auto-updating from public botnet lists.
            • Planned: wildcard TLS cert (*.mydomain.com) so that the subdomains are not listed anywhere maybe even Cloudflare tunnel with this.

            Only fault I’ve discovered are some public ledgers of TLS certs, where the certs given by letsencrypt spill out those semi-secret subdomains to the world. I seem to get very little to no bots knocking my services though so maybe those are not being scraped that much.

            • Allero@lemmy.todayOP
              link
              fedilink
              English
              arrow-up
              0
              ·
              1 day ago

              Pretty solid! Though insta-ban on everything :80/443 may backfire - too easy to just enter the domain name without subdomain by accident.

              • hietsu@sopuli.xyz
                link
                fedilink
                English
                arrow-up
                0
                ·
                23 hours ago

                Could be indeed. Looking at the nginx logs, setting a permaban on trying to access /git and a couple of others might catch 99% of bots too. And ssh port ban trigger (using knockd for example) is also pretty powerful yet safe.

        • thermal_shock@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 day ago

          Not sure why you’re downvote, you’re absolutely right. People scan for open ports all day long and will eventually find your shit and try to break in. In my work environment, I see thousands of login attempts daily on brand new accounts, just because something discovered they exist and want to check it out.

  • jacksquat@what.forfi.win
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    Honestly Cloudflare Tunnels could be a very simple way to do it. I’ve always had tremendous luck with it. By using CF you can let them do all the heavy lifting instead of hosting your own… as long as you trust them.

  • MangoPenguin@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    You can either:

    A) Use a different port, just set up the new service to run on a port that’s not used by the other service.

    B) If it’s a TCP service use a reverse proxy and a subdomain.

  • bizdelnick@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    If you mean HTTP server, what you need is a reverse proxy and name-based virtual hosts. I usually use nginx for such tasks, but you may choose another web server that has these features.

  • thelittleblackbird@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 days ago

    If you have a prosumer router I suggest you to use the ddns in the router plus a reverse proxy. This would be the cleanest solution.

    If you can not, once everything is working with your external access to the synology, the dsm has a built-in reverse proxy so it can redirect http requests to another server. Although this proxy is really simple and limited it can get the work done if you setup is simple enough.