Hello. I have just recently started with self hosting my media with Jellyfin… and I am LOVING it! I had been carrying around media players for decades, with everyone looking at me like an insane crank for not giving up on my hundreds of gigs of media for SAS things like spotify… now they’re jealous! We’ve come full circle!

Annnyway. Obviously, I want to access the server anywhere, and don’t want to just raw-dog an open port to the internet- yikes!

There are SO MANY ways and guides and thoughts on this, I’m a bit overwhelmed and looking for your thoughts on the best way to start off… it doesn’t have to be ‘fort knox’ and I am sure I’ll adjust and pivot as I learn more… but here are the options I know of (did I miss any?):

  • Tailscale VPN connection

  • Reverse Proxy with Caddy or similar (this is recommended as easy in the jellyfin official guides and thus is my current leading contender!)

  • Docker/VM ‘containerized’ server with permissions/access control

What are your thoughts on the beginner-friendly-ness and ease of setup/management of these? This is exclusively for use by me and my family, so I don’t need something that’s easy for anyone to access with credentials… just our handful of devices.

Please don’t laugh, but I’m currently hosting on a Raspberry Pi5 with a big-ass harddrive attached (using CasaOS on a headless Ubuntu Server). I know this is JANK as far as self-hosting goes, and plan to upgrade to something like NAS in the future, but I’m still researching and learning, and aside from shitty video transcoding, it’s working fine for now… Thank you in advance for your advice, help and thoughts!

  • glizzyguzzler@piefed.blahaj.zone
    link
    fedilink
    English
    arrow-up
    16
    arrow-down
    1
    ·
    edit-2
    17 hours ago

    Reading jellyfin’s issues it’s clear its web ui and API cannot be allowed to talk to the general internet.

    I’d push for a VPN solution first. Tailscale or wireguard. If you’re happy with cloudflare sniffing all traffic and that they make take it away suddenly someday use their tunnel with authentication.

    The only other novel solution I’d suggest is putting jellyfin behind an Authentik wall (not OIDC, though you can use OIDC for users after the wall). That puts security on Authentik, and that’s their only job so hopefully that works. I’d use that if VPN (tailscale or wireguard) are problematic for access. The downside is that jellyfin apps will not be able to connect, only web browsers that can log into the Authentik web ui wall.

    Flow would go caddy/other reverse proxy -> Authentik wall for jellyfin -> jellyfin

    I’d put everything in docker, I’d put caddy and Authentik in a VM for a DMZ (incus + Zabbly repo web ui to manage the VM), I’d set all 3 in the compose to read-only, user:####:####, cap-drop all, no new privileges, limited named networks.

    Podman quadlets would be even better security than docker, but there’s less help for that (for now). Do docker and get something working to start, then grow from there

    • Profligate_parasite@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      7 hours ago

      Thanks for your comment. There are several things/products/methods you mention that I’m not familiar with and/or don’t understand:

      Authentik Wall OIDC DMZ Incus Zabbly “in the compose” cap-drop all Podman quadlets

      As I mentioned, I’m new here. I could just put each of these in duckduckgo in succession, but do you have a particular guide or link that describes any of this for someone less familiar with the process than yourself?

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

        The general jist is, do not expose Jellyfin to the internet. Neither via a port nor through a reverse proxy. Its simply not build secure enough for that.

        Use docker to make the setup easier, then use tailscale or whatever VPN solution to allow users from outside your network to access it.

        All of the additional authentication solutions mentioned break client compatibility. Then you could only watch through a browser.

        Install docker, deploy Jellyfin to it, test it. They both have good guides on their respective websites.

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

      I’m working on deploying Client side certificates that are validated by Caddy

      Do you know if that will break applications?

      • glizzyguzzler@piefed.blahaj.zone
        link
        fedilink
        English
        arrow-up
        1
        ·
        17 hours ago

        I am not familiar with deploying client side certificates unfortunately. I hope it works, if the certificate is at the OS level and the application will use it, I feel it will work… not sure, in-browser feels straight forward at least