sam-6174 / jellytin

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Jellytin

Put your local Jellyfin server in a tin, and securely serve it up on the internet πŸš€

Intro

This project is especially helpful if you:

  1. Have a local Jellyfin server that you want to access over the internet
  2. Do not currently have any infrastructure to expose services to the internet
  3. Wish to hide + secure Jellyfin behind an identity provider
  4. Wish to use Jellyfin clients (Android, etc.)

If you're wondering, "why can't I just expose my Jellyfin server to the internet?" I recommend reading Collection of potential security issues in Jellyfin

The final deployment looks like this:

πŸ‘€ -> VPS -> Nginx -> Tailscale -> Nginx -> Authentik -> Jellyfin

Dependencies

  • Virtual Private Server (VPS)
    • BuyKVM is $2/month, but any VPS with an IPv4 address will do
    • Additional layer of security, e.g. hide your personal IP
  • Nginx Proxy Manager
    • Management UI for Nginx
  • Tailscale
    • Tunnel from VPS to your local network
  • Authentik
    • Provide authentication via LDAP, SSO, etc.
  • Jellyfin
    • You should already have a Jellyfin server

Future Improvements

  1. Keep an eye on Jellyfin's SSO plugin and incorporate it here, once it is stable and no longer "100% alpha software."

  2. Await NPM's Fail2Ban feature request.

  3. Await NPM's CrowdSec feature request.

Footnote

If you're using a Raspberry Pi, then you will need the 64-bit OS.

Instructions

Install docker & docker-compose

Deploy Authentik

Deploy Nginx Proxy Manager

Purchase & Configure Cloudflare Domain

Harden Your VPS

Configure Tailscale

Deploy VPS Tunnel

Deploy NPM Tunnel

Configure Tunnel Routing

Configure Nginx -> Authentik

Configure Authentik -> Jellyfin

Deploy Authentik LDAP Service

Configure Jellyfin for LDAP Authentication

Create Jellyfin Users via Authentik

Configure NPM to Enable Jellyfin Client Apps


The End πŸŽ‰

You can use the helper script at ./all.sh to control this stack.

About


Languages

Language:Shell 100.0%