Skip to main content
KnowHow DB
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Media System Jellyfin

Jellyfin is a media system server.

Setup

  1. Create docker-compose.yml file:

    services:
        jellyfin:
            image: jellyfin/jellyfin:10.11.5
            container_name: jellyfin
            volumes:
                - ./config:/config
                - ./cache:/cache
                - type: bind
                    source: /mnt/extern
                    target: /extern
                    read_only: true
            restart: 'always'
            extra_hosts:
                - 'host.docker.internal:host-gateway'
            networks: ["server"]
            labels:
                - "traefik.enable=true"
                - "traefik.http.routers.jellyfin.rule=Host(`videos.${DOMAIN}`)"
            ports:
                - "8096:8096"
    
    networks:
        server:
            external: true
    
  2. Install plugins and restart

  3. Configure SSO authelia

    • create config/plugins/configurations/SSO-Auth.xml
    <?xml version="1.0" encoding="utf-8"?>
    <PluginConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SamlConfigs />
        <OidConfigs>
            <item>
                <key>
                    <string>authelia</string>
                </key>
                <value>
                    <PluginConfiguration>
                        <OidEndpoint>https://auth.DOMAIN</OidEndpoint>
                        <OidClientId>jellyfin</OidClientId>
                        <OidSecret>REDACTED</OidSecret>
                        <Enabled>true</Enabled>
                        <EnableAuthorization>true</EnableAuthorization>
                        <EnableAllFolders>true</EnableAllFolders>
                        <EnabledFolders />
                        <AdminRoles>
                            <string>jellyfin-admins</string>
                        </AdminRoles>
                        <Roles>
                            <string>jellyfin-users</string>
                            <string>jellyfin-admins</string>
                        </Roles>
                        <EnableFolderRoles>false</EnableFolderRoles>
                        <EnableLiveTvRoles>false</EnableLiveTvRoles>
                        <EnableLiveTv>false</EnableLiveTv>
                        <EnableLiveTvManagement>false</EnableLiveTvManagement>
                        <LiveTvRoles />
                        <LiveTvManagementRoles />
                        <FolderRoleMappings />
                        <RoleClaim>groups</RoleClaim>
                        <OidScopes>
                            <string>groups</string>
                        </OidScopes>
                        <SchemeOverride>https</SchemeOverride>
                        <PortOverride xsi:nil="true" />
                        <NewPath>true</NewPath>
                        <CanonicalLinks>
                        </CanonicalLinks>
                        <DefaultUsernameClaim>preferred_username</DefaultUsernameClaim>
                        <DisableHttps>false</DisableHttps>
                        <DisablePushedAuthorization>true</DisablePushedAuthorization>
                        <DoNotValidateEndpoints>false</DoNotValidateEndpoints>
                        <DoNotValidateIssuerName>false</DoNotValidateIssuerName>
                    </PluginConfiguration>
                </value>
            </item>
        </OidConfigs>
    </PluginConfiguration>