Skip to content
This repository was archived by the owner on Nov 18, 2024. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 41 additions & 34 deletions Dockerfile.amd64
Original file line number Diff line number Diff line change
Expand Up @@ -3,71 +3,78 @@ ARG TARGET_RELEASE=stable

FROM jellyfin/jellyfin-server:${TARGET_RELEASE}-amd64 as server
FROM jellyfin/jellyfin-web:${TARGET_RELEASE} as web
FROM debian:bullseye-slim

ENV HEALTHCHECK_URL=http://localhost:8096/health

# Default environment variables for the Jellyfin invocation
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT="1" \
LC_ALL="en_US.UTF-8" \
LANG="en_US.UTF-8" \
LANGUAGE="en_US:en" \
JELLYFIN_DATA_DIR="/config" \
JELLYFIN_CACHE_DIR="/cache" \
JELLYFIN_CONFIG_DIR="/config/config" \
JELLYFIN_LOG_DIR="/config/log" \
JELLYFIN_WEB_DIR="/jellyfin/jellyfin-web" \
JELLYFIN_FFMPEG="/usr/lib/jellyfin-ffmpeg/ffmpeg"
FROM debian:bookworm-slim

# https://github.com/dlemstra/Magick.NET/issues/707#issuecomment-785351620
ENV MALLOC_TRIM_THRESHOLD_=131072

# http://stackoverflow.com/questions/48162574/ddg#49462622
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
# https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)
ENV NVIDIA_VISIBLE_DEVICES="all"
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"

ENV JELLYFIN_DATA_DIR=/config
ENV JELLYFIN_CACHE_DIR=/cache

# https://github.com/intel/compute-runtime/releases
ARG GMMLIB_VERSION=22.3.0
ARG IGC_VERSION=1.0.14828.8
ARG NEO_VERSION=23.30.26918.9
ARG LEVEL_ZERO_VERSION=1.3.26918.9
ARG GMMLIB_VERSION=22.3.11
ARG IGC_VERSION=1.0.15985.7
ARG NEO_VERSION=24.05.28454.6
ARG LEVEL_ZERO_VERSION=1.3.28454.6

# Install dependencies:
# curl: healthcheck
# Add Jellyfin repository :
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl wget apt-transport-https \
&& apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl \
&& curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-jellyfin.gpg \
&& echo 'deb [arch=amd64] https://repo.jellyfin.org/debian bullseye main' > /etc/apt/sources.list.d/jellyfin.list \
&& cat /etc/apt/sources.list.d/jellyfin.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y jellyfin-ffmpeg5 openssl locales libfontconfig1 libfreetype6 \
&& export VERSION_OS="$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )" \
&& export VERSION_CODENAME="$( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )" \
&& export DPKG_ARCHITECTURE="$( dpkg --print-architecture )" \
&& cat <<EOF | tee /etc/apt/sources.list.d/jellyfin.sources
Types: deb
URIs: https://repo.jellyfin.org/${VERSION_OS}
Suites: ${VERSION_CODENAME}
Components: main
Architectures: ${DPKG_ARCHITECTURE}
Signed-By: /etc/apt/trusted.gpg.d/debian-jellyfin.gpg
EOF

# Install dependencies:
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y jellyfin-ffmpeg6 openssl locales libfontconfig1 libfreetype6 \
# Intel VAAPI Tone mapping dependencies:
# Prefer NEO to Beignet since the latter one doesn't support Comet Lake or newer for now.
# Do not use the intel-opencl-icd package from repo since they will not build with RELEASE_WITH_REGKEYS enabled.
&& mkdir intel-compute-runtime \
&& cd intel-compute-runtime \
&& wget https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/libigdgmm12_${GMMLIB_VERSION}_amd64.deb \
&& wget https://github.com/intel/intel-graphics-compiler/releases/download/igc-${IGC_VERSION}/intel-igc-core_${IGC_VERSION}_amd64.deb \
&& wget https://github.com/intel/intel-graphics-compiler/releases/download/igc-${IGC_VERSION}/intel-igc-opencl_${IGC_VERSION}_amd64.deb \
&& wget https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-opencl-icd_${NEO_VERSION}_amd64.deb \
&& wget https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-level-zero-gpu_${LEVEL_ZERO_VERSION}_amd64.deb \
&& curl -LO https://github.com/intel/intel-graphics-compiler/releases/download/igc-${IGC_VERSION}/intel-igc-core_${IGC_VERSION}_amd64.deb \
-LO https://github.com/intel/intel-graphics-compiler/releases/download/igc-${IGC_VERSION}/intel-igc-opencl_${IGC_VERSION}_amd64.deb \
-LO https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-level-zero-gpu_${LEVEL_ZERO_VERSION}_amd64.deb \
-LO https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/intel-opencl-icd_${NEO_VERSION}_amd64.deb \
-LO https://github.com/intel/compute-runtime/releases/download/${NEO_VERSION}/libigdgmm12_${GMMLIB_VERSION}_amd64.deb \
&& dpkg -i *.deb \
&& cd .. \
&& rm -rf intel-compute-runtime \
&& apt-get remove gnupg wget apt-transport-https -y \
&& apt-get remove gnupg -y \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \
&& chmod 777 ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen

ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en

ENV HEALTHCHECK_URL=http://localhost:8096/health

COPY --from=server /jellyfin /jellyfin
COPY --from=web /jellyfin-web /jellyfin/jellyfin-web

EXPOSE 8096
VOLUME ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR}
ENTRYPOINT [ "/jellyfin/jellyfin" ]
ENTRYPOINT [ "/jellyfin/jellyfin", \
"--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg" ]

HEALTHCHECK --interval=30s --timeout=30s --start-period=10s --retries=3 \
CMD curl -Lk -fsS "${HEALTHCHECK_URL}" || exit 1
61 changes: 35 additions & 26 deletions Dockerfile.arm64
Original file line number Diff line number Diff line change
Expand Up @@ -4,60 +4,69 @@ ARG TARGET_RELEASE=stable
FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu
FROM jellyfin/jellyfin-server:${TARGET_RELEASE}-arm64 as server
FROM jellyfin/jellyfin-web:${TARGET_RELEASE} as web
FROM arm64v8/debian:bullseye-slim
FROM arm64v8/debian:bookworm-slim
COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin

ENV HEALTHCHECK_URL=http://localhost:8096/health

# Default environment variables for the Jellyfin invocation
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT="1" \
LC_ALL="en_US.UTF-8" \
LANG="en_US.UTF-8" \
LANGUAGE="en_US:en" \
JELLYFIN_DATA_DIR="/config" \
JELLYFIN_CACHE_DIR="/cache" \
JELLYFIN_CONFIG_DIR="/config/config" \
JELLYFIN_LOG_DIR="/config/log" \
JELLYFIN_WEB_DIR="/jellyfin/jellyfin-web" \
JELLYFIN_FFMPEG="/usr/lib/jellyfin-ffmpeg/ffmpeg"

# https://github.com/dlemstra/Magick.NET/issues/707#issuecomment-785351620
ENV MALLOC_TRIM_THRESHOLD_=131072
# http://stackoverflow.com/questions/48162574/ddg#49462622
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn

ENV JELLYFIN_DATA_DIR=/config
ENV JELLYFIN_CACHE_DIR=/cache

# https://github.com/tsukumijima/libmali-rockchip
ARG MALI_PKG_VER="1.9-1_arm64"
ARG MALI_PKG_TAG="v1.9-1-3381696"
ARG MALI_PKG_CFG="valhall-g610-g13p0-wayland-gbm"

# Install dependencies:
# curl: healcheck
# Add Jellyfin repository :
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl wget \
&& apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl \
&& curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-jellyfin.gpg \
&& echo 'deb [arch=arm64] https://repo.jellyfin.org/debian bullseye main' > /etc/apt/sources.list.d/jellyfin.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y jellyfin-ffmpeg5 openssl locales libfontconfig1 libfreetype6 \
# Rockchip RK3588 libmali OpenCL dependencies:
&& export VERSION_OS="$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )" \
&& export VERSION_CODENAME="$( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )" \
&& export DPKG_ARCHITECTURE="$( dpkg --print-architecture )" \
&& cat <<EOF | tee /etc/apt/sources.list.d/jellyfin.sources
Types: deb
URIs: https://repo.jellyfin.org/${VERSION_OS}
Suites: ${VERSION_CODENAME}
Components: main
Architectures: ${DPKG_ARCHITECTURE}
Signed-By: /etc/apt/trusted.gpg.d/debian-jellyfin.gpg
EOF

# Install dependencies :
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y jellyfin-ffmpeg6 openssl locales libfontconfig1 libfreetype6 \
# Rockchip RK3588 libmali OpenCL dependencies:
&& mkdir libmali-rockchip \
&& cd libmali-rockchip \
&& wget https://github.com/tsukumijima/libmali-rockchip/releases/download/${MALI_PKG_TAG}/libmali-${MALI_PKG_CFG}_${MALI_PKG_VER}.deb \
&& curl -LO https://github.com/tsukumijima/libmali-rockchip/releases/download/${MALI_PKG_TAG}/libmali-${MALI_PKG_CFG}_${MALI_PKG_VER}.deb \
&& apt-get install --no-install-recommends --no-install-suggests -y ./*.deb \
&& cd .. \
&& rm -rf libmali-rockchip \
&& apt-get remove gnupg wget -y \
&& apt-get remove gnupg -y \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \
&& chmod 777 ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen

ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en

ENV HEALTHCHECK_URL=http://localhost:8096/health

COPY --from=server /jellyfin /jellyfin
COPY --from=web /jellyfin-web /jellyfin/jellyfin-web

EXPOSE 8096
VOLUME ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR}
ENTRYPOINT [ "/jellyfin/jellyfin" ]
ENTRYPOINT [ "/jellyfin/jellyfin", \
"--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg" ]

HEALTHCHECK --interval=30s --timeout=30s --start-period=10s --retries=3 \
CMD curl -Lk -fsS "${HEALTHCHECK_URL}" || exit 1
CMD curl -Lk -fsS "${HEALTHCHECK_URL}" || exit 1
57 changes: 33 additions & 24 deletions Dockerfile.armhf
Original file line number Diff line number Diff line change
Expand Up @@ -4,48 +4,57 @@ ARG TARGET_RELEASE=stable
FROM multiarch/qemu-user-static:x86_64-arm as qemu
FROM jellyfin/jellyfin-server:${TARGET_RELEASE}-armhf as server
FROM jellyfin/jellyfin-web:${TARGET_RELEASE} as web
FROM arm32v7/debian:bullseye-slim
FROM arm32v7/debian:bookworm-slim
COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin

ENV HEALTHCHECK_URL=http://localhost:8096/health

# Default environment variables for the Jellyfin invocation
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT="1" \
LC_ALL="en_US.UTF-8" \
LANG="en_US.UTF-8" \
LANGUAGE="en_US:en" \
JELLYFIN_DATA_DIR="/config" \
JELLYFIN_CACHE_DIR="/cache" \
JELLYFIN_CONFIG_DIR="/config/config" \
JELLYFIN_LOG_DIR="/config/log" \
JELLYFIN_WEB_DIR="/jellyfin/jellyfin-web" \
JELLYFIN_FFMPEG="/usr/lib/jellyfin-ffmpeg/ffmpeg"

# https://github.com/dlemstra/Magick.NET/issues/707#issuecomment-785351620
ENV MALLOC_TRIM_THRESHOLD_=131072
# http://stackoverflow.com/questions/48162574/ddg#49462622
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn

# Install dependencies:
# curl: healthcheck
ENV JELLYFIN_DATA_DIR=/config
ENV JELLYFIN_CACHE_DIR=/cache

# Add Jellyfin repository :
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl wget \
&& apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl \
&& curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-jellyfin.gpg \
&& echo 'deb [arch=armhf] https://repo.jellyfin.org/debian bullseye main' > /etc/apt/sources.list.d/jellyfin.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y jellyfin-ffmpeg5 openssl locales libfontconfig1 libfreetype6 \
&& apt-get remove gnupg wget -y \
&& export VERSION_OS="$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )" \
&& export VERSION_CODENAME="$( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )" \
&& export DPKG_ARCHITECTURE="$( dpkg --print-architecture )" \
&& cat <<EOF | tee /etc/apt/sources.list.d/jellyfin.sources
Types: deb
URIs: https://repo.jellyfin.org/${VERSION_OS}
Suites: ${VERSION_CODENAME}
Components: main
Architectures: ${DPKG_ARCHITECTURE}
Signed-By: /etc/apt/trusted.gpg.d/debian-jellyfin.gpg
EOF

# Install dependencies:
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y jellyfin-ffmpeg6 openssl locales libfontconfig1 libfreetype6 \
&& apt-get remove gnupg -y \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \
&& chmod 777 ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR} \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen

ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en

ENV HEALTHCHECK_URL=http://localhost:8096/health

COPY --from=server /jellyfin /jellyfin
COPY --from=web /jellyfin-web /jellyfin/jellyfin-web

EXPOSE 8096
VOLUME ${JELLYFIN_DATA_DIR} ${JELLYFIN_CACHE_DIR}
ENTRYPOINT [ "/jellyfin/jellyfin" ]
ENTRYPOINT [ "/jellyfin/jellyfin", \
"--ffmpeg", "/usr/lib/jellyfin-ffmpeg/ffmpeg" ]

HEALTHCHECK --interval=30s --timeout=30s --start-period=10s --retries=3 \
CMD curl -Lk -fsS "${HEALTHCHECK_URL}" || exit 1
CMD curl -Lk -fsS "${HEALTHCHECK_URL}" || exit 1
2 changes: 1 addition & 1 deletion jellyfin.debian
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Standards-Version: 3.9.2
Package: jellyfin
Version: X.Y.Z
Maintainer: Jellyfin Packaging Team <[email protected]>
Depends: jellyfin-server (>= X.Y.Z), jellyfin-web (>= X.Y.Z), jellyfin-ffmpeg5 (>= 5.0.0)
Depends: jellyfin-server (>= X.Y.Z), jellyfin-web (>= X.Y.Z), jellyfin-ffmpeg6 (>= 6.0.0)
Description: Provides the Jellyfin Free Software Media System
Provides the full Jellyfin experience, including both the server and web interface.