Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| services:jellyfin [2024/02/27 12:38] – created willy | services:jellyfin [2025/08/07 07:53] (current) – willy | ||
|---|---|---|---|
| Line 6: | Line 6: | ||
| A brief summary: | A brief summary: | ||
| - | * JellyFin is open-source, | + | * JellyFin is open-source, |
| * Emby used to be open-source, | * Emby used to be open-source, | ||
| * Plex is a proprietary solution that uses it's own servers to stream to you your collection. It's a hard pass for me. | * Plex is a proprietary solution that uses it's own servers to stream to you your collection. It's a hard pass for me. | ||
| Line 12: | Line 12: | ||
| ===== Installation ===== | ===== Installation ===== | ||
| - | + | You are lucky and the JellyFin | |
| - | You are lucky and the JellyFin | + | |
| <code bash> | <code bash> | ||
| echo www-apps/ | echo www-apps/ | ||
| Line 37: | Line 36: | ||
| * the cache folder under / | * the cache folder under / | ||
| * the configuration folder under / | * the configuration folder under / | ||
| - | * the logs folder under / | + | * the logs folder under / |
| which i don't like for a few reasons: | which i don't like for a few reasons: | ||
| Line 49: | Line 48: | ||
| mv / | mv / | ||
| mv / | mv / | ||
| - | mv / | ||
| </ | </ | ||
| Line 56: | Line 54: | ||
| # This is the directory that will hold all Jellyfin data, and is also used as a default base directory for some other paths below. | # This is the directory that will hold all Jellyfin data, and is also used as a default base directory for some other paths below. | ||
| JELLYFIN_DATA_DIR=/ | JELLYFIN_DATA_DIR=/ | ||
| - | |||
| - | # This is the directory where the Jellyfin logs will be stored. | ||
| - | JELLYFIN_LOG_DIR=/ | ||
| # This is the directory containing the server cache. | # This is the directory containing the server cache. | ||
| Line 67: | Line 62: | ||
| </ | </ | ||
| - | That's is, JellyFin is installed. | + | That's is, JellyFin is installed, now setup logrotation... |
| + | |||
| + | Create the file **/ | ||
| + | <file - jellyfin> | ||
| + | / | ||
| + | missingok | ||
| + | notifempty | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | that's it. | ||
| + | |||
| + | ==== SSO Configuration ==== | ||
| + | |||
| + | JeyyFin can not work with basic-auth, or at least i didnt manage to properly make it work between the web GUI and the client apps. Moreover, the Jellyfin login screen cannot be disabled, so it's pretty pointless. | ||
| + | |||
| + | Instead, Jellyfin can support, via an external plugin, an OIDC Provider like Authelia. So first of all ensure your Authelia is correctly configured as OIDC Provider (see [[services: | ||
| + | |||
| + | The SSO plugin is located [[https:// | ||
| + | |||
| + | In short you need to: | ||
| + | * Configure Authelia OIDC Client | ||
| + | * Add this plugin repository to Jellyfin configuration | ||
| + | * Load the SSO plugin | ||
| + | * Configure Jellyfin SSO plugin | ||
| + | |||
| + | This is the relevant Authelia config section (see [[https:// | ||
| + | < | ||
| + | identity_providers: | ||
| + | oidc: | ||
| + | ## The other portions of the mandatory OpenID Connect 1.0 configuration go here. | ||
| + | ## See: https:// | ||
| + | clients: | ||
| + | - client_id: ' | ||
| + | client_name: | ||
| + | client_secret: | ||
| + | public: false | ||
| + | authorization_policy: | ||
| + | require_pkce: | ||
| + | pkce_challenge_method: | ||
| + | redirect_uris: | ||
| + | - ' | ||
| + | scopes: | ||
| + | - ' | ||
| + | - ' | ||
| + | - ' | ||
| + | userinfo_signed_response_alg: | ||
| + | token_endpoint_auth_method: | ||
| + | </ | ||
| + | |||
| + | both links above should provide enough information to help you sort the Jellyfin side. | ||
| ==== Reverse-Proxy configuration ==== | ==== Reverse-Proxy configuration ==== | ||
| Line 75: | Line 121: | ||
| Add this file to / | Add this file to / | ||
| <file txt jellyfin.conf> | <file txt jellyfin.conf> | ||
| - | location ^~ /jellyfin | + | server { |
| - | | + | server_name jellyfin.mydomain.com; |
| - | | + | listen 443 ssl; |
| - | proxy_pass_request_headers on; | + | listen 8443 ssl; |
| - | proxy_set_header Host $host; | + | http2 on; |
| - | proxy_set_header X-Real-IP $remote_addr; | + | |
| - | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | + | access_log / |
| - | proxy_set_header X-Forwarded-Proto $scheme; | + | error_log / |
| - | proxy_set_header X-Forwarded-Host $http_host; | + | |
| - | proxy_set_header Upgrade $http_upgrade; | + | |
| - | proxy_set_header Connection $http_connection; | + | proxy_pass http:// |
| - | proxy_set_header Remote-User $remote_user; | + | proxy_pass_request_headers on; |
| - | proxy_buffering off; | + | proxy_set_header Host $host; |
| + | proxy_set_header X-Real-IP $remote_addr; | ||
| + | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
| + | proxy_set_header X-Forwarded-Proto $scheme; | ||
| + | proxy_set_header X-Forwarded-Host $http_host; | ||
| + | proxy_set_header Upgrade $http_upgrade; | ||
| + | proxy_set_header Connection $http_connection; | ||
| + | proxy_set_header Remote-User $remote_user; | ||
| + | proxy_buffering off; | ||
| + | } | ||
| + | |||
| + | client_max_body_size 100M; | ||
| } | } | ||
| </ | </ | ||
| Line 98: | Line 155: | ||
| < | < | ||
| ... | ... | ||
| - | < | + | < |
| ... | ... | ||
| < | < | ||