- Go Template 82.9%
- Shell 17.1%
| charts/jellyfin-3.2.0/jellyfin | ||
| k8up-backup | ||
| resources | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .sops.yaml | ||
| kustomization.yaml | ||
| kustomize-build.sh | ||
| README.md | ||
| renovate.json | ||
| values.yaml | ||
Jellyfin
Repository Layout
This is a Kubernetes deployment repo managed by ArgoCD.
Edit kustomization.yaml, values.yaml, resources/, or patches/ directly.
ArgoCD syncs from the repository root.
To render manifests locally (uses the same image as CI and ArgoCD):
./kustomize-build.sh
About Jellyfin
Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps.
Configuration
The deployment includes:
- Jellyfin server with web interface on port 8096
- Persistent storage for configuration, cache, and media
- Ingress configured for
video.xarif.dewith automatic TLS - Resource limits set to 2 CPU cores and 4GB RAM max
- Discovery service for local client auto-discovery
- K8up backup integration for automated backups
Storage Requirements
- Config: 1GB for Jellyfin configuration and metadata
- Cache: 10GB for transcoding cache and thumbnails
- Media: 500GB for media files (adjust as needed)
The media volume is mounted read-only by default for security.
Access
- Web interface: https://video.xarif.de
- Local discovery: Available on port 7359/UDP
Initial Setup
After deployment, access the web interface to complete the initial setup wizard:
- Create admin account
- Configure media libraries
- Set up metadata providers
- Configure transcoding settings (if hardware acceleration is available)
Single Sign-On (SSO) with Authelia
Jellyfin is configured with OpenID Connect (OIDC) integration using Authelia for centralized authentication.
SSO Plugin Installation
The deployment automatically configures the Jellyfin SSO Plugin:
- Plugin Repository:
https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json - Plugin Name: SSO Authentication
- Configuration: Pre-configured via ConfigMap
OIDC Configuration
Provider Settings:
- Authelia URL:
https://auth.xarif.de - Client Name:
authelia - Discovery Endpoint:
https://auth.xarif.de/.well-known/openid-configuration - Scopes:
openid profile groups
User Authorization:
- Admin Roles:
jellyfin-admins(full administrative access) - User Roles:
jellyfin-users,jellyfin-admins(media access) - Role Claim:
groups(from Authelia user database)
Accessing Jellyfin with SSO
- Direct SSO Login: Visit
https://video.xarif.de/sso/OID/start/authelia - Standard Login: Use the regular login page and click the Authelia login button
- User Management: Users must be configured in Authelia user database with appropriate groups
User Group Configuration
Users must be added to appropriate groups in Authelia:
# In Authelia user database
users:
username:
displayname: "User Name"
email: user@domain.com
groups:
- jellyfin-users # Basic media access
- jellyfin-admins # Admin access (optional)
Troubleshooting SSO
Common Issues:
- Plugin Not Available: Check if SSO plugin installed via Admin Dashboard → Plugins
- OIDC Errors: Verify Authelia service is accessible at
https://auth.xarif.de - Authorization Failed: Ensure user has
jellyfin-usersorjellyfin-adminsgroup - Configuration Issues: Check ConfigMap
jellyfin-sso-configinjellyfinnamespace
Testing OIDC Flow:
- Visit
https://video.xarif.de/sso/OID/start/authelia - Should redirect to Authelia login
- After authentication, redirected back to Jellyfin with user session
- User should have access based on group membership
Plugin Management:
- Plugin settings: Admin Dashboard → Plugins → SSO-Auth
- Plugin logs: Admin Dashboard → Logs → Plugin logs
- Manual plugin install: Admin Dashboard → Plugins → Catalog → Authentication → SSO Authentication