What’s your go too (secure) method for casting over the internet with a Jellyfin server.

I’m wondering what to use and I’m pretty beginner at this

        • Batman@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          33 minutes ago

          I expose jellyfin and keycloak to the internet with pangolin, jellyfin user only has read access. Using the sso 🔌 jellyfin listens to my keycloak which has Google as an identity provider(admin disabled), restricting access to my users, but letting people use their google identity. Learned my family doesn’t use anything that isn’t sso head-to-toe.

          It’s what we do in the shadows that makes us heroes, kalpol.

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

    “Technically” my jellyfin is exposed to the internet however, I have Fail2Ban setup blocking every public IP and only whitelisting IP’s that I’ve verified.

    I use GeoBlock for the services I want exposed to the internet however, I should also setup Authelia or something along those lines for further verification.

    Reverse proxy is Traefik.

  • Encrypt-Keeper@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    4 hours ago

    If you’re a beginner and you’re looking for the most secure way with least amount of effort, just VPN into your home network using something like WireGuard, or use an off the shelf mesh vpn like Tailscale to connect directly to your JF server. You can give access to your VPN to other people to use. Tailscale would be the easiest to do this with, but if you want to go full self-hosted you can do it with WireGuard if you’re willing to put in a little extra leg work.

    What I’ve done in the past is run a reverse proxy on a cloud VPS and tunnel that to the JF server. The cloud VPS acts as a reverse proxy and a web application firewall which blocks common exploits, failed connection attempts etc. you can take it one step beyond that if you want people to authenticate BEFORE they reach your server by using an oauth provider and whatever forward Auth your reverse proxy software supports.

  • _cryptagion [he/him]@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    27
    arrow-down
    1
    ·
    9 hours ago

    My go to secure method is just putting it behind Cloudflare so people can’t see my IP, same as every other service. Nobody is gonna bother wasting time hacking into your home server in the hopes that your media library isn’t shit, when they can just pirate any media they want to watch themselves with no effort.

    • Encrypt-Keeper@lemmy.world
      link
      fedilink
      English
      arrow-up
      7
      arrow-down
      3
      ·
      4 hours ago

      Nobody is gonna bother wasting time hacking into your home server

      They absolutely will lol. It’s happening to you right now in fact. It’s not to consume your media, it’s just a matter of course when you expose something to the internet publicly.

      • Auli@lemmy.ca
        link
        fedilink
        English
        arrow-up
        4
        arrow-down
        3
        ·
        3 hours ago

        What a bunch of B’s. Sure your up gets probed it’s happening to every ipv4 address all the time. But that is not hacking.

        • Encrypt-Keeper@lemmy.world
          link
          fedilink
          English
          arrow-up
          5
          arrow-down
          1
          ·
          edit-2
          3 hours ago

          Anything you expose to the internet publicly will be attacked, just about constantly. Brute force attempts, exploit attempts, the whole nine. It is a ubiquitous and fundamental truth I’m afraid. If you think it’s not happening to you, you just don’t know enough about what you’re doing to realize.

          You can mitigate it, but you can’t stop it. There’s a reason you’ll hear terms like “attack surface” used when discussing this stuff. There’s no “if” factor when it comes to being attacked. If you have an attack surface, it is being attacked.

          • mic_check_one_two@lemmy.dbzer0.com
            link
            fedilink
            English
            arrow-up
            2
            ·
            19 minutes ago

            Yup, the sad reality is that you don’t need to worry about the attacks you expect; You need to worry about the ones you don’t know anything about. Honeypots exist specifically to alert you that something has been breached.

          • David J. Atkinson@c.im
            link
            fedilink
            arrow-up
            4
            ·
            3 hours ago

            @EncryptKeeper That’s my experience. Zombied home computers are big business. The networks are thousands of computers. I had a hacker zombie my printer(!) maybe via an online fax connection and it/they then proceeded to attack everything else on my network. One older machine succumbed before I could lock everything down.

      • _cryptagion [he/him]@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        2
        ·
        4 hours ago

        No, people are probing it right now. But looking at the logs, nobody has ever made it through. And I run a pretty basic setup, just Cloudflare and Authelia hooking into an LDAP server, which powers Jellyfin. Somebody who invests a little more time than me is probably a lot safer. Tailscale is nice, but it’s overkill for most people, and the majority of setups I see posted here are secure enough to stop any random scanning that happens across them, if not dedicated attention.

        • Encrypt-Keeper@lemmy.world
          link
          fedilink
          English
          arrow-up
          4
          arrow-down
          1
          ·
          edit-2
          3 hours ago

          No, they are actively trying to get in right now. If you have Authelia exposed they’re brute forcing it. They’re actively trying to exploit vulnerabilities that exist in whatever outwardly accessible software you’re exposing is, and in many cases also in software you’re not even using in scattershot fashion. Cloudflare is blocking a lot of the well known CVEs for sure, so you won’t see those hit your server logs. If you look at your Authelia logs you’ll see the login attempts though. If you connect via SSH you’ll see those in your server logs.

          You’re mitigating it, sure. But they are absolutely 100% trying to get into your server right now, same as everyone else. There is no consideration to whether you are a self hosted or a Fortune 500 company.

          • _cryptagion [he/him]@lemmy.dbzer0.com
            link
            fedilink
            English
            arrow-up
            1
            arrow-down
            2
            ·
            2 hours ago

            No, they are actively trying to get in right now. If you have Authelia exposed they’re brute forcing it.

            No, they aren’t. Just to be sure, I just checked it, and out of the over 2k requests made to the Authelia login page in the last 24 hours, none have made it to the login page itself. You don’t know jack shit about what’s going on in another persons network, so I’m not sure why you’re acting like some kind of expert.

            • Encrypt-Keeper@lemmy.world
              link
              fedilink
              English
              arrow-up
              2
              arrow-down
              1
              ·
              edit-2
              1 hour ago

              Yes they are. The idea that they’re not would be a statistical wonder.

              2k requests made to the Authelia login page in the last 24 hours

              Are you logging into your Authelia login page 2k times a day? If not, I suspect that some (most) of those are malicious lol.

              You don’t know jack shit about what’s going on in another persons network

              It’s the internet, not your network. And I’m well aware of how the internet works. What you’re trying to argue here is like arguing that there’s no possible way that I know your part of the earth revolves around the sun. Unless you’re on a different internet from the rest of us, you’re subject to the same behavior. I mean I guess I didn’t ask if you were hosting your server in North Korea but since you’re posting here, I doubt it.

              I’m not sure why you’re acting like some kind of expert

              Well I am an expert with over a decade of experience in cybersecurity, but I’m not acting like an expert here, I’m acting like somebody with at least a rudimentary understanding of how these things work.

              • _cryptagion [he/him]@lemmy.dbzer0.com
                link
                fedilink
                English
                arrow-up
                1
                arrow-down
                4
                ·
                1 hour ago

                Yes they are. The idea that they’re not would be a statistical wonder.

                Guess I’m a wonder then. I’ve always thought of myself as pretty wonderful, I’m glad to hear you agree.

                Are you logging into your Authelia login page 2k times a day? If not, I suspect that some (most) of those are malicious lol.

                That’s 2k requests made. None of them were served. Try to keep up.

                Well I am an expert with over a decade of experience in cybersecurity, but I’m not acting like an expert here, I’m acting like somebody with at least a rudimentary understanding of how these things work.

                Then I guess I should get a career in cybersecurity, because I obviously know more than someone with over a decade of supposed experience. If you were worth whatever your company is paying you in wages, you would know that a rule blocking connections from other countries, and also requiring the request for the login page come from one of the services on your domain, will block virtually all malicious attempts to access your services. Such a rule doesn’t work for a public site, but for a selfhosted setup it’s absolutely an easy option to reduce your bandwidth usage and make your setup far more secure.

                • Encrypt-Keeper@lemmy.world
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  arrow-down
                  1
                  ·
                  1 hour ago

                  a rule blocking connections from other countries, and also requiring the request for the login page come from one of the services on your domain, will block virtually all malicious attempts to access your services.

                  Whoa whoa whoa. What malicious attempts?

                  You just told me you were the statistical wonder that nobody is bothering attack?

                  That’s 2k requests made. None of them were served.

                  So those 2k requests were not you then? They were hostile actors attempting to gain unauthorized access to your services?

                  Well there we have it folks lmao

  • fmstrat@lemmy.nowsci.com
    link
    fedilink
    English
    arrow-up
    18
    ·
    9 hours ago

    I used to do all the things mentioned here. Now, I just use Wireguard. If a family member wants to use a service, they need Wireguard. If they don’t want to install it, they dont get the service.

    • nfreak@lemmy.ml
      link
      fedilink
      English
      arrow-up
      2
      ·
      8 hours ago

      I started my homelab with a couple exposed services, but frankly the security upkeep and networking headaches weren’t worth the effort when 99% of this server’s usage is at home anyway.

      I’ve considered going the Pangolin route to expose a handful of things for family but even that’s just way too much effort for very little added value (plus moving my reverse proxy to a VPS doesn’t sound ideal in case the internet here goes down).

      Getting 2 or 3 extra folks on to wireguard as necessary is just much easier.

  • snowflocke@feddit.org
    link
    fedilink
    English
    arrow-up
    8
    ·
    10 hours ago

    We have it open to the public, behind a load balancer URL filtering incomming connection, https proxied through cloudflare with a country filter in place

  • Scavenger8294@feddit.org
    link
    fedilink
    English
    arrow-up
    21
    ·
    12 hours ago

    for me the easiest option was to set up tailscale on the server or network where jellyfin runs and then on the client/router where you want to watch the stream.

    • Q The Misanthrope @startrek.website
      link
      fedilink
      English
      arrow-up
      7
      ·
      10 hours ago

      This is also what I do, however, each user creates their own tailnet, not an account on mine and I share the server to them.

      This way I keep my 3 free users for me, and other people still get to see jellyfin.

      Tailscale and jellyfin in docker, add server to tailnet and share it out to your users emails. They have to install tailscale client in a device, login, then connect to your jellyfin. My users use Walmart Onn $30 streaming boxes. They work great.

      I struggled for a few weeks to get it all working, there’s a million people saying “I use this” but never “this is how to do it”. YouTube is useless because it’s filled with “jellyfin vs Plex SHOWDOWN DEATH FIGHT DE GOOGLE UR TOILET”.

  • FrostyCaveman@lemm.ee
    link
    fedilink
    English
    arrow-up
    34
    ·
    edit-2
    15 hours ago

    I think my approach is probably the most insane one, reading this thread…

    So the only thing I expose to the public internet is a homemade reverse proxy application which supports both form based and basic authentication. The only thing anonymous users have access to is the form login page. I’m on top of security updates with its dependencies and thus far I haven’t had any issues, ever. It runs in a docker container, on a VM, on Proxmox. My Jellyfin instance is in k8s.

    My mum wanted to watch some stuff on my Jellyfin instance on her Chromecast With Google TV, plugged into her ancient Dumb TV. There is a Jellyfin Android TV app. I couldn’t think of a nice way to run a VPN on Android TV or on any of her (non-existent) network infra.

    So instead I forked the Jellyfin Android TV app codebase. I found all the places where the API calls are made to the backend (there are multiple). I slapped in basic auth credentials. Recompiled the app. Deployed it to her Chromecast via developer mode.

    Solid af so far. I haven’t updated Jellyfin since then (6 months), but when I need to, I’ll update the fork and redeploy it on her Chromecast.

  • smiletolerantly@awful.systems
    link
    fedilink
    English
    arrow-up
    24
    arrow-down
    2
    ·
    16 hours ago

    I host it publicly accessible behind a proper firewall and reverse proxy setup.

    If you are only ever using Jellyfin from your own, wireguard configured phone, then that’s great; but there’s nothing wrong with hosting Jellyfin publicly.

    I think one of these days I need to make a “myth-busting” post about this topic.

  • PieMePlenty@lemmy.world
    link
    fedilink
    English
    arrow-up
    12
    ·
    14 hours ago

    I access it through a reverse proxy (nginx). I guess the only weak point is if someone finds out the domain for it and starts spamming the login screen. But I’ve restricted access to the domain for most of the world anyway. Wireguard would probably be more secure but its not always possible if like on vacation and want to use it on the TV there…

    • EpicFailGuy@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 hours ago

      I’m currently using CF Tunnels and I’m thinking about this (I have pretty good offers for VPS as low as $4 a month)

      Can you comment on bandwidth expectations? My concern is that I also tunnel Nextcloud and my offsite backups and I may exceed the VPS bandwidth restrictions.

      BTW I’m testing Pangolin which looks AWESOME so far.

      • skoell13@feddit.org
        link
        fedilink
        English
        arrow-up
        2
        ·
        7 hours ago

        I am using the free Oracle VPS offer until they block me, so far I have no issue. Alzernatively I wanted to check out IONOS, since you dont have a bandwidth limit there.

        • EpicFailGuy@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          7 hours ago

          WOW! That’s one hell of a deal. You’ve convinced me XD I’m installing pangolin Right now. The hell with Cloudflare and their evil ways

  • Vanilla_PuddinFudge@infosec.pub
    link
    fedilink
    English
    arrow-up
    42
    arrow-down
    6
    ·
    edit-2
    19 hours ago

    Jellyfin isn’t secure and is full of holes.

    That said, here’s how to host it anyway.

    1. Wireguard tunnel, be it tailscale, netbird, innernet, whatever
    2. A vps with a proxy on it, I like Caddy
    3. A PC at home with Jellyfin running on a port, sure, 8096

    If you aren’t using Tailscale, make your VPS your main hub for whatever you choose, pihole, wg-easy, etc. Connect the proxy to Jellyfin through your chosen tunnel, with ssl, Caddy makes it easy.

    Since Jellyfin isn’t exactly secure, secure it. Give it its own user and make sure your media isn’t writable by the user. Inconvenient for deleting movies in the app, but better for security.

    more…

    Use fail2ban to stop intruders after failed login attempts, you can force fail2ban to listen in on jellyfin’s host for failures and block ips automatically.

    More!

    Use Anubis and yes, I can confirm Anubis doesn’t intrude Jellyfin connectivity and just works, connect it to fail2ban and you can cook your own ddos protection.

    MORE!

    SELinux. Lock Jellyfin down. Lock the system down. It’s work but it’s worth it.

    I SAID MORE!

    There’s a GeoIP blocking plugin for Caddy that you can use to limit Jellyfin’s access to your city, state, hemisphere, etc. You can also look into whitelisting in Caddy if everyone’s IP is static. If not, ddns-server and a script to update Caddy every round? It can get deep.

    Again, don’t do any of this and just use Jellyfin over wireguard like everyone else does(they don’t).

    • oyzmo@lemmy.world
      link
      fedilink
      English
      arrow-up
      10
      ·
      17 hours ago

      Wow, a “for dummies” guide for doing all this would be great 😊 know of any?

      • Vanilla_PuddinFudge@infosec.pub
        link
        fedilink
        English
        arrow-up
        3
        ·
        12 hours ago

        I figured infodump style was a bit easier for me at the time so anyone could take anything I namedropped and go search to their heart’s content.

      • ohshit604@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        4
        ·
        edit-2
        15 hours ago

        If you aren’t already familiarized with the Docker Engine - you can use Play With Docker to fiddle around, spin up a container or two using the docker run command, once you get comfortable with the command structure you can move into Docker Compose which makes handling multiple containers easy using .yml files.

        Once you’re comfortable with compose I suggest working into Reverse Proxying with something like SWAG or Traefik which let you put an domain behind the IP, ssl certificates and offer plugins that give you more control on how requests are handled.

        There really is no “guide for dummies” here, you’ve got to rely on the documentation provided by these services.

    • ☂️-@lemmy.ml
      link
      fedilink
      English
      arrow-up
      2
      ·
      15 hours ago

      i would also love more details about accomplishing some of that stuff

      • ddawg@lemmynsfw.com
        link
        fedilink
        English
        arrow-up
        2
        ·
        11 hours ago

        I’ve recently been working on my own server and a lot of this stuff can be accomplished by just chatting with chatgpt/gemini or any ai agent of your choosing. One thing to note tho is that they have some outdated information due to their training data so you might have to cross reference with the documentation.

        Use docker as much as you can, this will isolate the process so even if somehow you get hacked, the visibility the hackers get into your server is limited to the docker container.