diff --git a/Dockerfile b/Dockerfile index b6e5c44..25db594 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,37 +12,35 @@ ARG DEBIAN_FRONTEND="noninteractive" ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" RUN \ - echo "**** install packages ****" && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - gnupg && \ - echo "**** install jellyfin *****" && \ - curl -s https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | apt-key add - && \ - echo 'deb [arch=amd64] https://repo.jellyfin.org/ubuntu focal main' > /etc/apt/sources.list.d/jellyfin.list && \ - echo 'deb [arch=amd64] https://repo.jellyfin.org/ubuntu focal unstable' >> /etc/apt/sources.list.d/jellyfin.list && \ - if [ -z ${JELLYFIN_RELEASE+x} ]; then \ - JELLYFIN="jellyfin"; \ - else \ - JELLYFIN="jellyfin=${JELLYFIN_RELEASE}"; \ - fi && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - at \ - i965-va-driver \ - intel-media-va-driver-non-free \ - ${JELLYFIN} \ - jellyfin-ffmpeg \ - jellyfin-server \ - jellyfin-web \ - libfontconfig1 \ - libfreetype6 \ - libssl1.1 \ - mesa-va-drivers && \ - echo "**** cleanup ****" && \ - rm -rf \ - /tmp/* \ - /var/lib/apt/lists/* \ - /var/tmp/* + echo "**** install packages ****" && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + gnupg && \ + echo "**** install jellyfin *****" && \ + curl -s https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | apt-key add - && \ + echo 'deb [arch=amd64] https://repo.jellyfin.org/ubuntu focal main' > /etc/apt/sources.list.d/jellyfin.list && \ + echo 'deb [arch=amd64] https://repo.jellyfin.org/ubuntu focal unstable' >> /etc/apt/sources.list.d/jellyfin.list && \ + if [ -z ${JELLYFIN_RELEASE+x} ]; then \ + JELLYFIN="jellyfin"; \ + else \ + JELLYFIN="jellyfin=${JELLYFIN_RELEASE} jellyfin-server=${JELLYFIN_RELEASE} jellyfin-web=${JELLYFIN_RELEASE}"; \ + fi && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + at \ + i965-va-driver \ + intel-media-va-driver-non-free \ + ${JELLYFIN} \ + jellyfin-ffmpeg \ + libfontconfig1 \ + libfreetype6 \ + libssl1.1 \ + mesa-va-drivers && \ + echo "**** cleanup ****" && \ + rm -rf \ + /tmp/* \ + /var/lib/apt/lists/* \ + /var/tmp/* # add local files COPY root/ / diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 24c2222..6e44120 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -12,39 +12,37 @@ ARG DEBIAN_FRONTEND="noninteractive" ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" RUN \ - echo "**** install packages ****" && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - gnupg && \ - echo "**** install jellyfin *****" && \ - curl -s https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | apt-key add - && \ - curl -s https://keyserver.ubuntu.com/pks/lookup?op=get\&search=0x6587ffd6536b8826e88a62547876ae518cbcf2f2 | apt-key add - && \ - echo 'deb [arch=arm64] https://repo.jellyfin.org/ubuntu focal main' > /etc/apt/sources.list.d/jellyfin.list && \ - echo 'deb [arch=arm64] https://repo.jellyfin.org/ubuntu focal unstable' >> /etc/apt/sources.list.d/jellyfin.list && \ - echo "deb http://ppa.launchpad.net/ubuntu-raspi2/ppa-nightly/ubuntu focal main">> /etc/apt/sources.list.d/raspbins.list && \ - if [ -z ${JELLYFIN_RELEASE+x} ]; then \ - JELLYFIN="jellyfin"; \ - else \ - JELLYFIN="jellyfin=${JELLYFIN_RELEASE}"; \ - fi && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - at \ - ${JELLYFIN} \ - jellyfin-ffmpeg \ - jellyfin-server \ - jellyfin-web \ - libfontconfig1 \ - libfreetype6 \ - libomxil-bellagio0 \ - libomxil-bellagio-bin \ - libraspberrypi0 \ - libssl1.1 && \ - echo "**** cleanup ****" && \ - rm -rf \ - /tmp/* \ - /var/lib/apt/lists/* \ - /var/tmp/* + echo "**** install packages ****" && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + gnupg && \ + echo "**** install jellyfin *****" && \ + curl -s https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | apt-key add - && \ + curl -s https://keyserver.ubuntu.com/pks/lookup?op=get\&search=0x6587ffd6536b8826e88a62547876ae518cbcf2f2 | apt-key add - && \ + echo 'deb [arch=arm64] https://repo.jellyfin.org/ubuntu focal main' > /etc/apt/sources.list.d/jellyfin.list && \ + echo 'deb [arch=arm64] https://repo.jellyfin.org/ubuntu focal unstable' >> /etc/apt/sources.list.d/jellyfin.list && \ + echo "deb http://ppa.launchpad.net/ubuntu-raspi2/ppa-nightly/ubuntu focal main">> /etc/apt/sources.list.d/raspbins.list && \ + if [ -z ${JELLYFIN_RELEASE+x} ]; then \ + JELLYFIN="jellyfin"; \ + else \ + JELLYFIN="jellyfin=${JELLYFIN_RELEASE} jellyfin-server=${JELLYFIN_RELEASE} jellyfin-web=${JELLYFIN_RELEASE}"; \ + fi && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + at \ + ${JELLYFIN} \ + jellyfin-ffmpeg \ + libfontconfig1 \ + libfreetype6 \ + libomxil-bellagio0 \ + libomxil-bellagio-bin \ + libraspberrypi0 \ + libssl1.1 && \ + echo "**** cleanup ****" && \ + rm -rf \ + /tmp/* \ + /var/lib/apt/lists/* \ + /var/tmp/* # add local files COPY root/ / diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 9647c99..a3cb1fc 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -12,39 +12,37 @@ ARG DEBIAN_FRONTEND="noninteractive" ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" RUN \ - echo "**** install packages ****" && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - gnupg && \ - echo "**** install jellyfin *****" && \ - curl -s https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | apt-key add - && \ - curl -s https://keyserver.ubuntu.com/pks/lookup?op=get\&search=0x6587ffd6536b8826e88a62547876ae518cbcf2f2 | apt-key add - && \ - echo 'deb [arch=armhf] https://repo.jellyfin.org/ubuntu focal main' > /etc/apt/sources.list.d/jellyfin.list && \ - echo 'deb [arch=armhf] https://repo.jellyfin.org/ubuntu focal unstable' >> /etc/apt/sources.list.d/jellyfin.list && \ - echo "deb http://ppa.launchpad.net/ubuntu-raspi2/ppa-nightly/ubuntu focal main">> /etc/apt/sources.list.d/raspbins.list && \ - if [ -z ${JELLYFIN_RELEASE+x} ]; then \ - JELLYFIN="jellyfin"; \ - else \ - JELLYFIN="jellyfin=${JELLYFIN_RELEASE}"; \ - fi && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - at \ - ${JELLYFIN} \ - jellyfin-ffmpeg \ - jellyfin-server \ - jellyfin-web \ - libfontconfig1 \ - libfreetype6 \ - libomxil-bellagio0 \ - libomxil-bellagio-bin \ - libraspberrypi0 \ - libssl1.1 && \ - echo "**** cleanup ****" && \ - rm -rf \ - /tmp/* \ - /var/lib/apt/lists/* \ - /var/tmp/* + echo "**** install packages ****" && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + gnupg && \ + echo "**** install jellyfin *****" && \ + curl -s https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key | apt-key add - && \ + curl -s https://keyserver.ubuntu.com/pks/lookup?op=get\&search=0x6587ffd6536b8826e88a62547876ae518cbcf2f2 | apt-key add - && \ + echo 'deb [arch=armhf] https://repo.jellyfin.org/ubuntu focal main' > /etc/apt/sources.list.d/jellyfin.list && \ + echo 'deb [arch=armhf] https://repo.jellyfin.org/ubuntu focal unstable' >> /etc/apt/sources.list.d/jellyfin.list && \ + echo "deb http://ppa.launchpad.net/ubuntu-raspi2/ppa-nightly/ubuntu focal main">> /etc/apt/sources.list.d/raspbins.list && \ + if [ -z ${JELLYFIN_RELEASE+x} ]; then \ + JELLYFIN="jellyfin"; \ + else \ + JELLYFIN="jellyfin=${JELLYFIN_RELEASE} jellyfin-server=${JELLYFIN_RELEASE} jellyfin-web=${JELLYFIN_RELEASE}"; \ + fi && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + at \ + ${JELLYFIN} \ + jellyfin-ffmpeg \ + libfontconfig1 \ + libfreetype6 \ + libomxil-bellagio0 \ + libomxil-bellagio-bin \ + libraspberrypi0 \ + libssl1.1 && \ + echo "**** cleanup ****" && \ + rm -rf \ + /tmp/* \ + /var/lib/apt/lists/* \ + /var/tmp/* # add local files COPY root/ / diff --git a/README.md b/README.md index 50b9d16..7aa025c 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ This image provides various versions that are available via tags. `latest` tag u | Tag | Description | | :----: | --- | | latest | Stable Jellyfin releases - Focal baseimage | -| bionic | Stable Jellyfin releases - Bionic baseimage | +| bionic | DEPRECATED, no longer updated - Stable Jellyfin releases - Bionic baseimage | | nightly | Unstable Jellyfin releases | ## Application Setup @@ -302,7 +302,8 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions -* **20.01.21:"** - Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information. +* **23.06.21:** - Add log message if device permissions are incorrect. Pin jellyfin dependency versions to prevent upstream apt repo issues. Deprecate the `bionic` tag. +* **20.01.21:** - Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information. * **05.01.21:** - Add nvidia.icd file to fix missing tonemapping using Nvidia HW. * **23.11.20:** - Rebase to Focal, branch off Bionic. * **22.07.20:** - Install nightly from unstable. diff --git a/readme-vars.yml b/readme-vars.yml index cd1f8d3..8bb3b1c 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -17,7 +17,7 @@ available_architectures: development_versions: true development_versions_items: - { tag: "latest", desc: "Stable Jellyfin releases - Focal baseimage" } - - { tag: "bionic", desc: "Stable Jellyfin releases - Bionic baseimage" } + - { tag: "bionic", desc: "DEPRECATED, no longer updated - Stable Jellyfin releases - Bionic baseimage" } - { tag: "nightly", desc: "Unstable Jellyfin releases" } # container parameters @@ -98,7 +98,8 @@ app_setup_block: | # changelog changelogs: - - { date: 20.01.21:", desc: "Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information." } + - { date: "23.06.21:", desc: "Add log message if device permissions are incorrect. Pin jellyfin dependency versions to prevent upstream apt repo issues. Deprecate the `bionic` tag." } + - { date: "20.01.21:", desc: "Deprecate `UMASK_SET` in favor of UMASK in baseimage, see above for more information." } - { date: "05.01.21:", desc: "Add nvidia.icd file to fix missing tonemapping using Nvidia HW." } - { date: "23.11.20:", desc: "Rebase to Focal, branch off Bionic." } - { date: "22.07.20:", desc: "Install nightly from unstable." } diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config index a272525..ff0be50 100644 --- a/root/etc/cont-init.d/30-config +++ b/root/etc/cont-init.d/30-config @@ -2,18 +2,18 @@ # create directories mkdir -p \ - /config/{log,data/transcodes,cache} \ - /data \ - /transcode + /config/{log,data/transcodes,cache} \ + /data \ + /transcode # permissions chown abc:abc \ - /config \ - /config/* \ - /data \ - /config/data/transcodes \ - /transcode + /config \ + /config/* \ + /data \ + /config/data/transcodes \ + /transcode if [ -n "$(ls -A /data 2>/dev/null)" ]; then chown abc:abc \ - /data/* + /data/* fi diff --git a/root/etc/cont-init.d/40-gid-video b/root/etc/cont-init.d/40-gid-video index e4512de..5210ccc 100644 --- a/root/etc/cont-init.d/40-gid-video +++ b/root/etc/cont-init.d/40-gid-video @@ -4,21 +4,24 @@ FILES=$(find /dev/dri /dev/dvb /dev/vchiq /dev/vc-mem /dev/video1? -type c -prin for i in $FILES do - VIDEO_GID=$(stat -c '%g' "$i") - if ! id -G abc | grep -qw "$VIDEO_GID"; then - VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}') - if [ -z "${VIDEO_NAME}" ]; then - VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c8)" - groupadd "$VIDEO_NAME" - groupmod -g "$VIDEO_GID" "$VIDEO_NAME" - fi - usermod -a -G "$VIDEO_NAME" abc - fi + VIDEO_GID=$(stat -c '%g' "$i") + if ! id -G abc | grep -qw "$VIDEO_GID"; then + VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}') + if [ -z "${VIDEO_NAME}" ]; then + VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c8)" + groupadd "$VIDEO_NAME" + groupmod -g "$VIDEO_GID" "$VIDEO_NAME" + fi + usermod -a -G "$VIDEO_NAME" abc + if [ $(stat -c '%A' "${i}" | cut -b 8,9) != "rw" ]; then + echo -e "**** The device ${i} does not have group read/write permissions, which might prevent hardware transcode from functioning correctly. To fix it, you can run the following on your docker host: ****\nsudo chmod g+rw ${i}\n" + fi + fi done # openmax lib loading if [ -e "/opt/vc/lib" ] && [ ! -e "/etc/ld.so.conf.d/00-vmcs.conf" ]; then - echo "[jellyfin-init] Pi Libs detected loading" - echo "/opt/vc/lib" > "/etc/ld.so.conf.d/00-vmcs.conf" - ldconfig + echo "[jellyfin-init] Pi Libs detected loading" + echo "/opt/vc/lib" > "/etc/ld.so.conf.d/00-vmcs.conf" + ldconfig fi diff --git a/root/etc/services.d/jellyfin/run b/root/etc/services.d/jellyfin/run index ccee791..3611473 100644 --- a/root/etc/services.d/jellyfin/run +++ b/root/etc/services.d/jellyfin/run @@ -1,16 +1,17 @@ #!/usr/bin/with-contenv bash -export JELLYFIN_DATA_DIR="/config/data" \ -JELLYFIN_CONFIG_DIR="/config" \ -JELLYFIN_LOG_DIR="/config/log" \ -JELLYFIN_CACHE_DIR="/config/cache" \ -JELLYFIN_WEB_DIR="/usr/share/jellyfin/web" +export \ + JELLYFIN_DATA_DIR="/config/data" \ + JELLYFIN_CONFIG_DIR="/config" \ + JELLYFIN_LOG_DIR="/config/log" \ + JELLYFIN_CACHE_DIR="/config/cache" \ + JELLYFIN_WEB_DIR="/usr/share/jellyfin/web" if [ -n "${UMASK_SET}" ] && [ -z "${UMASK}" ]; then - echo -e "You are using a legacy method of defining umask\nplease update your environment variable from UMASK_SET to UMASK\nto keep the functionality after July 2021" - umask ${UMASK_SET} + echo -e "You are using a legacy method of defining umask\nplease update your environment variable from UMASK_SET to UMASK\nto keep the functionality after July 2021" + umask ${UMASK_SET} fi exec \ - s6-setuidgid abc /usr/bin/jellyfin \ - --ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg + s6-setuidgid abc /usr/bin/jellyfin \ + --ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg