Files
jellyfin.org/docs/general/installation/_container-docker-cli.md
T
2025-09-27 16:18:11 +02:00

3.1 KiB

Docker allows you to run containers on Linux, Windows and MacOS.

:::warning

If you wish to use Windows or macOS, please install Jellyfin natively instead. Windows macOS.

While it is possible to run Jellyfin in Docker on a Windows or macOS host, it is NOT supported. Some features are known to be broken when running in Docker on platforms other than Linux, Notably:

You WILL NOT receive any support for running Jellyfin in Docker on platforms other than Linux.

:::

The basic steps to create and run a Jellyfin container using Docker are as follows.

  1. Follow the official installation guide to install Docker.

  2. Download the latest container image.

    docker pull jellyfin/jellyfin
    
  3. Create persistent storage for configuration and cache data.

    Either create two directories on the host and use bind mounts:

    mkdir /path/to/config
    mkdir /path/to/cache
    

    Or create two persistent volumes:

    docker volume create jellyfin-config
    docker volume create jellyfin-cache
    
  4. Create and run a container in one of the following ways.

:::note

The default network mode for Docker is bridge mode. Bridge mode will be used if host mode is omitted. Using host networking (--net=host) is optional but required in order to use DLNA.

:::

Using Docker command line interface:

docker run -d \
 --name jellyfin \
 --user uid:gid \
 -p 8096:8096/tcp \
 -p 7359:7359/udp \
 --volume /path/to/config:/config \ # Alternatively --volume jellyfin-config:/config
 --volume /path/to/cache:/cache \ # Alternatively --volume jellyfin-cache:/cache
 --mount type=bind,source=/path/to/media,target=/media \
 --restart=unless-stopped \
 jellyfin/jellyfin

Bind Mounts are needed to pass folders from the host OS to the container OS whereas volumes are maintained by Docker and can be considered easier to backup and control by external programs. For a simple setup, it's considered easier to use Bind Mounts instead of volumes. Multiple media libraries can be bind mounted if needed:

--mount type=bind,source=/path/to/media1,target=/media1
--mount type=bind,source=/path/to/media2,target=/media2,readonly
...etc

Custom server-side system fonts directory can be optionally bind mounted in order to use these fonts during transcoding with subtitle burn-in:

--mount type=bind,source=/path/to/fonts,target=/usr/local/share/fonts/custom,readonly

A directory of fallback fonts can be mounted as well. In this case, you will have to set the directory of fallback fonts to /fallback_fonts in Jellyfin server settings panel:

--mount type=bind,source=/path/to/fallback/fonts,target=/fallback_fonts,readonly