Jellyfin

https://github.com/jellyfin/jellyfin
Container images
Official container image: jellyfin/jellyfin.
This image is also published on the GitHub Container Registry: ghcr.io/jellyfin/jellyfin.
LinuxServer.io image: linuxserver/jellyfin.
hotio image: ghcr.io/hotio/jellyfin.
Jellyfin distributes official container images on Docker Hub and the GitHub Container Registry for multiple architectures. These images are based on Debian and built directly from the Jellyfin source code.
Several tags are available tracking different builds and version levels.
latestalways tracks the latest stable release, including through major and minor version bumpsX(e.g.10) tracks the major version, e.g. the latest 10.Y.ZX.Y(e.g.10.11) tracks the minor version, e.g. the latest 10.11.ZX.Y.Z(e.g.10.11.0) tracks a specific releaseX.Y.Z.YYYYMMDD-HHMMSS(e.g.10.11.0.20251020-004604) tracks a specific packaging build
Additionally, there are several third parties providing unofficial container images, including the LinuxServer.io (Dockerfile) project and hotio (Dockerfile), which offer images based on Ubuntu and the official Jellyfin Ubuntu binary packages.
Installation Instructions
Replace uid:gid if you want to run jellyfin as a specific user/group. Exclude the user argument entirely if you want to use the default user.
- Docker
- Docker Compose
- Podman
Create a docker-compose.yml file like the following.
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
# Optional - specify the uid and gid you would like Jellyfin to use instead of root
user: uid:gid
ports:
- 8096:8096/tcp
- 7359:7359/udp
volumes:
- /path/to/config:/config
- /path/to/cache:/cache
- type: bind
source: /path/to/media
target: /media
- type: bind
source: /path/to/media2
target: /media2
read_only: true
# Optional - extra fonts to be used during transcoding with subtitle burn-in
- type: bind
source: /path/to/fonts
target: /usr/local/share/fonts/custom
read_only: true
restart: 'unless-stopped'
# Optional - alternative address used for autodiscovery
environment:
- JELLYFIN_PublishedServerUrl=http://example.com
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
extra_hosts:
- 'host.docker.internal:host-gateway'Then while in the same folder as the docker-compose.yml run:
docker compose upTo run the container in background add -d to the above command.
Building from source
As an alternative to using binary packages, you can build Jellyfin from source.
Jellyfin supports several methods of building for different platforms and instructions for all supported platforms are below.
All package builds begin with these two steps:
- Clone the repository.sh
git clone https://github.com/jellyfin/jellyfin-packaging.git cd jellyfin-packaging - Initialize the submodules.sh
git submodule update --init
Container image
- Build the container image using Docker or Podman.shor
docker build -t $USERNAME/jellyfin --file docker/Dockerfile .shor use provided Python build script:podman build -t $USERNAME/jellyfin --file docker/Dockerfile .shReplace "auto" with your own Jellyfin version tag if you want to../build.py auto docker - Run Jellyfin in a new container using Docker or Podman from the built container image.shor
docker run -d -p 8096:8096 $USERNAME/jellyfinshpodman run -d -p 8096:8096 $USERNAME/jellyfin
Linux or MacOS
- Use the included
buildscript to perform builds.sh./build --help ./build --list-platforms ./build <platform> all - The resulting archives can be found at
../bin/<platform>.
