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

  • confusedbytheBasics@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    8 hours ago

    I keep jellyfin up to date in a container and forward tcp/8920 on my router to the container. Easy and plenty secure. People in this thread are wildly overthinking it.

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

    For now just Tailscale but I’m working on setting up a reverse proxy and SSO through Authentik

      • Player2@lemm.ee
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 days ago

        I’m trying to move away from needing a VPN to connect to make it simpler for less technically inclined family members

  • FrostyCaveman@lemm.ee
    link
    fedilink
    English
    arrow-up
    28
    ·
    edit-2
    4 days 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.

    • rumba@lemmy.zip
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 days ago

      It would cover all phones, pcs and maybe Android TVs.

      The barrier to entry would be having to replace the cert every year since we now made that a thing. Maybe spin up a self-sign shirt server and start issuing people 10 years certs

  • Encrypt-Keeper@lemmy.world
    link
    fedilink
    English
    arrow-up
    11
    ·
    edit-2
    3 days 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.

  • Vanilla_PuddinFudge@infosec.pub
    link
    fedilink
    English
    arrow-up
    33
    arrow-down
    5
    ·
    edit-2
    4 days 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
      8
      arrow-down
      2
      ·
      4 days ago

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

      • ohshit604@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        3
        ·
        edit-2
        4 days 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.

      • Vanilla_PuddinFudge@infosec.pub
        link
        fedilink
        English
        arrow-up
        1
        ·
        4 days 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.

      • ddawg@lemmynsfw.com
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        1
        ·
        4 days 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.

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

      and a local reverse proxy that can route through wireguard when you want to watch on a smart tv.

      its not as complicated as it sounds, it’s just a wireguard client, and a reverse proxy like on the main server.

      it can even be your laptop, without hdmi cables

      • phx@lemmy.ca
        link
        fedilink
        English
        arrow-up
        6
        ·
        4 days ago

        You can also use a router that can run wireguard/openvpn and have that run the tunnel back to home for you. I’ve got a portable GL-Inet router with OpenWRT that I use for this when I’m on the road

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

          or that yes, but I often don’t want to give the whole network access to my home network for security reasons, so that’s something to consider

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

          what do you mean by off network? on the wifi of a different home’s network, that has internet access?

          the wireguard client on your laptop is supposed to give the laptop (and the laptop only) access to your home network, and the reverse proxy running on the laptop is supposed to give local devices access to services at home selectively, by listening on port 443 on the local network, and processing requests to services that you defined, by forwarding them through the vpn tunnel.
          this requires that a machine at home runs a wireguard server, and that its port is forwarded in your router

    • Novi@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      49
      arrow-down
      4
      ·
      4 days ago

      I would not publicly expose ssh. Your home IP will get scanned all the time and external machines will try to connect to your ssh port.

      • Everyday0764@lemmy.zip
        link
        fedilink
        English
        arrow-up
        2
        ·
        3 days ago

        i have ssh on a random port and only get so many scan, so low that fail2ban never banned anyone that was not myself (accidentally).

      • Auli@lemmy.ca
        link
        fedilink
        English
        arrow-up
        1
        ·
        3 days ago

        Ssh has nothing to do with scanning. Your IP and everyone else up is being scanned constantly. In ipv4 space at least.

    • SapphironZA@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      3
      ·
      4 days ago

      Why would you need to expose SSH for everyday use? Or does Jellyfin require it to function?

      Maybe leave that behind some VPN access.

      • Ptsf@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        4 days ago

        Honestly you can usually just static ip the reverse proxy and open up a 1:1 port mapping directly to that box for 80/443. Generally not relevant to roll a whole DMZ for home use and port mapping will be supported by a higher % of home routing infrastructure than DMZs.

        • cm0002@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          ·
          4 days ago

          It’s beginner level, the hard part is the reverse proxy, once you have a grasp on that just having it on a dedicated box in a segmented portion on your firewall designated as the DMZ is easy. Id even go so far as to say its the bare minimum if you’re even considering exposing to the internet.

          It doesn’t even need to be all that powerful since its just relaying packets as a middleman

  • ohshit604@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    6
    ·
    edit-2
    3 days 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.

  • PieMePlenty@lemmy.world
    link
    fedilink
    English
    arrow-up
    10
    ·
    4 days 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…

      • recall519@lemm.ee
        link
        fedilink
        English
        arrow-up
        5
        ·
        3 days ago

        I run multiple enterprise companies through it who are transferring significantly more sensitive data than me. I’m not as strict as some people here, so no, I don’t really care. I think it’s the best service, especially for free, so until things change, that’s what I’m using.

        • Batman@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          edit-2
          3 days 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.

  • status6@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 days ago

    I use mTLS by adding a reverse proxy between Jellyfin and the Inet. This makes it hard to use the app, but works perfect with a browser. If you still want to use the app. There is a solution by using stunnel (termux) between te app and the Inet or better, a wireguard VPN.

  • Gravitywell@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    11
    ·
    4 days ago

    I rent a cheap $5/mo VPS and use it to run a wireguard server with wgeasy and nginx proxy manager. Everything else runs on my home server connected by wireguard.

    • TwiddleTwaddle@lemmy.blahaj.zone
      link
      fedilink
      English
      arrow-up
      1
      ·
      4 days ago

      I was just trying to get a setup like this going yesterday. I used standard Wiregaurd and got that working between the VPS and home server, but I was trying to set up Caddy as a reverse proxy to direct the incoming traffic through the WG VPN to my services. I wasnt able to figure it out yesterday. Everyone online says Caddy is so simple, but I’m such a noob I just have no idea what it’s doing or how to troubleshoot.

    • BakedCatboy@lemmy.ml
      link
      fedilink
      English
      arrow-up
      1
      ·
      4 days ago

      This is 99% my setup, just with a traefik container attached to my wifeguard container.

      Can recommend especially because I can move apartments any time, not care about CGNAT (my current situation which I predicted would be the case), and easily switch to any backup by sticking my boxes on any network with DHCP that can reach the Internet (like a 4G hotspot or a nanobeam pointed at a public wifi down the road) in a pinch without reconfiguring anything.