{"id":46782717,"url":"https://github.com/clion007/docker-jellyfin","last_synced_at":"2026-04-06T05:01:18.542Z","repository":{"id":233538541,"uuid":"787414593","full_name":"clion007/docker-jellyfin","owner":"clion007","description":"This clion/jellyfin docker image supply you a better choice for the jellyfin container than offical image. It is builded base on latest alpine, with smaller size and fix the ffmpg decode, hardware drivers and chinese shown in garbled problems et,al.","archived":false,"fork":false,"pushed_at":"2026-03-09T12:44:44.000Z","size":8621,"stargazers_count":34,"open_issues_count":0,"forks_count":8,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-10T04:55:06.909Z","etag":null,"topics":["docker","jellyfin","nas"],"latest_commit_sha":null,"homepage":"https://clion007.github.io/docker-jellyfin/","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clion007.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-16T13:31:16.000Z","updated_at":"2026-03-09T12:44:41.000Z","dependencies_parsed_at":"2024-04-28T04:35:39.984Z","dependency_job_id":"b47f6ddc-3e89-48c1-ac18-c5c672d45f0f","html_url":"https://github.com/clion007/docker-jellyfin","commit_stats":null,"previous_names":["clion007/docker-jellyfin"],"tags_count":9,"template":true,"template_full_name":null,"purl":"pkg:github/clion007/docker-jellyfin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clion007%2Fdocker-jellyfin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clion007%2Fdocker-jellyfin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clion007%2Fdocker-jellyfin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clion007%2Fdocker-jellyfin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clion007","download_url":"https://codeload.github.com/clion007/docker-jellyfin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clion007%2Fdocker-jellyfin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31460105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","jellyfin","nas"],"created_at":"2026-03-10T00:35:56.994Z","updated_at":"2026-04-06T05:01:18.461Z","avatar_url":"https://github.com/clion007.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Clion/Jellyfin\n[![Docker Pulls](https://img.shields.io/docker/pulls/clion007/jellyfin.svg)](https://hub.docker.com/r/clion007/jellyfin)\n[![Docker Stars](https://img.shields.io/docker/stars/clion007/jellyfin.svg)](https://hub.docker.com/r/clion007/jellyfin)\n[![GitHub Stars](https://img.shields.io/github/stars/clion007/docker-jellyfin.svg)](https://github.com/clion007/docker-jellyfin)\n[![GitHub Last Commit](https://img.shields.io/github/last-commit/clion007/docker-jellyfin.svg)](https://github.com/clion007/docker-jellyfin/commits/main)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/clion007/docker-jellyfin/docker-publish.yml?branch=main)](https://github.com/clion007/docker-jellyfin/actions)\n[![Image Size](https://img.shields.io/docker/image-size/clion007/jellyfin/latest)](https://hub.docker.com/r/clion007/jellyfin)\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://jellyfin.org/images/logo.svg\" alt=\"Jellyfin Logo\" width=\"280\" height=\"80\"\u003e\n  \u003cbr\u003e\u003cbr\u003e\n  \u003cstrong\u003eThe Free Software Media System\u003c/strong\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\nJellyfin 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. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it.\n\nThis clion/jellyfin docker image provides a better alternative to the official Jellyfin container. It's built on the latest Alpine Linux, offering a smaller footprint while fixing FFmpeg decoding issues, hardware acceleration support, and Chinese character display problems. The image automatically updates when new Jellyfin versions are released.\n\n## 🚀 Application Setup\n\n* WebUI can be accessed at `http://\u003cyour-ip\u003e:8096`\n* For detailed configuration options, please refer to the [official Jellyfin documentation](https://jellyfin.org/docs/)\n\n## 🖥️ Hardware Acceleration\n\nHardware acceleration significantly improves transcoding performance. While not strictly required, it's highly recommended for optimal media streaming experience.\n\n### For Intel/AMD/ATI GPUs:\nMount the `/dev/dri` device into the container:\n```\n--device=/dev/dri:/dev/dri\n```\n\nThe container automatically configures proper permissions for the jellyfin user to access these devices.\n\n## 📋 Usage\n\nYou can deploy this container using either docker-compose (recommended) or the docker CLI.\n\n### Docker Compose (Recommended)\n\n```yaml\nservices:\n  jellyfin:\n    container_name: Jellyfin\n    image: registry.cn-chengdu.aliyuncs.com/clion/jellyfin:latest\n    environment:\n      - UMASK=022\n      - PUID=1000\n      - PGID=1000\n      - TZ=Asia/Shanghai\n      - JELLYFIN_PublishedServerUrl=192.168.0.5 #optional\n    ports:\n      - 8096:8096\n      - 8920:8920 #optional\n      - 7359:7359/udp #optional\n      - 1900:1900/udp #optional\n    volumes:\n      - /etc/localtime:/etc/localtime:ro\n      - /path/to/jellyfin/library:/config\n      - /path/to/media:/media/nas\n    devices:\n      - /dev/dri:/dev/dri #optional - for hardware transcoding\n    restart: unless-stopped\n```\n\n### Docker CLI\n\n```bash\ndocker run -d \\\n  --name=Jellyfin \\\n  -e UMASK=022 \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Asia/Shanghai \\\n  -e JELLYFIN_PublishedServerUrl=192.168.0.5 `#optional` \\\n  -p 8096:8096 \\\n  -p 8920:8920 `#optional` \\\n  -p 7359:7359/udp `#optional` \\\n  -p 1900:1900/udp `#optional` \\\n  -v /path/to/config:/config \\\n  -v /path/to/media:/media/nas \\\n  -v /etc/localtime:/etc/localtime:ro \\\n  --device=/dev/dri:/dev/dri `#optional - for hardware transcoding` \\\n  --restart unless-stopped \\\n  registry.cn-chengdu.aliyuncs.com/clion/jellyfin:latest\n```\n\n## ⚙️ Parameters\n\nContainers are configured using parameters passed at runtime. These parameters are separated by a colon and indicate `\u003cexternal\u003e:\u003cinternal\u003e` respectively. For example, `-p 8080:80` would expose port 80 from inside the container to be accessible from the host's IP on port 8080.\n\n### Port Mappings\n| Parameter | Function |\n| :----: | --- |\n| `-p 8096:8096` | Primary HTTP web interface |\n| `-p 8920:8920` | HTTPS web interface (requires your own certificate) |\n| `-p 7359:7359/udp` | Allows clients to discover Jellyfin on the local network |\n| `-p 1900:1900/udp` | Service discovery used by DLNA and clients |\n\n### Environment Variables\n| Parameter | Function |\n| :----: | --- |\n| `-e PUID=1000` | User ID for container user (see User/Group section below) |\n| `-e PGID=1000` | Group ID for container user (see User/Group section below) |\n| `-e TZ=Asia/Shanghai` | Specify timezone |\n| `-e UMASK=022` | Control permission bits for newly created files (see Umask section) |\n| `-e JELLYFIN_PublishedServerUrl=192.168.0.5` | Set the autodiscovery response domain or IP address |\n\n### Volume Mappings\n| Parameter | Function |\n| :----: | --- |\n| `-v /config` | Jellyfin data storage location (can grow very large, 50GB+ for large collections) |\n| `-v /media/nas` | Media location. Add as many as needed (e.g., /media/nas/movies, /media/nas/tv) |\n\n### Device Mappings\n| Parameter | Function |\n| :----: | --- |\n| `--device=/dev/dri:/dev/dri` | For Intel/AMD GPU hardware acceleration |\n\n## 🔧 Performance Tuning\n\nFor optimal performance with large media libraries:\n\n1. **Memory Allocation**: Consider allocating sufficient memory:\n   ```\n   --memory=4g --memory-swap=6g\n   ```\n\n2. **Storage Performance**: Mount configuration and media directories on high-performance storage\n\n3. **Network Configuration**: For local streaming, consider using host networking:\n   ```\n   --network=host\n   ```\n\n## 🔐 Umask for Running Applications\n\nThis image provides the ability to override default permission settings using the optional `-e UMASK=022` parameter. Remember that umask subtracts from permissions based on its value; it does not add permissions.\n\n## 👥 User / Group Identifiers\n\nWhen using volumes, permission issues can arise between the host OS and the container. To avoid this, specify the user PUID and group PGID.\n\nEnsure any volume directories on the host are owned by the same user you specify, and permission issues will be resolved automatically.\n\n## ❓ Troubleshooting\n\n### Transcoding Issues\n- ✅ Verify hardware acceleration is properly configured;\n- ✅ Check Jellyfin log for transcoding errors in your server, it should be in /path/to/config/log path;\n- ✅ Ensure your jellyfin settings is right. The option \"Prioritize fMP4-HLS Media Container\" must not be selected. If your server's graphics card (GPU) is older and does not support H.264 Low-Power encoding, or H.265/AV1 encoding, you cannot select these encoding formats in the transcoding settings. The same applies to Hardware Acceleration options. \n\n### Network Discovery Problems\n- ✅ Confirm UDP ports 7359 and 1900 are properly mapped;\n- ✅ Set the correct `JELLYFIN_PublishedServerUrl` environment variable.\n\n### Permission Issues\n- ✅ Verify PUID/PGID match the owner of your host directories;\n- ✅ Check umask settings if files have incorrect permissions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclion007%2Fdocker-jellyfin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclion007%2Fdocker-jellyfin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclion007%2Fdocker-jellyfin/lists"}