Hi folks. So, I know due to a myriad of reasons I should not allow Jellyfin access to the open internet. However, in trying to switch family over from Plex, I’ll need something that “just works”.

How are people solving this problem? I’ve thought about a few solutions, like whitelisting ips (which can change of course), or setting up VPN or tail scale (but then that is more work than they will be willing to do on their side). I can even add some level of auth into my reverse proxy, but that would break Jellyfin clients.

Wondering what others have thought about for this problem

  • cantankerous_cashew@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    6 days ago

    Unethical life pro tip, but I use the free tier of Cloudflare tunnels and Cloudflare access to gate access to my jellyfin instance. This is technically against their TOS but I don’t cache anything and my bandwidth usage is low so it’s probably not too noticeable. I’ll update this post if I get banned at some point 🤡

  • Shimitar@downonthestreet.eu
    link
    fedilink
    English
    arrow-up
    37
    arrow-down
    13
    ·
    9 days ago

    You can share jellyfin on the net. I do.

    The issues shared wide and large are mostly moot points, where the attacker needs to already have access to the jellyfin itself to have any surface.

    Its FUD and I am convinced spread by Plex people in an effort to cover up their fuckup and enshittyfication.

    • sugar_in_your_tea@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      10
      arrow-down
      2
      ·
      9 days ago

      I love Jellyfin and use it. I also think the security issues are very serious and it’s irresponsible to not fix them. At the very least they can make a new API and give users the option to enable or disable the insecure one until clients get updated. But they don’t.

      I’ve decided to remove public access to my Jellyfin server until it’s resolved, though it’s still accessible behind my VPN.

    • Possibly linux@lemmy.zip
      link
      fedilink
      English
      arrow-up
      12
      arrow-down
      7
      ·
      9 days ago

      That’s a bad idea for so many reasons

      The internet is full of bots pounding at your machines to get in. It is only a matter of time until the breach Jellyfin. At the very least you want a reverse proxy with proper security.

      I don’t see why you would put something like Jellyfin in the internet. Use a VPN solution.

      • dogs0n@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        4
        arrow-down
        1
        ·
        8 days ago

        The internet is full of bots pounding at your machines to get in. It is only a matter of time until the breach Jellyfin.

        If you are talking about brute force attacks for your password, then use a good password… and something like fail2ban to block ips that are spamming you.

        This point doesn’t exactly match, but: public services like google auth don’t require users use vpns. They have a lot more money to keep stuff secure, but you may see my point… auth isn’t too trivial of a feature to keep secure nowadays. They implement similar protections, something to block spammers and make users have good passwords (if you dont use a good password, you are still vulnerable on any service).

        • Possibly linux@lemmy.zip
          link
          fedilink
          English
          arrow-up
          6
          arrow-down
          2
          ·
          8 days ago

          The password is totally irrelevant for the most part. The worst case is that they get access to the dashboard

          The problem is when major security vulnerabilities are found like remote code execution

    • yeehaw@lemmy.ca
      link
      fedilink
      English
      arrow-up
      2
      ·
      9 days ago

      I also think Plex probably has open vulns and it’s also a more known target. The nail that sticks out furthest gets nailed down.

    • MaggiWuerze@feddit.org
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 days ago

      Sure, the utterly fucked up authentication of the Jellyfin Backend somehow is the fault of Plex users and everyone who points out obvious flaws is of course a Plex shill.

      Maybe you should take a look at what you are defending here. The fact that the devs openly refuse to fix this to maintain backwards compatibility, thus endangering their users speaks a lot about the quality of the project

  • Chris@lemmy.world
    link
    fedilink
    English
    arrow-up
    15
    arrow-down
    2
    ·
    9 days ago

    When I did this I set up a VPN on my network and forced anyone that wanted to use it to get on my network.

      • Chris@lemmy.world
        link
        fedilink
        English
        arrow-up
        11
        ·
        9 days ago

        Probably doesn’t. Might need to use the router to get the whole network on th vpn

      • sugar_in_your_tea@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        1
        ·
        edit-2
        9 days ago

        I have my smart TV access it over my local network. If you’re using a friend’s instance, you could set up a WiFi SSID that tunnels everything over your VPN.

        If that’s onerous, you can make it publicly accessible, but only for whitelisted client IPs.

        • Blue_Morpho@lemmy.world
          link
          fedilink
          English
          arrow-up
          4
          ·
          9 days ago

          Yeah I want to completely switch off of Plex but neither is a good solution for my non tech family members. Mother in law is in a retirement center where they use wifi provided for the condos so I can’t access her router. And I would expect her ip to occasionally change on reboots etc. I might try IP ranges or narrow geo blocking.

          • sugar_in_your_tea@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            3
            arrow-down
            1
            ·
            9 days ago

            Yeah, an IP range totally works. Figure out the subnet info and add that to a whitelist. It’s a pain, but it should keep the script kiddies at bay.

  • ch8zer@lemmy.ca
    link
    fedilink
    English
    arrow-up
    13
    arrow-down
    2
    ·
    9 days ago

    AppleTV + Tailscale in and it’s been a flawless experience.

  • Getting6409@lemm.ee
    link
    fedilink
    English
    arrow-up
    10
    ·
    edit-2
    8 days ago

    I expose jellyfin to the internet, and some precautions I have taken that I don’t see mentioned in these answers are: 1) run jellyfin as a rootless container, and 2) use read-only storage where ever possible. If you have other tools managing things like subtitles and metadata files before jellyfin there’s no reason for jellyfin to have write access to the media it hosts. While this doesn’t directly address the documented security flaws with jellyfin, you may as well treat it like a diseased plague rat if you’re going to expose it. To me, that means worst case scenario is the thing is breached and the only thing for an attacker to do is exfiltrate things limited to jellyfin.

  • Xanza@lemm.ee
    link
    fedilink
    English
    arrow-up
    10
    arrow-down
    1
    ·
    9 days ago

    There are two routes. VPN and VPS.

    VPN; setup wireguard and offer services to your wireguard network.

    VPS; setup a VPS to act as a reverse proxy for your jellyfin instance.

    Each have their own perks. Each have their own caveats.

      • Xanza@lemm.ee
        link
        fedilink
        English
        arrow-up
        4
        ·
        8 days ago

        You’re exposing your jellyfin instance to a single IP, your VPS. That’s what a reverse proxy is.

        You block all communication from any IP but local, and your VPS IP from jellyfin, and forward web traffic from your VPS to your jellyfin instance. It’s not the same as exposing your jellyfin instance directly. Not sure why I have to explain that…but here we are, I guess.

  • majestictechie@lemmy.fosshost.com
    link
    fedilink
    English
    arrow-up
    8
    ·
    9 days ago

    I do. I run it behind a caddy service so it’s secured with an SSL. The port is running on a high non standard one. I do keep checking access logs but haven’t had a peep apart from the 1 person I shared it with

    • yeehaw@lemmy.ca
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      2
      ·
      9 days ago

      That port changing stuff is way outdated and hasn’t been effective for a long time.

      • majestictechie@lemmy.fosshost.com
        link
        fedilink
        English
        arrow-up
        2
        ·
        9 days ago

        A quick scan will show it ofcourse. But it stops bots and stuff just hitting “known” ports. I’ve not had any issues in the months it’s been active compared to the previous month’s I just used the standard port

  • non_burglar@lemmy.world
    link
    fedilink
    English
    arrow-up
    9
    arrow-down
    1
    ·
    8 days ago

    Oof, a lot of vitriol in this thread.

    In the end, security is less about tooling and config, and more about understanding the risks and acting accordingly.

    I expose jellyfin to the internet, but only to a specific public IP. That reduced my risk considerably.

  • Darkassassin07@lemmy.ca
    link
    fedilink
    English
    arrow-up
    7
    ·
    7 days ago

    I’m so tired of seeing this overblown reaction to ancient non-news.

    Yes, there are some minor vulnerabilities in Jellyfin; but they really really aren’t concerning.

    Unauthenticated, a random person could potentially (with some prior knowledge of this specific issue, and some significant effort randomly generating media UUIDS to tryout) retrieve/playback some media unauthorized. THATS IT. That’s the ONLY real concern. And it’s one you could mitigate with a fail2ban filter if you were that worried about it.

    The other ‘issues’ here, are the potential for your already authenticated users to attack each others settings. Who do you share your server with that you’re concerned about them attacking each other???

    Put this to bed and stop fussing over it. It’s genuinely not worth your time or attention. Exposing Jellyfin to the net is fine.

    Dev comment on the situation: (4 days ago) https://github.com/jellyfin/jellyfin/issues/5415#issuecomment-2825240290

  • merthyr1831@lemmy.ml
    link
    fedilink
    English
    arrow-up
    6
    ·
    edit-2
    9 days ago

    I have it as an unprivileged container behind a reverse proxy and HTTPS/HSTS. I know it’s not perfect but I keep backups of important shit and monitor things regularly.

    I agree that Jellyfin needs to improve its API security, though. Their excuse that “it would break clients on old APIs” is moot when C# comes with API versioning features out of the box.

  • fishynoob@infosec.pub
    link
    fedilink
    English
    arrow-up
    6
    ·
    9 days ago

    I don’t do this, but I would set up oAuth like Authelia or something behind a reverse-proxy and authenticate Jellyfin clients through that.

  • RonnyZittledong@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    9 days ago

    You could probably set up a cloudflare tunnel. I forget what they call it. I think technically sending video through it is against their TOS but if just a few friends and family are using it I doubt you will hit their naughty list.

    • Censed@lemmy.zip
      link
      fedilink
      English
      arrow-up
      2
      ·
      9 days ago

      I’ve heard mixed responses about how sensitive they are about routing video through their service. I’ve heard some people are just fine running jellyfin/Plex while others get shut down from routing a security system through it.

      • Clusterfck@lemmy.sdf.org
        link
        fedilink
        English
        arrow-up
        2
        ·
        9 days ago

        I’ve used it about 2 years now. I have both Jellyfin and even had Invidious for a while. I don’t even know it was against any terms until right now.

  • Possibly linux@lemmy.zip
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    9 days ago

    Netbird/Tailscale

    You also could use Wireguard as it is a p2p protocol by default.

    If you have IPv6 access you could put in on a IPv6 address

      • zenpocalypse@lemm.ee
        link
        fedilink
        English
        arrow-up
        5
        ·
        edit-2
        7 days ago

        Reading over that list, I don’t really see anything that isn’t “maybe gets read privileges for non-critical data”. Hardly useful enough to be worth attempting access to a single personal Jellyfin server.

        I’d be mildly surprised if anyone has ever bothered.

        You do you, but in my view the effort outweighs the benefits.

        • NicestDicerest@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          7 days ago

          Sure, and its your own choice - But you should still be aware of what could/can happen, so that you can make this decisions informed. Maybe I worded it a bit too harshly, i’m sorry English is not my first language.

      • Synestine@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        5
        ·
        9 days ago

        The reverse proxy is the part that’s exposed. CrowdSec watches the logs for intrusion attempts like fail2ban would.

      • airgapped@piefed.social
        link
        fedilink
        English
        arrow-up
        3
        ·
        9 days ago

        A reverse proxy saves you from having to expose your services directly and acts as a go-between.

        Internet <--> Reverse Proxy <--> Service

          • Codilingus@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            2
            ·
            9 days ago

            Think of it as more modular.

            I personally used Traefik, but only because I’m a masochist and it would be useful to know in IT workplace.

            Traefik + CrowdSec + CowdSec Traefik Bouncer.

            Traefik handles the traffic, and said traffic has to get a green light from CrowdSec + Bouncer before it can go anywhere.

            The concept of CrowdSec is honestly super awesome.

          • greyfox@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            8 days ago

            Depending on how you setup your reverse proxy it can reduce random scanning/login attempts to basically zero. The point of a reverse proxy is to act as a proxy, as a sort of web router, and to validate that the http requests are correctly formatted.

            For the routing depending on what DNS name/path the request comes in with it can route to different backends. So you can say that app1.yourdomain.com is routed to the internal IP address of your app1, and app2.yourdomain.com goes to app2. You can also do this with paths if the applications can handle it. Like yourdomain.com/app1.

            When your client makes a request the reverse proxy uses the “Host” header or the SNI string that is part of the TLS connection to determine what certificate to use and what application to route to.

            There is usually a “default” backend for any request that doesn’t match any of the names for your backend services (like a scanner blindly trying to access your IP). If you disable the default backend or redirect default requests to something that you know is secure any attacker scanning your IP for vulnerabilities would get their requests rejected. The only way they can even try to hit your service is to know the correct DNS name of your service.

            Some reverse proxies (Traefik, HAproxy) have options to reject the requests before the TLS negation has even completed. If the SNI string doesn’t match the connection just drops it doesn’t even bother to send a 404/5xx error. This can prevent an attacker from doing information gathering about the reverse proxy itself that might be helpful in attacking it.

            This is security by obscurity which isn’t really security, but it does reduce your risk because it significantly reduces the chances of an attacker being able to find your applications.

            Reverse proxies also have a much narrower scope than most applications as well. Your services are running a web server with your application, but is Jellyfin’s built in webserver secure? Could an attacker send invalid data in headers/requests to trigger a buffer overflow? A reverse proxy often does a much better job of preventing those kinds of attacks, rejecting invalid requests before they ever get to your application.

          • Possibly linux@lemmy.zip
            link
            fedilink
            English
            arrow-up
            1
            ·
            9 days ago

            It protects against vulnerabilities in layer 3 of the OSI model. It is the thing that gets hit from the outside while the back end is hidden away. This makes some attacks much harder.