I have docker installed, but only have a vague idea of how it works.

Back in the day, I would just port forward, but even then, I would need a static IP somehow.

I have heard a reverse proxy is an option, but that is an entirely new topic to me.

Surely there is an easy way to access Jellyfin outside of my home network that I’m just missing.

  • Reannlegge@lemmy.ca
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    There are things like duckdns if you cannot get a static IP, but there are also things like wireguard.

  • nfms@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    This is how I started.
    I have a dynamic IP and a router provided by my ISP. IP assignations, DHCP, are managed by the router. I went with DuckDNS for a free DNS service. Select a name and you get a myname.duckdns.org that you need to assign to your dynamic IP. duckdns has instructions to create a cronjob to update your dynamic IP on duckdns.org. (Routers come in all shapes and configs, chances are that this won’t work for most people) On the router, I assigned a static IP to the server hosting Jellyfin, in case of a reboot Jellyfin would always have the same IP. On the Ports page I opened up the default port for Jellyfin at that IP. I could then access Jellyfin outside of my local network using myname.duckdns.org:1234
    This is not what I have right now, but it helped my get started.

  • Morgikan@fedia.io
    link
    fedilink
    arrow-up
    0
    ·
    2 months ago

    If the goal is doing this in a simple fashion, then use Tailscale funnels (https://tailscale.com/docs/features/tailscale-funnel). Funnels automate the process and act as a reverse proxy into specific servers within your tailnet.

    The downside is there is no authentication to funnels, so whatever you’re running (Jellyfin in this case so that’s not an issue) needs it’s own authentication setup. You might consider running fail2ban on that machine and have it watch for login attempts, but otherwise that is the simplest setup I think you could do.

  • paultimate14@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    I ended up using duckdns for a free domain. It sucks that I had to tie it to a google account, and maybe one day this might be an area where I buy a proper domain instead.

    I have a glinet Flint3 router that makes it easy to spin up Wireguard servers on it. It was a bit more finnicky, but eventually I was able to get into the advanced settings and configure the router to sync the dynamic IP with DuckDNS too.

    So I have Wireguard on my phone and my wife’s phone. We have one pair of close friends who have a connection on their router too (and vice-versa) and their own Jellyfin server.

  • lokalhorst@feddit.org
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    What you want is Tailscale. The downside of Tailscale is that you have to connect to a VPN to access your services, the advantage - it is so easy to set up on the server it feels like magic.

  • 棉蘭阿偉@lemmy.1095.me
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    @Vegan_Joe — if you’re still stuck, try this: install Tailscale → join your tailnet → expose Jellyfin container port 8096 as 443. That’s it. No nginx, no static IP hunting. I wrote a 3-command cheatsheet here https://cxgo.ai/l/5bwrT9m that I wish existed when I started fumbling with docker-compose overrides. Works on a $20 raspberry pi and a 2014 Mac mini, so your hardware shouldn’t matter.

  • bloogoose@lemmy.zipdeleted by creator
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    Look into nginx proxy manager. Pretty easy to setup and deploy.

    • Pacrat173@lemmy.ml
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      It’s my go to method super easy to set up and use on both the device hosting your JellyFinn server and whatever your steaming on

      • djdarren@piefed.social
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        Just be aware that if you want anyone else to connect to your Jellyfin, you’ll still have to route it through a domain and reverse proxy, unless you’re comfortable letting them log in to your tailnet.

        It’s a bit of a fiddle to set up, but once it’s done it’s quite satisfying.

      • Pika@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        it’s actually the recommended way if you use jellyfin, theres a few security/privacy vulnerabilities with publicly exposing the jellyfin server anyway, they are being worked on but, the safest way to do it is just use a vpn regardless.

        • frongt@lemmy.zip
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          Plus it enables you to access everything. If you have radarr or sonarr or whatever, you can get to those and add media while out and about.

          Personally I use Mealie and pull up ingredient lists while I’m im at the grocery store.

  • GeneralDingus@lemmy.cafe
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    I forward my port to my bastion host, and reverse tunnel to it when I want to access my stuff.

    My router allows you to set a device in the DMZ zone which will let you use your routers IP as its address.

    • MasterOKhan@lemmy.ca
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      I second this, if it’s only you that needs access then Tailscale will be all that you need. You can use Tailscale funnel if you want it to be available to the wider web, but then you have to manage SSL certificates and it is slightly less secure.

      I would caution against port forwarding and leaving your server open to the wider web.

  • Used to have a tool specifically to route my dynamic IP to something static, without buying a domain name, back when I first hosted a website on my own regular home PC as a teen called “No-IP.”

    Not sure if it’s still a thing.

  • Croquette@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    I have setup NetBird with Authentik. Netbird is on a VPS and authentik on my home server.

    NetBird allows to expose a service through a subdomain. Or you can use the netbird client as a VPN and allow peer to peer connection.

  • ohshit604@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    Device -> VPN Tunnel (ideally WireGuard) -> Home Router / Server.

    The only port that needs to be opened is your WireGuard server which typically is :51820.

    The issue with this is you have explain VPN’s and WireGuard to people which, in my experience turns people away as they see it as a hassle.

    Alternatively buy a domain, setup DDNS so that your home IP is associated with your domain, setup a reverse proxy and open port :443 on your router however, I would suggest a blacklist-first approach and only whitelist the few known IP’s you can trust.

    • dogs0n@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      People’s IP addresses usually change so that might be annoying keeping a whitelist up to date.

      A good alternative is something like fail2ban to ban ip addresses that spam your server looking for a way in and potentially geo-restricting access to your country.

      • ohshit604@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        Free vps in oracle cloud with Pangolin

        If I’m not mistaken I tried setting up pangolin to work along side my already running Traefik setup and it was just an absolute nightmare.

        I just don’t have the time nor energy to reinvent my already running configuration.

        • FlexibleToast@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          I’ve set it up next to my NPM and it’s more complicated, but so much more capable. Traefik is what it uses to proxy things. You’re comparing a full suite of tools with just one piece.

          • ohshit604@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            0
            ·
            2 months ago

            Traefik is what it uses to proxy things. You’re comparing a full suite of tools with just one piece.

            I mean, that’s debatable. Taking a look at their docker-compose.yml there are 3 containers they recommend running, with a 4 optional container.

            To say this is a “full-suite” is a bit much when majority of the heavy lifting is done by Traefik, the middleware’s you assign to Traefik and WireGuard. Pangolin if I’m reading this correctly;

            “Pangolin combines reverse proxy and VPN capabilities into one platform.”

            Which is great! However as I mentioned previously, does not integrate well when these services are already setup to work standalone.

            I suspect the same reaction from folks when they hear “download pangolin from the App Store, and use xyz credentials to connect.” And “download WireGuard from the App Store, and use xyz file to connect.”

            • FlexibleToast@lemmy.world
              link
              fedilink
              English
              arrow-up
              0
              ·
              2 months ago

              Pangolin uses gerbil with newt for those wireguard tunnels. That’s a massive improvement already. It also adds a bunch more features like vpn, you can crowdsec, and more that I don’t use. To say it’s debatable if it’s a suite of tools is just wrong.

              • ohshit604@sh.itjust.works
                link
                fedilink
                English
                arrow-up
                0
                ·
                2 months ago

                To say it’s debatable if it’s a suite of tools is just wrong.

                How is it wrong to say it is debatable when Traefik and WireGuard have quite literally done majority of the development. Pangolin is just a man in the middle.


                Pangolin uses gerbil with newt for those wireguard tunnels. That’s a massive improvement already. It also adds a bunch more features like vpn.

                According to the Newt ReadMe -

                Newt is a fully user space WireGuard tunnel client and TCP/UDP proxy, designed to securely expose private resources controlled by Pangolin. By using Newt, you don’t need to manage complex WireGuard tunnels and NATing.

                Seems to me that WireGuard is their primary dependency, without WireGuard what use is it?


                you can crowdsec

                According to Pangolin docs they rely on the Crowdsec middleware offered by Traefik.

                By default, Crowdsec is installed with a basic configuration, which includes the Crowdsec Bouncer Traefik plugin

    • ridethisbike@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      I did the last one. Bought a domain for $5 per year from cloudflare and used a cloudflared tunnel to direct traffic to Caddy (reverse proxy). Set up everything as deny-by-default, requiring log in to access things like sonarr, and let things like Jellyfin and Immich bypass the login requirement. Took a bit to get it all figured out, but it worked.

      There is also a way to use the cloudflared tunnel for free that gives you a domain as well (sort of anyways).

      All of that is run via docker containers, minus the

      Documentation on all of this is fragmented and a challenge to figure out. Happy to help anyone who wants to message me about it.

      I took this a step further as I use a wireguard tunnel to make use of my router level ad blocking. So I added an entry for my domain to route back to caddy and serve it all locally. This is proving to be a challenge due to the way some browsers handle forced https, but I’m making due.

      • ohshit604@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        and used a cloudflared tunnel to direct traffic to Caddy

        There is also a way to use the cloudflared tunnel for free that gives you a domain as well (sort of anyways).

        This is DDNS, a popular, free alternative would be ddclient. Essentially updating an A Record so that your dynamic IP is remains associated with your domain.

        While cloudflare is also my registrar as well, I don’t use any of the “features” they offer, and opted to use Keycloak for my authentication needs.

        • ridethisbike@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 months ago

          I’ve debated setting up Authelia or something similar because cloudflare is sooo slow to load their login page, but haven’t landed on anything yet… Plus I worry I set something up wrong and expose my network

          • ohshit604@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            0
            ·
            edit-2
            2 months ago

            I can’t be much of a help with Caddy however, for Traefik you can use the OIDC Middleware to forward requests to your authentication service.

            Plus I worry I set something up wrong and expose my network

            The only port that would need opening is :443, leave port :80 closed so that people cannot connect to your services insecurely. Slap fail2ban or geoblock on it and call it a day. Also, DDNS allowlist for that deny-first approach.

            • ridethisbike@lemmy.dbzer0.com
              link
              fedilink
              English
              arrow-up
              0
              ·
              2 months ago

              The current config routes through the cloudflared tunnel so no ports are open externally at the moment, so that’s nice, but yea, I’d have to imagine there’s some documentation out there for caddy.

              Caddy has been a pain, though, so I might give one of the others a try. Thanks for the tips!

  • Darkassassin07@lemmy.ca
    link
    fedilink
    English
    arrow-up
    0
    ·
    2 months ago

    You don’t need a static IP, you just have to keep track of what your current dynamic IP is.

    You can do this with either a free or a paid DNS service.

    There are a few different ‘free dns’ services that will delegate a subdomain of theirs to you at no cost. Admittedly, I’ve never actually used one of these so their names escape me. Hopefully someone else can point one of those out if that’s what you really want.


    I purchased a domain via google domains, when they existed. It’s now transferred to squarespace, because they bought out google domains a few years ago.

    It was around $13/year when I first got it a decade ago. It’s now around $28/year.

    This allows me full control over the domain: I can use as many subdomains as I want to give each service I use it’s own unique name. (Instead of using their own separate ports that you’ve gotta remember) My domain will also forward all inbound email to my gmail account; this lets me use email addresses like <servicename>@mydomain.example. This way, I don’t share my real email and can immediately tell who sold my info to the highest bidder when I get spam. (I could also host my own email service if I really wanted, but I haven’t bothered)

    Add Cloudflare ontop (for free); and it can filter out known attacks, ddos attempts, geofence your services to regions you’ll actually be in, provide/autorenew ssl certs for https, show you usage analytics, cache static data reducing server/network load, etc.

    Ultimately, the paid option is well worth it IMO.

    • Vegan_Joe@anarchist.nexusOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      2 months ago

      As averse as I am to spending money on subscription services, having my own domain for less than 30 bucks a year might be worth it.

      I think I’m going to try out the tailscale VPN route first before I fully warm up to buying a domain.

      *Edit-You’ve definitely got me sold on getting a domain! Thank you so much for all the info!

      • Darkassassin07@lemmy.ca
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        Glad I could help. I’m not always immediately available, but I don’t mind answering questions if you run into troubles. Just send me a DM and I’ll do what I can. :)

    • Rivalarrival@lemmy.today
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      You don’t need a static IP, you just have to keep track of what your current dynamic IP is.

      You still need a public IP address. More and more often, IPv4 services are provided behind CGNAT, which won’t be able to work as you describe.

      If you don’t have a public IPv4 for your LAN you can use IPv6. Or, you can reverse proxy your services through a gateway with a public IPv4.

      I use a a reverse proxy (Pangolin) running on a VPS. A Newt tunnel connects my LAN to to Pangolin, exposing my local services via subdomains.

      /edit; vpns are good and all, but they require you to setup software on the remote device to connect to it, and that typically routes most if not all your traffic back to the vpn server then out to the internet. That can create speed/bandwidth issues.

      Tailscale, ZeroTier, and other similar services generally establish direct tunnels between devices, without a separate VPN server. They use a central service merely as a sort of common meeting point (STUN/TURN) for the devices to figure out how to establish direct tunnel(s).

      • Darkassassin07@lemmy.ca
        link
        fedilink
        English
        arrow-up
        0
        ·
        2 months ago

        Fair points.

        I’ve been lucky enough to have never been behind cgnat, so I keep forgetting about it.


        My bigger concern with tailscale is being required to install software on the client. Not every device I use, I have permission to install a vpn client, nor would I want to.

        For example, I have a fileshare using Filebrowser where I store work related files that I don’t want to loose access to or need access to from multiple machines (non proprietary info, stuff IT/MGT wouldnt get mad at me for ofc. I’ve actually cleared it with my managers, so no worries). That’s also a handy way to (temporarily) share large files with people or provide a way for friends to upload large files to me.

        I also like to access my emby server (using sufficiently limited accounts), from things like the TV in the work break room, or a friends PC while I’m visiting.

        Tailscale is a hurdle that I just don’t need/want.