Skip to content

Jellyfin

https://github.com/jellyfin/jellyfin

https://jellyfin.org/docs/

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.

  • latest always tracks the latest stable release, including through major and minor version bumps
  • X (e.g. 10) tracks the major version, e.g. the latest 10.Y.Z
  • X.Y (e.g. 10.11) tracks the minor version, e.g. the latest 10.11.Z
  • X.Y.Z (e.g. 10.11.0) tracks a specific release
  • X.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.

yml
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:

sh
docker compose up

To 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:

  1. Clone the repository.
    sh
    git clone https://github.com/jellyfin/jellyfin-packaging.git
    cd jellyfin-packaging
  2. Initialize the submodules.
    sh
    git submodule update --init

Container image

  1. Build the container image using Docker or Podman.
    sh
    docker build -t $USERNAME/jellyfin --file docker/Dockerfile .
    or
    sh
    podman build -t $USERNAME/jellyfin --file docker/Dockerfile .
    or use provided Python build script:
    sh
    ./build.py auto docker
    Replace "auto" with your own Jellyfin version tag if you want to.
  2. Run Jellyfin in a new container using Docker or Podman from the built container image.
    sh
    docker run -d -p 8096:8096 $USERNAME/jellyfin
    or
    sh
    podman run -d -p 8096:8096 $USERNAME/jellyfin

Linux or MacOS

  1. Use the included build script to perform builds.
    sh
    ./build --help
    ./build --list-platforms
    ./build <platform> all
  2. The resulting archives can be found at ../bin/<platform>.

Контакты: bystrovno@basealt.ru