mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-04-24 14:08:44 -04:00
parent
406d087a46
commit
ed735522cf
110 changed files with 3207 additions and 0 deletions
62
deployment/old/README.md
Normal file
62
deployment/old/README.md
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# Jellyfin Packaging
|
||||||
|
|
||||||
|
This directory contains the packaging configuration of Jellyfin for multiple platforms. The specification is below; all package platforms must follow the specification to be compatable with the central `build` script.
|
||||||
|
|
||||||
|
## Package List
|
||||||
|
|
||||||
|
### Operating System Packages
|
||||||
|
|
||||||
|
* `debian-package-x64`: Package for Debian and Ubuntu amd64 systems.
|
||||||
|
* `fedora-package-x64`: Package for Fedora, CentOS, and Red Hat Enterprise Linux amd64 systems.
|
||||||
|
|
||||||
|
### Portable Builds (archives)
|
||||||
|
|
||||||
|
* `linux-x64`: Portable binary archive for generic Linux amd64 systems.
|
||||||
|
* `macos`: Portable binary archive for MacOS amd64 systems.
|
||||||
|
* `win-x64`: Portable binary archive for Windows amd64 systems.
|
||||||
|
* `win-x86`: Portable binary archive for Windows i386 systems.
|
||||||
|
|
||||||
|
### Other Builds
|
||||||
|
|
||||||
|
These builds are not necessarily run from the `build` script, but are present for other platforms.
|
||||||
|
|
||||||
|
* `portable`: Compiled `.dll` for use with .NET Core runtime on any system.
|
||||||
|
* `docker`: Docker manifests for auto-publishing.
|
||||||
|
* `unraid`: unRaid Docker template; not built by `build` but imported into unRaid directly.
|
||||||
|
* `windows`: Support files and scripts for Windows CI build.
|
||||||
|
|
||||||
|
## Package Specification
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
* If a platform requires additional build dependencies, the required binary names, i.e. to validate `which <binary>`, should be specified in a `dependencies.txt` file inside the platform directory.
|
||||||
|
|
||||||
|
* Each dependency should be present on its own line.
|
||||||
|
|
||||||
|
### Action Scripts
|
||||||
|
|
||||||
|
* Actions are defined in BASH scripts with the name `<action>.sh` within the platform directory.
|
||||||
|
|
||||||
|
* The list of valid actions are:
|
||||||
|
|
||||||
|
1. `build`: Builds a set of binaries.
|
||||||
|
2. `package`: Assembles the compiled binaries into a package.
|
||||||
|
3. `sign`: Performs signing actions on a package.
|
||||||
|
4. `publish`: Performs a publishing action for a package.
|
||||||
|
5. `clean`: Cleans up any artifacts from the previous actions.
|
||||||
|
|
||||||
|
* All package actions are optional, however at least one should generate output files, and any that do should contain a `clean` action.
|
||||||
|
|
||||||
|
* Actions are executed in the order specified above, and later actions may depend on former actions.
|
||||||
|
|
||||||
|
* Actions except for `clean` should `set -o errexit` to terminate on failed actions.
|
||||||
|
|
||||||
|
* The `clean` action should always `exit 0` even if no work is done or it fails.
|
||||||
|
|
||||||
|
* The `clean` action can be passed a variable as argument 1, named `keep_artifacts`, containing either the value `y` or `n`. It is indended to handle situations when the user runs `build --keep-artifacts` and should be handled intelligently. Usually, this is used to preserve Docker images while still removing temporary directories.
|
||||||
|
|
||||||
|
### Output Files
|
||||||
|
|
||||||
|
* Upon completion of the defined actions, at least one output file must be created in the `<platform>/pkg-dist` directory.
|
||||||
|
|
||||||
|
* Output files will be moved to the directory `jellyfin-build/<platform>` one directory above the repository root upon completion.
|
39
deployment/old/centos-package-x64/Dockerfile
Normal file
39
deployment/old/centos-package-x64/Dockerfile
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
FROM centos:7
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/centos-package-x64
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
|
||||||
|
# Prepare CentOS environment
|
||||||
|
RUN yum update -y \
|
||||||
|
&& yum install -y epel-release
|
||||||
|
|
||||||
|
# Install build dependencies
|
||||||
|
RUN yum install -y @buildsys-build rpmdevtools yum-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel git
|
||||||
|
|
||||||
|
# Install recent NodeJS and Yarn
|
||||||
|
RUN curl -fSsLo /etc/yum.repos.d/yarn.repo https://dl.yarnpkg.com/rpm/yarn.repo \
|
||||||
|
&& rpm -i https://rpm.nodesource.com/pub_10.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm \
|
||||||
|
&& yum install -y yarn
|
||||||
|
|
||||||
|
# Install DotNET SDK
|
||||||
|
RUN rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm \
|
||||||
|
&& rpmdev-setuptree \
|
||||||
|
&& yum install -y dotnet-sdk-${SDK_VERSION}
|
||||||
|
|
||||||
|
# Create symlinks and directories
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \
|
||||||
|
&& mkdir -p ${SOURCE_DIR}/SPECS \
|
||||||
|
&& ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \
|
||||||
|
&& mkdir -p ${SOURCE_DIR}/SOURCES \
|
||||||
|
&& ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
32
deployment/old/centos-package-x64/clean.sh
Executable file
32
deployment/old/centos-package-x64/clean.sh
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
VERSION="$( grep -A1 '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
package_source_dir="${WORKDIR}/pkg-src"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-centos-build"
|
||||||
|
|
||||||
|
rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null \
|
||||||
|
|| sudo rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/centos-package-x64/dependencies.txt
Normal file
1
deployment/old/centos-package-x64/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
18
deployment/old/centos-package-x64/docker-build.sh
Executable file
18
deployment/old/centos-package-x64/docker-build.sh
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the RPM inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Build RPM
|
||||||
|
make -f .copr/Makefile srpm outdir=/root/rpmbuild/SRPMS
|
||||||
|
rpmbuild --rebuild -bb /root/rpmbuild/SRPMS/jellyfin-*.src.rpm
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/rpm
|
||||||
|
mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
34
deployment/old/centos-package-x64/package.sh
Executable file
34
deployment/old/centos-package-x64/package.sh
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-centos-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
|
# Build the RPMs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the RPMs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/rpm/* "${output_dir}"
|
1
deployment/old/centos-package-x64/pkg-src
Symbolic link
1
deployment/old/centos-package-x64/pkg-src
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../fedora-package-x64/pkg-src/
|
43
deployment/old/debian-package-arm64/Dockerfile.amd64
Normal file
43
deployment/old/debian-package-arm64/Dockerfile.amd64
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
FROM debian:10
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/debian-package-arm64
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget npm devscripts mmv
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/d731f991-8e68-4c7c-8ea0-fad5605b077a/49497b5420eecbd905158d86d738af64/dotnet-sdk-3.1.100-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Prepare the cross-toolchain
|
||||||
|
RUN dpkg --add-architecture arm64 \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y cross-gcc-dev \
|
||||||
|
&& TARGET_LIST="arm64" cross-gcc-gensource 8 \
|
||||||
|
&& cd cross-gcc-packages-amd64/cross-gcc-8-arm64 \
|
||||||
|
&& apt-get install -y gcc-8-source libstdc++-8-dev-arm64-cross binutils-aarch64-linux-gnu bison flex libtool gdb sharutils netbase libmpc-dev libmpfr-dev libgmp-dev systemtap-sdt-dev autogen expect chrpath zlib1g-dev zip libc6-dev:arm64 linux-libc-dev:arm64 libgcc1:arm64 libcurl4-openssl-dev:arm64 libfontconfig1-dev:arm64 libfreetype6-dev:arm64 libssl-dev:arm64 liblttng-ust0:arm64 libstdc++-8-dev:arm64
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
# Link to Debian source dir; mkdir needed or it fails, can't force dest
|
||||||
|
RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
||||||
|
#ENTRYPOINT ["/bin/bash"]
|
34
deployment/old/debian-package-arm64/Dockerfile.arm64
Normal file
34
deployment/old/debian-package-arm64/Dockerfile.arm64
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
FROM debian:10
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/debian-package-arm64
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=arm64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget npm devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev libssl-dev liblttng-ust0
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/5a4c8f96-1c73-401c-a6de-8e100403188a/0ce6ab39747e2508366d498f9c0a0669/dotnet-sdk-3.1.100-linux-arm64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
# Link to Debian source dir; mkdir needed or it fails, can't force dest
|
||||||
|
RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
27
deployment/old/debian-package-arm64/clean.sh
Executable file
27
deployment/old/debian-package-arm64/clean.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-debian_arm64-build"
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/debian-package-arm64/dependencies.txt
Normal file
1
deployment/old/debian-package-arm64/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
21
deployment/old/debian-package-arm64/docker-build.sh
Executable file
21
deployment/old/debian-package-arm64/docker-build.sh
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the DEB inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Remove build-dep for dotnet-sdk-3.1, since it's not a package in this image
|
||||||
|
sed -i '/dotnet-sdk-3.1,/d' debian/control
|
||||||
|
|
||||||
|
# Build DEB
|
||||||
|
export CONFIG_SITE=/etc/dpkg-cross/cross-config.${ARCH}
|
||||||
|
dpkg-buildpackage -us -uc -aarm64
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
|
mv /jellyfin[-_]* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
45
deployment/old/debian-package-arm64/package.sh
Executable file
45
deployment/old/debian-package-arm64/package.sh
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
ARCH="$( arch )"
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-debian_arm64-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determine which Dockerfile to use
|
||||||
|
case $ARCH in
|
||||||
|
'x86_64')
|
||||||
|
DOCKERFILE="Dockerfile.amd64"
|
||||||
|
;;
|
||||||
|
'armv7l')
|
||||||
|
DOCKERFILE="Dockerfile.arm64"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
||||||
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the DEBs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
1
deployment/old/debian-package-arm64/pkg-src
Symbolic link
1
deployment/old/debian-package-arm64/pkg-src
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../debian-package-x64/pkg-src
|
42
deployment/old/debian-package-armhf/Dockerfile.amd64
Normal file
42
deployment/old/debian-package-armhf/Dockerfile.amd64
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
FROM debian:10
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/debian-package-armhf
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget npm devscripts mmv
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/d731f991-8e68-4c7c-8ea0-fad5605b077a/49497b5420eecbd905158d86d738af64/dotnet-sdk-3.1.100-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Prepare the cross-toolchain
|
||||||
|
RUN dpkg --add-architecture armhf \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y cross-gcc-dev \
|
||||||
|
&& TARGET_LIST="armhf" cross-gcc-gensource 8 \
|
||||||
|
&& cd cross-gcc-packages-amd64/cross-gcc-8-armhf \
|
||||||
|
&& apt-get install -y gcc-8-source libstdc++-8-dev-armhf-cross binutils-aarch64-linux-gnu bison flex libtool gdb sharutils netbase libmpc-dev libmpfr-dev libgmp-dev systemtap-sdt-dev autogen expect chrpath zlib1g-dev zip binutils-arm-linux-gnueabihf libc6-dev:armhf linux-libc-dev:armhf libgcc1:armhf libcurl4-openssl-dev:armhf libfontconfig1-dev:armhf libfreetype6-dev:armhf libssl-dev:armhf liblttng-ust0:armhf libstdc++-8-dev:armhf
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
# Link to Debian source dir; mkdir needed or it fails, can't force dest
|
||||||
|
RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
34
deployment/old/debian-package-armhf/Dockerfile.armhf
Normal file
34
deployment/old/debian-package-armhf/Dockerfile.armhf
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
FROM debian:10
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/debian-package-armhf
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=armhf
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget npm devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev libssl-dev liblttng-ust0
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/67766a96-eb8c-4cd2-bca4-ea63d2cc115c/7bf13840aa2ed88793b7315d5e0d74e6/dotnet-sdk-3.1.100-linux-arm.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
# Link to Debian source dir; mkdir needed or it fails, can't force dest
|
||||||
|
RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
27
deployment/old/debian-package-armhf/clean.sh
Executable file
27
deployment/old/debian-package-armhf/clean.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-debian_armhf-build"
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/debian-package-armhf/dependencies.txt
Normal file
1
deployment/old/debian-package-armhf/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
21
deployment/old/debian-package-armhf/docker-build.sh
Executable file
21
deployment/old/debian-package-armhf/docker-build.sh
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the DEB inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Remove build-dep for dotnet-sdk-3.1, since it's not a package in this image
|
||||||
|
sed -i '/dotnet-sdk-3.1,/d' debian/control
|
||||||
|
|
||||||
|
# Build DEB
|
||||||
|
export CONFIG_SITE=/etc/dpkg-cross/cross-config.${ARCH}
|
||||||
|
dpkg-buildpackage -us -uc -aarmhf
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
|
mv /jellyfin[-_]* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
45
deployment/old/debian-package-armhf/package.sh
Executable file
45
deployment/old/debian-package-armhf/package.sh
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
ARCH="$( arch )"
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-debian_armhf-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determine which Dockerfile to use
|
||||||
|
case $ARCH in
|
||||||
|
'x86_64')
|
||||||
|
DOCKERFILE="Dockerfile.amd64"
|
||||||
|
;;
|
||||||
|
'armv7l')
|
||||||
|
DOCKERFILE="Dockerfile.armhf"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
||||||
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the DEBs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
1
deployment/old/debian-package-armhf/pkg-src
Symbolic link
1
deployment/old/debian-package-armhf/pkg-src
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../debian-package-x64/pkg-src/
|
34
deployment/old/debian-package-x64/Dockerfile
Normal file
34
deployment/old/debian-package-x64/Dockerfile
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
FROM debian:10
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/debian-package-x64
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget npm devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev libssl-dev libssl1.1 liblttng-ust0
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/d731f991-8e68-4c7c-8ea0-fad5605b077a/49497b5420eecbd905158d86d738af64/dotnet-sdk-3.1.100-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
# Link to Debian source dir; mkdir needed or it fails, can't force dest
|
||||||
|
RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
27
deployment/old/debian-package-x64/clean.sh
Executable file
27
deployment/old/debian-package-x64/clean.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-debian-build"
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/debian-package-x64/dependencies.txt
Normal file
1
deployment/old/debian-package-x64/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
20
deployment/old/debian-package-x64/docker-build.sh
Executable file
20
deployment/old/debian-package-x64/docker-build.sh
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the DEB inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Remove build-dep for dotnet-sdk-3.1, since it's not a package in this image
|
||||||
|
sed -i '/dotnet-sdk-3.1,/d' debian/control
|
||||||
|
|
||||||
|
# Build DEB
|
||||||
|
dpkg-buildpackage -us -uc
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
|
mv /jellyfin[-_]* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
34
deployment/old/debian-package-x64/package.sh
Executable file
34
deployment/old/debian-package-x64/package.sh
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-debian-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the DEBs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
59
deployment/old/debian-package-x64/pkg-src/changelog
Normal file
59
deployment/old/debian-package-x64/pkg-src/changelog
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
jellyfin (10.5.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.5.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.5.0
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Fri, 11 Oct 2019 20:12:38 -0400
|
||||||
|
|
||||||
|
jellyfin (10.4.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.4.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.4.0
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Sat, 31 Aug 2019 21:38:56 -0400
|
||||||
|
|
||||||
|
jellyfin (10.3.7-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.3.7; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.7
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Wed, 24 Jul 2019 10:48:28 -0400
|
||||||
|
|
||||||
|
jellyfin (10.3.6-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.3.6; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.6
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Sat, 06 Jul 2019 13:34:19 -0400
|
||||||
|
|
||||||
|
jellyfin (10.3.5-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.3.5; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.5
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Sun, 09 Jun 2019 21:47:35 -0400
|
||||||
|
|
||||||
|
jellyfin (10.3.4-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.3.4; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.4
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Thu, 06 Jun 2019 22:45:31 -0400
|
||||||
|
|
||||||
|
jellyfin (10.3.3-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.3.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.3
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Fri, 17 May 2019 23:12:08 -0400
|
||||||
|
|
||||||
|
jellyfin (10.3.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Tue, 30 Apr 2019 20:18:44 -0400
|
||||||
|
|
||||||
|
jellyfin (10.3.1-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.3.1; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.1
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Sat, 20 Apr 2019 14:24:07 -0400
|
||||||
|
|
||||||
|
jellyfin (10.3.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version 10.3.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.0
|
||||||
|
|
||||||
|
-- Jellyfin Packaging Team <packaging@jellyfin.org> Fri, 19 Apr 2019 14:24:29 -0400
|
1
deployment/old/debian-package-x64/pkg-src/compat
Normal file
1
deployment/old/debian-package-x64/pkg-src/compat
Normal file
|
@ -0,0 +1 @@
|
||||||
|
8
|
40
deployment/old/debian-package-x64/pkg-src/conf/jellyfin
Normal file
40
deployment/old/debian-package-x64/pkg-src/conf/jellyfin
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# Jellyfin default configuration options
|
||||||
|
# This is a POSIX shell fragment
|
||||||
|
|
||||||
|
# Use this file to override the default configurations; add additional
|
||||||
|
# options with JELLYFIN_ADD_OPTS.
|
||||||
|
|
||||||
|
# Under systemd, use
|
||||||
|
# /etc/systemd/system/jellyfin.service.d/jellyfin.service.conf
|
||||||
|
# to override the user or this config file's location.
|
||||||
|
|
||||||
|
#
|
||||||
|
# General options
|
||||||
|
#
|
||||||
|
|
||||||
|
# Program directories
|
||||||
|
JELLYFIN_DATA_DIR="/var/lib/jellyfin"
|
||||||
|
JELLYFIN_CONFIG_DIR="/etc/jellyfin"
|
||||||
|
JELLYFIN_LOG_DIR="/var/log/jellyfin"
|
||||||
|
JELLYFIN_CACHE_DIR="/var/cache/jellyfin"
|
||||||
|
|
||||||
|
# Restart script for in-app server control
|
||||||
|
JELLYFIN_RESTART_OPT="--restartpath=/usr/lib/jellyfin/restart.sh"
|
||||||
|
|
||||||
|
# ffmpeg binary paths, overriding the system values
|
||||||
|
JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/lib/jellyfin-ffmpeg/ffmpeg"
|
||||||
|
|
||||||
|
# [OPTIONAL] run Jellyfin as a headless service
|
||||||
|
#JELLYFIN_SERVICE_OPT="--service"
|
||||||
|
|
||||||
|
# [OPTIONAL] run Jellyfin without the web app
|
||||||
|
#JELLYFIN_NOWEBAPP_OPT="--noautorunwebapp"
|
||||||
|
|
||||||
|
#
|
||||||
|
# SysV init/Upstart options
|
||||||
|
#
|
||||||
|
|
||||||
|
# Application username
|
||||||
|
JELLYFIN_USER="jellyfin"
|
||||||
|
# Full application command
|
||||||
|
JELLYFIN_ARGS="$JELLYFIN_RESTART_OPT $JELLYFIN_FFMPEG_OPT $JELLYFIN_SERVICE_OPT $JELLFIN_NOWEBAPP_OPT"
|
|
@ -0,0 +1,37 @@
|
||||||
|
#Allow jellyfin group to start, stop and restart itself
|
||||||
|
Cmnd_Alias RESTARTSERVER_SYSV = /sbin/service jellyfin restart, /usr/sbin/service jellyfin restart
|
||||||
|
Cmnd_Alias STARTSERVER_SYSV = /sbin/service jellyfin start, /usr/sbin/service jellyfin start
|
||||||
|
Cmnd_Alias STOPSERVER_SYSV = /sbin/service jellyfin stop, /usr/sbin/service jellyfin stop
|
||||||
|
Cmnd_Alias RESTARTSERVER_SYSTEMD = /usr/bin/systemctl restart jellyfin, /bin/systemctl restart jellyfin
|
||||||
|
Cmnd_Alias STARTSERVER_SYSTEMD = /usr/bin/systemctl start jellyfin, /bin/systemctl start jellyfin
|
||||||
|
Cmnd_Alias STOPSERVER_SYSTEMD = /usr/bin/systemctl stop jellyfin, /bin/systemctl stop jellyfin
|
||||||
|
Cmnd_Alias RESTARTSERVER_INITD = /etc/init.d/jellyfin restart
|
||||||
|
Cmnd_Alias STARTSERVER_INITD = /etc/init.d/jellyfin start
|
||||||
|
Cmnd_Alias STOPSERVER_INITD = /etc/init.d/jellyfin stop
|
||||||
|
|
||||||
|
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSV
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSV
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSV
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_INITD
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_INITD
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_INITD
|
||||||
|
|
||||||
|
Defaults!RESTARTSERVER_SYSV !requiretty
|
||||||
|
Defaults!STARTSERVER_SYSV !requiretty
|
||||||
|
Defaults!STOPSERVER_SYSV !requiretty
|
||||||
|
Defaults!RESTARTSERVER_SYSTEMD !requiretty
|
||||||
|
Defaults!STARTSERVER_SYSTEMD !requiretty
|
||||||
|
Defaults!STOPSERVER_SYSTEMD !requiretty
|
||||||
|
Defaults!RESTARTSERVER_INITD !requiretty
|
||||||
|
Defaults!STARTSERVER_INITD !requiretty
|
||||||
|
Defaults!STOPSERVER_INITD !requiretty
|
||||||
|
|
||||||
|
#Allow the server to mount iso images
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: /bin/mount
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: /bin/umount
|
||||||
|
|
||||||
|
Defaults:jellyfin !requiretty
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Jellyfin systemd configuration options
|
||||||
|
|
||||||
|
# Use this file to override the user or environment file location.
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
#User = jellyfin
|
||||||
|
#EnvironmentFile = /etc/default/jellyfin
|
30
deployment/old/debian-package-x64/pkg-src/conf/logging.json
Normal file
30
deployment/old/debian-package-x64/pkg-src/conf/logging.json
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"Serilog": {
|
||||||
|
"MinimumLevel": "Information",
|
||||||
|
"WriteTo": [
|
||||||
|
{
|
||||||
|
"Name": "Console",
|
||||||
|
"Args": {
|
||||||
|
"outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] {Message:lj}{NewLine}{Exception}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Async",
|
||||||
|
"Args": {
|
||||||
|
"configure": [
|
||||||
|
{
|
||||||
|
"Name": "File",
|
||||||
|
"Args": {
|
||||||
|
"path": "%JELLYFIN_LOG_DIR%//jellyfin.log",
|
||||||
|
"fileSizeLimitBytes": 10485700,
|
||||||
|
"rollOnFileSizeLimit": true,
|
||||||
|
"retainedFileCountLimit": 10,
|
||||||
|
"outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz}] [{Level:u3}] {Message}{NewLine}{Exception}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
31
deployment/old/debian-package-x64/pkg-src/control
Normal file
31
deployment/old/debian-package-x64/pkg-src/control
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
Source: jellyfin
|
||||||
|
Section: misc
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Jellyfin Team <team@jellyfin.org>
|
||||||
|
Build-Depends: debhelper (>= 9),
|
||||||
|
dotnet-sdk-3.1,
|
||||||
|
libc6-dev,
|
||||||
|
libcurl4-openssl-dev,
|
||||||
|
libfontconfig1-dev,
|
||||||
|
libfreetype6-dev,
|
||||||
|
libssl-dev,
|
||||||
|
wget,
|
||||||
|
npm | nodejs
|
||||||
|
Standards-Version: 3.9.4
|
||||||
|
Homepage: https://jellyfin.media/
|
||||||
|
Vcs-Git: https://github.org/jellyfin/jellyfin.git
|
||||||
|
Vcs-Browser: https://github.org/jellyfin/jellyfin
|
||||||
|
|
||||||
|
Package: jellyfin
|
||||||
|
Replaces: mediabrowser, emby, emby-server-beta, jellyfin-dev, emby-server
|
||||||
|
Breaks: mediabrowser, emby, emby-server-beta, jellyfin-dev, emby-server
|
||||||
|
Conflicts: mediabrowser, emby, emby-server-beta, jellyfin-dev, emby-server
|
||||||
|
Architecture: any
|
||||||
|
Depends: at,
|
||||||
|
libsqlite3-0,
|
||||||
|
jellyfin-ffmpeg,
|
||||||
|
libfontconfig1,
|
||||||
|
libfreetype6,
|
||||||
|
libssl1.1
|
||||||
|
Description: Jellyfin is a home media server.
|
||||||
|
It is built on top of other popular open source technologies such as Service Stack, jQuery, jQuery mobile, and Mono. It features a REST-based api with built-in documentation to facilitate client development. We also have client libraries for our api to enable rapid development.
|
29
deployment/old/debian-package-x64/pkg-src/copyright
Normal file
29
deployment/old/debian-package-x64/pkg-src/copyright
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
Format: http://dep.debian.net/deps/dep5
|
||||||
|
Upstream-Name: jellyfin
|
||||||
|
Source: https://github.com/jellyfin/jellyfin
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: 2018 Jellyfin Team
|
||||||
|
License: GPL-2.0+
|
||||||
|
|
||||||
|
Files: debian/*
|
||||||
|
Copyright: 2018 Joshua Boniface <joshua@boniface.me>
|
||||||
|
Copyright: 2014 Carlos Hernandez <carlos@techbyte.ca>
|
||||||
|
License: GPL-2.0+
|
||||||
|
|
||||||
|
License: GPL-2.0+
|
||||||
|
This package is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
.
|
||||||
|
This package is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
.
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
.
|
||||||
|
On Debian systems, the complete text of the GNU General
|
||||||
|
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
6
deployment/old/debian-package-x64/pkg-src/gbp.conf
Normal file
6
deployment/old/debian-package-x64/pkg-src/gbp.conf
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[DEFAULT]
|
||||||
|
pristine-tar = False
|
||||||
|
cleaner = fakeroot debian/rules clean
|
||||||
|
|
||||||
|
[import-orig]
|
||||||
|
filter = [ ".git*", ".hg*", ".vs*", ".vscode*" ]
|
6
deployment/old/debian-package-x64/pkg-src/install
Normal file
6
deployment/old/debian-package-x64/pkg-src/install
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
usr/lib/jellyfin usr/lib/
|
||||||
|
debian/conf/jellyfin etc/default/
|
||||||
|
debian/conf/logging.json etc/jellyfin/
|
||||||
|
debian/conf/jellyfin.service.conf etc/systemd/system/jellyfin.service.d/
|
||||||
|
debian/conf/jellyfin-sudoers etc/sudoers.d/
|
||||||
|
debian/bin/restart.sh usr/lib/jellyfin/
|
61
deployment/old/debian-package-x64/pkg-src/jellyfin.init
Normal file
61
deployment/old/debian-package-x64/pkg-src/jellyfin.init
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: Jellyfin Media Server
|
||||||
|
# Required-Start: $local_fs $network
|
||||||
|
# Required-Stop: $local_fs
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: Jellyfin Media Server
|
||||||
|
# Description: Runs Jellyfin Server
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Carry out specific functions when asked to by the system
|
||||||
|
|
||||||
|
if test -f /etc/default/jellyfin; then
|
||||||
|
. /etc/default/jellyfin
|
||||||
|
fi
|
||||||
|
|
||||||
|
. /lib/lsb/init-functions
|
||||||
|
|
||||||
|
PIDFILE="/run/jellyfin.pid"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
log_daemon_msg "Starting Jellyfin Media Server" "jellyfin" || true
|
||||||
|
|
||||||
|
if start-stop-daemon --start --quiet --oknodo --background --pidfile $PIDFILE --make-pidfile --user $JELLYFIN_USER --chuid $JELLYFIN_USER --exec /usr/bin/jellyfin -- $JELLYFIN_ARGS; then
|
||||||
|
log_end_msg 0 || true
|
||||||
|
else
|
||||||
|
log_end_msg 1 || true
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
stop)
|
||||||
|
log_daemon_msg "Stopping Jellyfin Media Server" "jellyfin" || true
|
||||||
|
if start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --remove-pidfile; then
|
||||||
|
log_end_msg 0 || true
|
||||||
|
else
|
||||||
|
log_end_msg 1 || true
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
restart)
|
||||||
|
log_daemon_msg "Restarting Jellyfin Media Server" "jellyfin" || true
|
||||||
|
start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE --remove-pidfile
|
||||||
|
if start-stop-daemon --start --quiet --oknodo --background --pidfile $PIDFILE --make-pidfile --user $JELLYFIN_USER --chuid $JELLYFIN_USER --exec /usr/bin/jellyfin -- $JELLYFIN_ARGS; then
|
||||||
|
log_end_msg 0 || true
|
||||||
|
else
|
||||||
|
log_end_msg 1 || true
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
status)
|
||||||
|
status_of_proc -p $PIDFILE /usr/bin/jellyfin jellyfin && exit 0 || exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {start|stop|restart|status}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
14
deployment/old/debian-package-x64/pkg-src/jellyfin.service
Normal file
14
deployment/old/debian-package-x64/pkg-src/jellyfin.service
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[Unit]
|
||||||
|
Description = Jellyfin Media Server
|
||||||
|
After = network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type = simple
|
||||||
|
EnvironmentFile = /etc/default/jellyfin
|
||||||
|
User = jellyfin
|
||||||
|
ExecStart = /usr/bin/jellyfin ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPT} ${JELLYFIN_SERVICE_OPT} ${JELLYFIN_NOWEBAPP_OPT}
|
||||||
|
Restart = on-failure
|
||||||
|
TimeoutSec = 15
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy = multi-user.target
|
20
deployment/old/debian-package-x64/pkg-src/jellyfin.upstart
Normal file
20
deployment/old/debian-package-x64/pkg-src/jellyfin.upstart
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
description "jellyfin daemon"
|
||||||
|
|
||||||
|
start on (local-filesystems and net-device-up IFACE!=lo)
|
||||||
|
stop on runlevel [!2345]
|
||||||
|
|
||||||
|
console log
|
||||||
|
respawn
|
||||||
|
respawn limit 10 5
|
||||||
|
|
||||||
|
kill timeout 20
|
||||||
|
|
||||||
|
script
|
||||||
|
set -x
|
||||||
|
echo "Starting $UPSTART_JOB"
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
logger -t "$0" "DEBUG: `set`"
|
||||||
|
. /etc/default/jellyfin
|
||||||
|
exec su -u $JELLYFIN_USER -c /usr/bin/jellyfin $JELLYFIN_ARGS
|
||||||
|
end script
|
1
deployment/old/debian-package-x64/pkg-src/po/POTFILES.in
Normal file
1
deployment/old/debian-package-x64/pkg-src/po/POTFILES.in
Normal file
|
@ -0,0 +1 @@
|
||||||
|
[type: gettext/rfc822deb] templates
|
57
deployment/old/debian-package-x64/pkg-src/po/templates.pot
Normal file
57
deployment/old/debian-package-x64/pkg-src/po/templates.pot
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: jellyfin-server\n"
|
||||||
|
"Report-Msgid-Bugs-To: jellyfin-server@packages.debian.org\n"
|
||||||
|
"POT-Creation-Date: 2015-06-12 20:51-0600\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#. Type: note
|
||||||
|
#. Description
|
||||||
|
#: ../templates:1001
|
||||||
|
msgid "Jellyfin permission info:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Type: note
|
||||||
|
#. Description
|
||||||
|
#: ../templates:1001
|
||||||
|
msgid ""
|
||||||
|
"Jellyfin by default runs under a user named \"jellyfin\". Please ensure that the "
|
||||||
|
"user jellyfin has read and write access to any folders you wish to add to your "
|
||||||
|
"library. Otherwise please run jellyfin under a different user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Type: string
|
||||||
|
#. Description
|
||||||
|
#: ../templates:2001
|
||||||
|
msgid "Username to run Jellyfin as:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Type: string
|
||||||
|
#. Description
|
||||||
|
#: ../templates:2001
|
||||||
|
msgid "The user that jellyfin will run as."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Type: note
|
||||||
|
#. Description
|
||||||
|
#: ../templates:3001
|
||||||
|
msgid "Jellyfin still running"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Type: note
|
||||||
|
#. Description
|
||||||
|
#: ../templates:3001
|
||||||
|
msgid "Jellyfin is currently running. Please close it and try again."
|
||||||
|
msgstr ""
|
92
deployment/old/debian-package-x64/pkg-src/postinst
Normal file
92
deployment/old/debian-package-x64/pkg-src/postinst
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
NAME=jellyfin
|
||||||
|
DEFAULT_FILE=/etc/default/${NAME}
|
||||||
|
|
||||||
|
# Source Jellyfin default configuration
|
||||||
|
if [[ -f $DEFAULT_FILE ]]; then
|
||||||
|
. $DEFAULT_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Data directories for program data (cache, db), configs, and logs
|
||||||
|
PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME}
|
||||||
|
CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME}
|
||||||
|
LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME}
|
||||||
|
CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
configure)
|
||||||
|
# create jellyfin group if it does not exist
|
||||||
|
if [[ -z "$(getent group jellyfin)" ]]; then
|
||||||
|
addgroup --quiet --system jellyfin > /dev/null 2>&1
|
||||||
|
fi
|
||||||
|
# create jellyfin user if it does not exist
|
||||||
|
if [[ -z "$(getent passwd jellyfin)" ]]; then
|
||||||
|
adduser --system --ingroup jellyfin --shell /bin/false jellyfin --no-create-home --home ${PROGRAMDATA} \
|
||||||
|
--gecos "Jellyfin default user" > /dev/null 2>&1
|
||||||
|
fi
|
||||||
|
# ensure $PROGRAMDATA exists
|
||||||
|
if [[ ! -d $PROGRAMDATA ]]; then
|
||||||
|
mkdir $PROGRAMDATA
|
||||||
|
fi
|
||||||
|
# ensure $CONFIGDATA exists
|
||||||
|
if [[ ! -d $CONFIGDATA ]]; then
|
||||||
|
mkdir $CONFIGDATA
|
||||||
|
fi
|
||||||
|
# ensure $LOGDATA exists
|
||||||
|
if [[ ! -d $LOGDATA ]]; then
|
||||||
|
mkdir $LOGDATA
|
||||||
|
fi
|
||||||
|
# ensure $CACHEDATA exists
|
||||||
|
if [[ ! -d $CACHEDATA ]]; then
|
||||||
|
mkdir $CACHEDATA
|
||||||
|
fi
|
||||||
|
# Ensure permissions are correct on all config directories
|
||||||
|
chown -R jellyfin $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
|
||||||
|
chgrp adm $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
|
||||||
|
chmod 0750 $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
|
||||||
|
|
||||||
|
chmod +x /usr/lib/jellyfin/restart.sh > /dev/null 2>&1 || true
|
||||||
|
|
||||||
|
# Install jellyfin symlink into /usr/bin
|
||||||
|
ln -sf /usr/lib/jellyfin/bin/jellyfin /usr/bin/jellyfin
|
||||||
|
|
||||||
|
;;
|
||||||
|
abort-upgrade|abort-remove|abort-deconfigure)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "postinst called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
#DEBHELPER
|
||||||
|
|
||||||
|
if [[ -x "/usr/bin/deb-systemd-helper" ]]; then
|
||||||
|
# Manual init script handling
|
||||||
|
deb-systemd-helper unmask jellyfin.service >/dev/null || true
|
||||||
|
# was-enabled defaults to true, so new installations run enable.
|
||||||
|
if deb-systemd-helper --quiet was-enabled jellyfin.service; then
|
||||||
|
# Enables the unit on first installation, creates new
|
||||||
|
# symlinks on upgrades if the unit file has changed.
|
||||||
|
deb-systemd-helper enable jellyfin.service >/dev/null || true
|
||||||
|
else
|
||||||
|
# Update the statefile to add new symlinks (if any), which need to be
|
||||||
|
# cleaned up on purge. Also remove old symlinks.
|
||||||
|
deb-systemd-helper update-state jellyfin.service >/dev/null || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# End automatically added section
|
||||||
|
# Automatically added by dh_installinit
|
||||||
|
if [[ "$1" == "configure" ]] || [[ "$1" == "abort-upgrade" ]]; then
|
||||||
|
if [[ -d "/run/systemd/systemd" ]]; then
|
||||||
|
systemctl --system daemon-reload >/dev/null || true
|
||||||
|
deb-systemd-invoke start jellyfin >/dev/null || true
|
||||||
|
elif [[ -x "/etc/init.d/jellyfin" ]] || [[ -e "/etc/init/jellyfin.conf" ]]; then
|
||||||
|
update-rc.d jellyfin defaults >/dev/null
|
||||||
|
invoke-rc.d jellyfin start || exit $?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit 0
|
81
deployment/old/debian-package-x64/pkg-src/postrm
Normal file
81
deployment/old/debian-package-x64/pkg-src/postrm
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
NAME=jellyfin
|
||||||
|
DEFAULT_FILE=/etc/default/${NAME}
|
||||||
|
|
||||||
|
# Source Jellyfin default configuration
|
||||||
|
if [[ -f $DEFAULT_FILE ]]; then
|
||||||
|
. $DEFAULT_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Data directories for program data (cache, db), configs, and logs
|
||||||
|
PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME}
|
||||||
|
CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME}
|
||||||
|
LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME}
|
||||||
|
CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME}
|
||||||
|
|
||||||
|
# In case this system is running systemd, we make systemd reload the unit files
|
||||||
|
# to pick up changes.
|
||||||
|
if [[ -d /run/systemd/system ]] ; then
|
||||||
|
systemctl --system daemon-reload >/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
purge)
|
||||||
|
echo PURGE | debconf-communicate $NAME > /dev/null 2>&1 || true
|
||||||
|
|
||||||
|
if [[ -x "/etc/init.d/jellyfin" ]] || [[ -e "/etc/init/jellyfin.connf" ]]; then
|
||||||
|
update-rc.d jellyfin remove >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -x "/usr/bin/deb-systemd-helper" ]]; then
|
||||||
|
deb-systemd-helper purge jellyfin.service >/dev/null
|
||||||
|
deb-systemd-helper unmask jellyfin.service >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove user and group
|
||||||
|
userdel jellyfin > /dev/null 2>&1 || true
|
||||||
|
delgroup --quiet jellyfin > /dev/null 2>&1 || true
|
||||||
|
# Remove config dir
|
||||||
|
if [[ -d $CONFIGDATA ]]; then
|
||||||
|
rm -rf $CONFIGDATA
|
||||||
|
fi
|
||||||
|
# Remove log dir
|
||||||
|
if [[ -d $LOGDATA ]]; then
|
||||||
|
rm -rf $LOGDATA
|
||||||
|
fi
|
||||||
|
# Remove cache dir
|
||||||
|
if [[ -d $CACHEDATA ]]; then
|
||||||
|
rm -rf $CACHEDATA
|
||||||
|
fi
|
||||||
|
# Remove program data dir
|
||||||
|
if [[ -d $PROGRAMDATA ]]; then
|
||||||
|
rm -rf $PROGRAMDATA
|
||||||
|
fi
|
||||||
|
# Remove binary symlink
|
||||||
|
[[ -f /usr/bin/jellyfin ]] && rm /usr/bin/jellyfin
|
||||||
|
# Remove sudoers config
|
||||||
|
[[ -f /etc/sudoers.d/jellyfin-sudoers ]] && rm /etc/sudoers.d/jellyfin-sudoers
|
||||||
|
# Remove anything at the default locations; catches situations where the user moved the defaults
|
||||||
|
[[ -e /etc/jellyfin ]] && rm -rf /etc/jellyfin
|
||||||
|
[[ -e /var/log/jellyfin ]] && rm -rf /var/log/jellyfin
|
||||||
|
[[ -e /var/cache/jellyfin ]] && rm -rf /var/cache/jellyfin
|
||||||
|
[[ -e /var/lib/jellyfin ]] && rm -rf /var/lib/jellyfin
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
if [[ -x "/usr/bin/deb-systemd-helper" ]]; then
|
||||||
|
deb-systemd-helper mask jellyfin.service >/dev/null
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "postrm called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
78
deployment/old/debian-package-x64/pkg-src/preinst
Normal file
78
deployment/old/debian-package-x64/pkg-src/preinst
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
NAME=jellyfin
|
||||||
|
DEFAULT_FILE=/etc/default/${NAME}
|
||||||
|
|
||||||
|
# Source Jellyfin default configuration
|
||||||
|
if [[ -f $DEFAULT_FILE ]]; then
|
||||||
|
. $DEFAULT_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Data directories for program data (cache, db), configs, and logs
|
||||||
|
PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME}
|
||||||
|
CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME}
|
||||||
|
LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME}
|
||||||
|
CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME}
|
||||||
|
|
||||||
|
# In case this system is running systemd, we make systemd reload the unit files
|
||||||
|
# to pick up changes.
|
||||||
|
if [[ -d /run/systemd/system ]] ; then
|
||||||
|
systemctl --system daemon-reload >/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
install|upgrade)
|
||||||
|
# try graceful termination;
|
||||||
|
if [[ -d /run/systemd/system ]]; then
|
||||||
|
deb-systemd-invoke stop ${NAME}.service > /dev/null 2>&1 || true
|
||||||
|
elif [ -x "/etc/init.d/${NAME}" ] || [ -e "/etc/init/${NAME}.conf" ]; then
|
||||||
|
invoke-rc.d ${NAME} stop > /dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
# try and figure out if jellyfin is running
|
||||||
|
PIDFILE=$(find /var/run/ -maxdepth 1 -mindepth 1 -name "jellyfin*.pid" -print -quit)
|
||||||
|
[[ -n "$PIDFILE" ]] && [[ -s "$PIDFILE" ]] && JELLYFIN_PID=$(cat ${PIDFILE})
|
||||||
|
# if its running, let's stop it
|
||||||
|
if [[ -n "$JELLYFIN_PID" ]]; then
|
||||||
|
echo "Stopping Jellyfin!"
|
||||||
|
# if jellyfin is still running, kill it
|
||||||
|
if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then
|
||||||
|
CPIDS=$(pgrep -P $JELLYFIN_PID)
|
||||||
|
sleep 2 && kill -KILL $CPIDS
|
||||||
|
kill -TERM $CPIDS > /dev/null 2>&1
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
# if it's still running, show error
|
||||||
|
if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then
|
||||||
|
echo "Could not successfully stop JellyfinServer, please do so before uninstalling."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
[[ -f $PIDFILE ]] && rm $PIDFILE
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clean up old Emby cruft that can break the user's system
|
||||||
|
[[ -f /etc/sudoers.d/emby ]] && rm -f /etc/sudoers.d/emby
|
||||||
|
|
||||||
|
# If we have existing config, log, or cache dirs in /var/lib/jellyfin, move them into the right place
|
||||||
|
if [[ -d $PROGRAMDATA/config ]]; then
|
||||||
|
mv $PROGRAMDATA/config $CONFIGDATA
|
||||||
|
fi
|
||||||
|
if [[ -d $PROGRAMDATA/logs ]]; then
|
||||||
|
mv $PROGRAMDATA/logs $LOGDATA
|
||||||
|
fi
|
||||||
|
if [[ -d $PROGRAMDATA/logs ]]; then
|
||||||
|
mv $PROGRAMDATA/cache $CACHEDATA
|
||||||
|
fi
|
||||||
|
|
||||||
|
;;
|
||||||
|
abort-upgrade)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "preinst called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
61
deployment/old/debian-package-x64/pkg-src/prerm
Normal file
61
deployment/old/debian-package-x64/pkg-src/prerm
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
NAME=jellyfin
|
||||||
|
DEFAULT_FILE=/etc/default/${NAME}
|
||||||
|
|
||||||
|
# Source Jellyfin default configuration
|
||||||
|
if [[ -f $DEFAULT_FILE ]]; then
|
||||||
|
. $DEFAULT_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Data directories for program data (cache, db), configs, and logs
|
||||||
|
PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME}
|
||||||
|
CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME}
|
||||||
|
LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME}
|
||||||
|
CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
remove|upgrade|deconfigure)
|
||||||
|
echo "Stopping Jellyfin!"
|
||||||
|
# try graceful termination;
|
||||||
|
if [[ -d /run/systemd/system ]]; then
|
||||||
|
deb-systemd-invoke stop ${NAME}.service > /dev/null 2>&1 || true
|
||||||
|
elif [ -x "/etc/init.d/${NAME}" ] || [ -e "/etc/init/${NAME}.conf" ]; then
|
||||||
|
invoke-rc.d ${NAME} stop > /dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
|
# Ensure that it is shutdown
|
||||||
|
PIDFILE=$(find /var/run/ -maxdepth 1 -mindepth 1 -name "jellyfin*.pid" -print -quit)
|
||||||
|
[[ -n "$PIDFILE" ]] && [[ -s "$PIDFILE" ]] && JELLYFIN_PID=$(cat ${PIDFILE})
|
||||||
|
# if its running, let's stop it
|
||||||
|
if [[ -n "$JELLYFIN_PID" ]]; then
|
||||||
|
# if jellyfin is still running, kill it
|
||||||
|
if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then
|
||||||
|
CPIDS=$(pgrep -P $JELLYFIN_PID)
|
||||||
|
sleep 2 && kill -KILL $CPIDS
|
||||||
|
kill -TERM $CPIDS > /dev/null 2>&1
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
# if it's still running, show error
|
||||||
|
if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then
|
||||||
|
echo "Could not successfully stop Jellyfin, please do so before uninstalling."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
[[ -f $PIDFILE ]] && rm $PIDFILE
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [[ -f /usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe.so ]]; then
|
||||||
|
rm /usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe.so
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
failed-upgrade)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "prerm called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
66
deployment/old/debian-package-x64/pkg-src/rules
Executable file
66
deployment/old/debian-package-x64/pkg-src/rules
Executable file
|
@ -0,0 +1,66 @@
|
||||||
|
#! /usr/bin/make -f
|
||||||
|
CONFIG := Release
|
||||||
|
TERM := xterm
|
||||||
|
SHELL := /bin/bash
|
||||||
|
WEB_TARGET := $(CURDIR)/MediaBrowser.WebDashboard/jellyfin-web
|
||||||
|
WEB_VERSION := $(shell sed -n -e 's/^version: "\(.*\)"/\1/p' $(CURDIR)/build.yaml)
|
||||||
|
|
||||||
|
HOST_ARCH := $(shell arch)
|
||||||
|
BUILD_ARCH := ${DEB_HOST_MULTIARCH}
|
||||||
|
ifeq ($(HOST_ARCH),x86_64)
|
||||||
|
# Building AMD64
|
||||||
|
DOTNETRUNTIME := debian-x64
|
||||||
|
ifeq ($(BUILD_ARCH),arm-linux-gnueabihf)
|
||||||
|
# Cross-building ARM on AMD64
|
||||||
|
DOTNETRUNTIME := debian-arm
|
||||||
|
endif
|
||||||
|
ifeq ($(BUILD_ARCH),aarch64-linux-gnu)
|
||||||
|
# Cross-building ARM on AMD64
|
||||||
|
DOTNETRUNTIME := debian-arm64
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(HOST_ARCH),armv7l)
|
||||||
|
# Building ARM
|
||||||
|
DOTNETRUNTIME := debian-arm
|
||||||
|
endif
|
||||||
|
ifeq ($(HOST_ARCH),arm64)
|
||||||
|
# Building ARM
|
||||||
|
DOTNETRUNTIME := debian-arm64
|
||||||
|
endif
|
||||||
|
|
||||||
|
export DH_VERBOSE=1
|
||||||
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@
|
||||||
|
|
||||||
|
# disable "make check"
|
||||||
|
override_dh_auto_test:
|
||||||
|
|
||||||
|
# disable stripping debugging symbols
|
||||||
|
override_dh_clistrip:
|
||||||
|
|
||||||
|
override_dh_auto_build:
|
||||||
|
echo $(WEB_VERSION)
|
||||||
|
# Clone down and build Web frontend
|
||||||
|
mkdir -p $(WEB_TARGET)
|
||||||
|
wget -O web-src.tgz https://github.com/jellyfin/jellyfin-web/archive/v$(WEB_VERSION).tar.gz || wget -O web-src.tgz https://github.com/jellyfin/jellyfin-web/archive/master.tar.gz
|
||||||
|
mkdir -p $(CURDIR)/web
|
||||||
|
tar -xzf web-src.tgz -C $(CURDIR)/web/ --strip 1
|
||||||
|
cd $(CURDIR)/web/ && npm install yarn
|
||||||
|
cd $(CURDIR)/web/ && node_modules/yarn/bin/yarn install
|
||||||
|
mv $(CURDIR)/web/dist/* $(WEB_TARGET)/
|
||||||
|
# Build the application
|
||||||
|
dotnet publish --configuration $(CONFIG) --output='$(CURDIR)/usr/lib/jellyfin/bin' --self-contained --runtime $(DOTNETRUNTIME) \
|
||||||
|
"-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none" Jellyfin.Server
|
||||||
|
|
||||||
|
override_dh_auto_clean:
|
||||||
|
dotnet clean -maxcpucount:1 --configuration $(CONFIG) Jellyfin.Server || true
|
||||||
|
rm -f '$(CURDIR)/web-src.tgz'
|
||||||
|
rm -rf '$(CURDIR)/usr'
|
||||||
|
rm -rf '$(CURDIR)/web'
|
||||||
|
rm -rf '$(WEB_TARGET)'
|
||||||
|
|
||||||
|
# Force the service name to jellyfin even if we're building jellyfin-nightly
|
||||||
|
override_dh_installinit:
|
||||||
|
dh_installinit --name=jellyfin
|
|
@ -0,0 +1,3 @@
|
||||||
|
# This is an override for the following lintian errors:
|
||||||
|
jellyfin source: license-problem-md5sum-non-free-file Emby.Drawing/ImageMagick/fonts/webdings.ttf*
|
||||||
|
jellyfin source: source-is-missing
|
1
deployment/old/debian-package-x64/pkg-src/source/format
Normal file
1
deployment/old/debian-package-x64/pkg-src/source/format
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1.0
|
11
deployment/old/debian-package-x64/pkg-src/source/options
Normal file
11
deployment/old/debian-package-x64/pkg-src/source/options
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
tar-ignore='.git*'
|
||||||
|
tar-ignore='**/.git'
|
||||||
|
tar-ignore='**/.hg'
|
||||||
|
tar-ignore='**/.vs'
|
||||||
|
tar-ignore='**/.vscode'
|
||||||
|
tar-ignore='deployment'
|
||||||
|
tar-ignore='**/bin'
|
||||||
|
tar-ignore='**/obj'
|
||||||
|
tar-ignore='**/.nuget'
|
||||||
|
tar-ignore='*.deb'
|
||||||
|
tar-ignore='ThirdParty'
|
33
deployment/old/fedora-package-x64/Dockerfile
Normal file
33
deployment/old/fedora-package-x64/Dockerfile
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
FROM fedora:31
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/fedora-package-x64
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
|
||||||
|
# Prepare Fedora environment
|
||||||
|
RUN dnf update -y
|
||||||
|
|
||||||
|
# Install build dependencies
|
||||||
|
RUN dnf install -y @buildsys-build rpmdevtools git dnf-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel nodejs-yarn
|
||||||
|
|
||||||
|
# Install DotNET SDK
|
||||||
|
RUN rpm --import https://packages.microsoft.com/keys/microsoft.asc \
|
||||||
|
&& curl -o /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/$(rpm -E %fedora)/prod.repo \
|
||||||
|
&& dnf install -y dotnet-sdk-${SDK_VERSION} dotnet-runtime-${SDK_VERSION}
|
||||||
|
|
||||||
|
# Create symlinks and directories
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \
|
||||||
|
&& mkdir -p ${SOURCE_DIR}/SPECS \
|
||||||
|
&& ln -s ${PLATFORM_DIR}/pkg-src/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \
|
||||||
|
&& mkdir -p ${SOURCE_DIR}/SOURCES \
|
||||||
|
&& ln -s ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/SOURCES
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
32
deployment/old/fedora-package-x64/clean.sh
Executable file
32
deployment/old/fedora-package-x64/clean.sh
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
VERSION="$( grep -A1 '^Version:' ${WORKDIR}/pkg-src/jellyfin.spec | awk '{ print $NF }' )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
package_source_dir="${WORKDIR}/pkg-src"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-fedora-build"
|
||||||
|
|
||||||
|
rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null \
|
||||||
|
|| sudo rm -f "${package_source_dir}/jellyfin-${VERSION}.tar.gz" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/fedora-package-x64/dependencies.txt
Normal file
1
deployment/old/fedora-package-x64/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
18
deployment/old/fedora-package-x64/docker-build.sh
Executable file
18
deployment/old/fedora-package-x64/docker-build.sh
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the RPM inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Build RPM
|
||||||
|
make -f .copr/Makefile srpm outdir=/root/rpmbuild/SRPMS
|
||||||
|
rpmbuild -rb /root/rpmbuild/SRPMS/jellyfin-*.src.rpm
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/rpm
|
||||||
|
mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/rpm/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
34
deployment/old/fedora-package-x64/package.sh
Executable file
34
deployment/old/fedora-package-x64/package.sh
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-fedora-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
|
# Build the RPMs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the RPMs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/rpm/* "${output_dir}"
|
3
deployment/old/fedora-package-x64/pkg-src/.gitignore
vendored
Normal file
3
deployment/old/fedora-package-x64/pkg-src/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
*.rpm
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
43
deployment/old/fedora-package-x64/pkg-src/README.md
Normal file
43
deployment/old/fedora-package-x64/pkg-src/README.md
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# Jellyfin RPM
|
||||||
|
|
||||||
|
## Build Fedora Package with docker
|
||||||
|
|
||||||
|
Change into this directory `cd rpm-package`
|
||||||
|
Run the build script `./build-fedora-rpm.sh`.
|
||||||
|
Resulting RPM and src.rpm will be in `../../jellyfin-*.rpm`
|
||||||
|
|
||||||
|
## ffmpeg
|
||||||
|
|
||||||
|
The RPM package for Fedora/CentOS requires some additional repositories as ffmpeg is not in the main repositories.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# ffmpeg from RPMfusion free
|
||||||
|
# Fedora
|
||||||
|
$ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
|
||||||
|
# CentOS 7
|
||||||
|
$ sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
|
||||||
|
```
|
||||||
|
|
||||||
|
## ISO mounting
|
||||||
|
|
||||||
|
To allow Jellyfin to mount/umount ISO files uncomment these two lines in `/etc/sudoers.d/jellyfin-sudoers`
|
||||||
|
```
|
||||||
|
# %jellyfin ALL=(ALL) NOPASSWD: /bin/mount
|
||||||
|
# %jellyfin ALL=(ALL) NOPASSWD: /bin/umount
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building with dotnet
|
||||||
|
|
||||||
|
Jellyfin is build with `--self-contained` so no dotnet required for runtime.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# dotnet required for building the RPM
|
||||||
|
# Fedora
|
||||||
|
$ sudo dnf copr enable @dotnet-sig/dotnet
|
||||||
|
# CentOS
|
||||||
|
$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
|
||||||
|
```
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
- [ ] OpenSUSE
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<service>
|
||||||
|
<short>Jellyfin</short>
|
||||||
|
<description>The Free Software Media System.</description>
|
||||||
|
<port protocol="tcp" port="8096"/>
|
||||||
|
<port protocol="tcp" port="8920"/>
|
||||||
|
<port protocol="udp" port="1900"/>
|
||||||
|
<port protocol="udp" port="7359"/>
|
||||||
|
</service>
|
34
deployment/old/fedora-package-x64/pkg-src/jellyfin.env
Normal file
34
deployment/old/fedora-package-x64/pkg-src/jellyfin.env
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# Jellyfin default configuration options
|
||||||
|
|
||||||
|
# Use this file to override the default configurations; add additional
|
||||||
|
# options with JELLYFIN_ADD_OPTS.
|
||||||
|
|
||||||
|
# To override the user or this config file's location, use
|
||||||
|
# /etc/systemd/system/jellyfin.service.d/override.conf
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is a POSIX shell fragment
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# General options
|
||||||
|
#
|
||||||
|
|
||||||
|
# Program directories
|
||||||
|
JELLYFIN_DATA_DIR="/var/lib/jellyfin"
|
||||||
|
JELLYFIN_CONFIG_DIR="/etc/jellyfin"
|
||||||
|
JELLYFIN_LOG_DIR="/var/log/jellyfin"
|
||||||
|
JELLYFIN_CACHE_DIR="/var/cache/jellyfin"
|
||||||
|
|
||||||
|
# In-App service control
|
||||||
|
JELLYFIN_RESTART_OPT="--restartpath=/usr/libexec/jellyfin/restart.sh"
|
||||||
|
|
||||||
|
# [OPTIONAL] ffmpeg binary paths, overriding the UI-configured values
|
||||||
|
#JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/bin/ffmpeg"
|
||||||
|
|
||||||
|
# [OPTIONAL] run Jellyfin as a headless service
|
||||||
|
#JELLYFIN_SERVICE_OPT="--service"
|
||||||
|
|
||||||
|
# [OPTIONAL] run Jellyfin without the web app
|
||||||
|
#JELLYFIN_NOWEBAPP_OPT="--noautorunwebapp"
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Jellyfin systemd configuration options
|
||||||
|
|
||||||
|
# Use this file to override the user or environment file location.
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
#User = jellyfin
|
||||||
|
#EnvironmentFile = /etc/sysconfig/jellyfin
|
15
deployment/old/fedora-package-x64/pkg-src/jellyfin.service
Normal file
15
deployment/old/fedora-package-x64/pkg-src/jellyfin.service
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
[Unit]
|
||||||
|
After=network.target
|
||||||
|
Description=Jellyfin is a free software media system that puts you in control of managing and streaming your media.
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
EnvironmentFile=/etc/sysconfig/jellyfin
|
||||||
|
WorkingDirectory=/var/lib/jellyfin
|
||||||
|
ExecStart=/usr/bin/jellyfin ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPT} ${JELLYFIN_SERVICE_OPT} ${JELLYFIN_NOWEBAPP_OPT}
|
||||||
|
TimeoutSec=15
|
||||||
|
Restart=on-failure
|
||||||
|
User=jellyfin
|
||||||
|
Group=jellyfin
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
181
deployment/old/fedora-package-x64/pkg-src/jellyfin.spec
Normal file
181
deployment/old/fedora-package-x64/pkg-src/jellyfin.spec
Normal file
|
@ -0,0 +1,181 @@
|
||||||
|
%global debug_package %{nil}
|
||||||
|
# Set the dotnet runtime
|
||||||
|
%if 0%{?fedora}
|
||||||
|
%global dotnet_runtime fedora-x64
|
||||||
|
%else
|
||||||
|
%global dotnet_runtime centos-x64
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Name: jellyfin
|
||||||
|
Version: 10.5.0
|
||||||
|
Release: 1%{?dist}
|
||||||
|
Summary: The Free Software Media Browser
|
||||||
|
License: GPLv2
|
||||||
|
URL: https://jellyfin.media
|
||||||
|
# Jellyfin Server tarball created by `make -f .copr/Makefile srpm`, real URL ends with `v%{version}.tar.gz`
|
||||||
|
Source0: https://github.com/%{name}/%{name}/archive/%{name}-%{version}.tar.gz
|
||||||
|
# Jellyfin Webinterface downloaded by `make -f .copr/Makefile srpm`, real URL ends with `v%{version}.tar.gz`
|
||||||
|
Source1: https://github.com/%{name}/%{name}-web/archive/%{name}-web-%{version}.tar.gz
|
||||||
|
Source11: jellyfin.service
|
||||||
|
Source12: jellyfin.env
|
||||||
|
Source13: jellyfin.sudoers
|
||||||
|
Source14: restart.sh
|
||||||
|
Source15: jellyfin.override.conf
|
||||||
|
Source16: jellyfin-firewalld.xml
|
||||||
|
|
||||||
|
%{?systemd_requires}
|
||||||
|
BuildRequires: systemd
|
||||||
|
Requires(pre): shadow-utils
|
||||||
|
BuildRequires: libcurl-devel, fontconfig-devel, freetype-devel, openssl-devel, glibc-devel, libicu-devel, git
|
||||||
|
%if 0%{?fedora}
|
||||||
|
BuildRequires: nodejs-yarn, git
|
||||||
|
%else
|
||||||
|
# Requirements not packaged in main repos
|
||||||
|
# From https://rpm.nodesource.com/pub_10.x/el/7/x86_64/
|
||||||
|
BuildRequires: nodejs >= 10 yarn
|
||||||
|
%endif
|
||||||
|
Requires: libcurl, fontconfig, freetype, openssl, glibc libicu
|
||||||
|
# Requirements not packaged in main repos
|
||||||
|
# COPR @dotnet-sig/dotnet or
|
||||||
|
# https://packages.microsoft.com/rhel/7/prod/
|
||||||
|
BuildRequires: dotnet-runtime-3.1, dotnet-sdk-3.1
|
||||||
|
# RPMfusion free
|
||||||
|
Requires: ffmpeg
|
||||||
|
|
||||||
|
# Disable Automatic Dependency Processing
|
||||||
|
AutoReqProv: no
|
||||||
|
|
||||||
|
%description
|
||||||
|
Jellyfin is a free software media system that puts you in control of managing and streaming your media.
|
||||||
|
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -n %{name}-%{version} -b 0 -b 1
|
||||||
|
web_build_dir="$(mktemp -d)"
|
||||||
|
web_target="$PWD/MediaBrowser.WebDashboard/jellyfin-web"
|
||||||
|
pushd ../jellyfin-web-%{version} || pushd ../jellyfin-web-master
|
||||||
|
%if 0%{?fedora}
|
||||||
|
nodejs-yarn install
|
||||||
|
%else
|
||||||
|
yarn install
|
||||||
|
%endif
|
||||||
|
mkdir -p ${web_target}
|
||||||
|
mv dist/* ${web_target}/
|
||||||
|
popd
|
||||||
|
|
||||||
|
%build
|
||||||
|
|
||||||
|
%install
|
||||||
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||||
|
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||||
|
dotnet publish --configuration Release --output='%{buildroot}%{_libdir}/jellyfin' --self-contained --runtime %{dotnet_runtime} \
|
||||||
|
"-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none" Jellyfin.Server
|
||||||
|
%{__install} -D -m 0644 LICENSE %{buildroot}%{_datadir}/licenses/%{name}/LICENSE
|
||||||
|
%{__install} -D -m 0644 %{SOURCE15} %{buildroot}%{_sysconfdir}/systemd/system/%{name}.service.d/override.conf
|
||||||
|
%{__install} -D -m 0644 Jellyfin.Server/Resources/Configuration/logging.json %{buildroot}%{_sysconfdir}/%{name}/logging.json
|
||||||
|
%{__mkdir} -p %{buildroot}%{_bindir}
|
||||||
|
tee %{buildroot}%{_bindir}/jellyfin << EOF
|
||||||
|
#!/bin/sh
|
||||||
|
exec %{_libdir}/%{name}/%{name} \${@}
|
||||||
|
EOF
|
||||||
|
%{__mkdir} -p %{buildroot}%{_sharedstatedir}/jellyfin
|
||||||
|
%{__mkdir} -p %{buildroot}%{_sysconfdir}/%{name}
|
||||||
|
%{__mkdir} -p %{buildroot}%{_var}/log/jellyfin
|
||||||
|
%{__mkdir} -p %{buildroot}%{_var}/cache/jellyfin
|
||||||
|
|
||||||
|
%{__install} -D -m 0644 %{SOURCE11} %{buildroot}%{_unitdir}/%{name}.service
|
||||||
|
%{__install} -D -m 0644 %{SOURCE12} %{buildroot}%{_sysconfdir}/sysconfig/%{name}
|
||||||
|
%{__install} -D -m 0600 %{SOURCE13} %{buildroot}%{_sysconfdir}/sudoers.d/%{name}-sudoers
|
||||||
|
%{__install} -D -m 0755 %{SOURCE14} %{buildroot}%{_libexecdir}/%{name}/restart.sh
|
||||||
|
%{__install} -D -m 0644 %{SOURCE16} %{buildroot}%{_prefix}/lib/firewalld/services/%{name}.xml
|
||||||
|
|
||||||
|
%files
|
||||||
|
%{_libdir}/%{name}/jellyfin-web/*
|
||||||
|
%attr(755,root,root) %{_bindir}/%{name}
|
||||||
|
%{_libdir}/%{name}/*.json
|
||||||
|
%{_libdir}/%{name}/*.dll
|
||||||
|
%{_libdir}/%{name}/*.so
|
||||||
|
%{_libdir}/%{name}/*.a
|
||||||
|
%{_libdir}/%{name}/createdump
|
||||||
|
# Needs 755 else only root can run it since binary build by dotnet is 722
|
||||||
|
%attr(755,root,root) %{_libdir}/%{name}/jellyfin
|
||||||
|
%{_libdir}/%{name}/SOS_README.md
|
||||||
|
%{_unitdir}/%{name}.service
|
||||||
|
%{_libexecdir}/%{name}/restart.sh
|
||||||
|
%{_prefix}/lib/firewalld/services/%{name}.xml
|
||||||
|
%attr(755,jellyfin,jellyfin) %dir %{_sysconfdir}/%{name}
|
||||||
|
%config %{_sysconfdir}/sysconfig/%{name}
|
||||||
|
%config(noreplace) %attr(600,root,root) %{_sysconfdir}/sudoers.d/%{name}-sudoers
|
||||||
|
%config(noreplace) %{_sysconfdir}/systemd/system/%{name}.service.d/override.conf
|
||||||
|
%config(noreplace) %attr(644,jellyfin,jellyfin) %{_sysconfdir}/%{name}/logging.json
|
||||||
|
%attr(750,jellyfin,jellyfin) %dir %{_sharedstatedir}/jellyfin
|
||||||
|
%attr(-,jellyfin,jellyfin) %dir %{_var}/log/jellyfin
|
||||||
|
%attr(750,jellyfin,jellyfin) %dir %{_var}/cache/jellyfin
|
||||||
|
%if 0%{?fedora}
|
||||||
|
%license LICENSE
|
||||||
|
%else
|
||||||
|
%{_datadir}/licenses/%{name}/LICENSE
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%pre
|
||||||
|
getent group jellyfin >/dev/null || groupadd -r jellyfin
|
||||||
|
getent passwd jellyfin >/dev/null || \
|
||||||
|
useradd -r -g jellyfin -d %{_sharedstatedir}/jellyfin -s /sbin/nologin \
|
||||||
|
-c "Jellyfin default user" jellyfin
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
%post
|
||||||
|
# Move existing configuration cache and logs to their new locations and symlink them.
|
||||||
|
if [ $1 -gt 1 ] ; then
|
||||||
|
service_state=$(systemctl is-active jellyfin.service)
|
||||||
|
if [ "${service_state}" = "active" ]; then
|
||||||
|
systemctl stop jellyfin.service
|
||||||
|
fi
|
||||||
|
if [ ! -L %{_sharedstatedir}/%{name}/config ]; then
|
||||||
|
mv %{_sharedstatedir}/%{name}/config/* %{_sysconfdir}/%{name}/
|
||||||
|
rmdir %{_sharedstatedir}/%{name}/config
|
||||||
|
ln -sf %{_sysconfdir}/%{name} %{_sharedstatedir}/%{name}/config
|
||||||
|
fi
|
||||||
|
if [ ! -L %{_sharedstatedir}/%{name}/logs ]; then
|
||||||
|
mv %{_sharedstatedir}/%{name}/logs/* %{_var}/log/jellyfin
|
||||||
|
rmdir %{_sharedstatedir}/%{name}/logs
|
||||||
|
ln -sf %{_var}/log/jellyfin %{_sharedstatedir}/%{name}/logs
|
||||||
|
fi
|
||||||
|
if [ ! -L %{_sharedstatedir}/%{name}/cache ]; then
|
||||||
|
mv %{_sharedstatedir}/%{name}/cache/* %{_var}/cache/jellyfin
|
||||||
|
rmdir %{_sharedstatedir}/%{name}/cache
|
||||||
|
ln -sf %{_var}/cache/jellyfin %{_sharedstatedir}/%{name}/cache
|
||||||
|
fi
|
||||||
|
if [ "${service_state}" = "active" ]; then
|
||||||
|
systemctl start jellyfin.service
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
%systemd_post jellyfin.service
|
||||||
|
|
||||||
|
%preun
|
||||||
|
%systemd_preun jellyfin.service
|
||||||
|
|
||||||
|
%postun
|
||||||
|
%systemd_postun_with_restart jellyfin.service
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Fri Oct 11 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.5.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.5.0
|
||||||
|
* Sat Aug 31 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.4.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.4.0
|
||||||
|
* Wed Jul 24 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.3.7; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.7
|
||||||
|
* Sat Jul 06 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.3.6; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.6
|
||||||
|
* Sun Jun 09 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.3.5; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.5
|
||||||
|
* Thu Jun 06 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.3.4; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.4
|
||||||
|
* Fri May 17 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.3.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.3
|
||||||
|
* Tue Apr 30 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2
|
||||||
|
* Sat Apr 20 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.3.1; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.1
|
||||||
|
* Fri Apr 19 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
|
||||||
|
- New upstream version 10.3.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.0
|
19
deployment/old/fedora-package-x64/pkg-src/jellyfin.sudoers
Normal file
19
deployment/old/fedora-package-x64/pkg-src/jellyfin.sudoers
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Allow jellyfin group to start, stop and restart itself
|
||||||
|
Cmnd_Alias RESTARTSERVER_SYSTEMD = /usr/bin/systemctl restart jellyfin, /bin/systemctl restart jellyfin
|
||||||
|
Cmnd_Alias STARTSERVER_SYSTEMD = /usr/bin/systemctl start jellyfin, /bin/systemctl start jellyfin
|
||||||
|
Cmnd_Alias STOPSERVER_SYSTEMD = /usr/bin/systemctl stop jellyfin, /bin/systemctl stop jellyfin
|
||||||
|
|
||||||
|
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD
|
||||||
|
|
||||||
|
Defaults!RESTARTSERVER_SYSTEMD !requiretty
|
||||||
|
Defaults!STARTSERVER_SYSTEMD !requiretty
|
||||||
|
Defaults!STOPSERVER_SYSTEMD !requiretty
|
||||||
|
|
||||||
|
# Allow the server to mount iso images
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: /bin/mount
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: /bin/umount
|
||||||
|
|
||||||
|
Defaults:jellyfin !requiretty
|
36
deployment/old/fedora-package-x64/pkg-src/restart.sh
Executable file
36
deployment/old/fedora-package-x64/pkg-src/restart.sh
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# restart.sh - Jellyfin server restart script
|
||||||
|
# Part of the Jellyfin project (https://github.com/jellyfin)
|
||||||
|
#
|
||||||
|
# This script restarts the Jellyfin daemon on Linux when using
|
||||||
|
# the Restart button on the admin dashboard. It supports the
|
||||||
|
# systemctl, service, and traditional /etc/init.d (sysv) restart
|
||||||
|
# methods, chosen automatically by which one is found first (in
|
||||||
|
# that order).
|
||||||
|
#
|
||||||
|
# This script is used by the Debian/Ubuntu/Fedora/CentOS packages.
|
||||||
|
|
||||||
|
get_service_command() {
|
||||||
|
for command in systemctl service; do
|
||||||
|
if which $command &>/dev/null; then
|
||||||
|
echo $command && return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "sysv"
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd="$( get_service_command )"
|
||||||
|
echo "Detected service control platform '$cmd'; using it to restart Jellyfin..."
|
||||||
|
case $cmd in
|
||||||
|
'systemctl')
|
||||||
|
echo "sleep 2; /usr/bin/sudo $( which systemctl ) restart jellyfin" | at now
|
||||||
|
;;
|
||||||
|
'service')
|
||||||
|
echo "sleep 2; /usr/bin/sudo $( which service ) jellyfin restart" | at now
|
||||||
|
;;
|
||||||
|
'sysv')
|
||||||
|
echo "sleep 2; /usr/bin/sudo /etc/init.d/jellyfin restart" | at now
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
37
deployment/old/linux-x64/Dockerfile
Normal file
37
deployment/old/linux-x64/Dockerfile
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
FROM debian:10
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/linux-x64
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev libssl-dev libssl1.1 liblttng-ust0
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/d731f991-8e68-4c7c-8ea0-fad5605b077a/49497b5420eecbd905158d86d738af64/dotnet-sdk-3.1.100-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Install yarn package manager
|
||||||
|
RUN wget -q -O- https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
||||||
|
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
|
||||||
|
&& apt update \
|
||||||
|
&& apt install -y yarn
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
27
deployment/old/linux-x64/clean.sh
Executable file
27
deployment/old/linux-x64/clean.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-linux-build"
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/linux-x64/dependencies.txt
Normal file
1
deployment/old/linux-x64/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
36
deployment/old/linux-x64/docker-build.sh
Executable file
36
deployment/old/linux-x64/docker-build.sh
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the TAR archive inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Clone down and build Web frontend
|
||||||
|
web_build_dir="$( mktemp -d )"
|
||||||
|
web_target="${SOURCE_DIR}/MediaBrowser.WebDashboard/jellyfin-web"
|
||||||
|
git clone https://github.com/jellyfin/jellyfin-web.git ${web_build_dir}/
|
||||||
|
pushd ${web_build_dir}
|
||||||
|
if [[ -n ${web_branch} ]]; then
|
||||||
|
checkout -b origin/${web_branch}
|
||||||
|
fi
|
||||||
|
yarn install
|
||||||
|
mkdir -p ${web_target}
|
||||||
|
mv dist/* ${web_target}/
|
||||||
|
popd
|
||||||
|
rm -rf ${web_build_dir}
|
||||||
|
|
||||||
|
# Get version
|
||||||
|
version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )"
|
||||||
|
|
||||||
|
# Build archives
|
||||||
|
dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime linux-x64 --output /dist/jellyfin_${version}/ "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none;UseAppHost=true"
|
||||||
|
tar -cvzf /jellyfin_${version}.portable.tar.gz -C /dist jellyfin_${version}
|
||||||
|
rm -rf /dist/jellyfin_${version}
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/
|
||||||
|
mv /jellyfin[-_]*.tar.gz ${ARTIFACT_DIR}/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
34
deployment/old/linux-x64/package.sh
Executable file
34
deployment/old/linux-x64/package.sh
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-linux-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the DEBs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/* "${output_dir}"
|
37
deployment/old/macos/Dockerfile
Normal file
37
deployment/old/macos/Dockerfile
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
FROM debian:10
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/macos
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev libssl-dev libssl1.1 liblttng-ust0
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/d731f991-8e68-4c7c-8ea0-fad5605b077a/49497b5420eecbd905158d86d738af64/dotnet-sdk-3.1.100-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Install yarn package manager
|
||||||
|
RUN wget -q -O- https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
||||||
|
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
|
||||||
|
&& apt update \
|
||||||
|
&& apt install -y yarn
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
27
deployment/old/macos/clean.sh
Executable file
27
deployment/old/macos/clean.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-linux-build"
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/macos/dependencies.txt
Normal file
1
deployment/old/macos/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
36
deployment/old/macos/docker-build.sh
Executable file
36
deployment/old/macos/docker-build.sh
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the TAR archive inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Clone down and build Web frontend
|
||||||
|
web_build_dir="$( mktemp -d )"
|
||||||
|
web_target="${SOURCE_DIR}/MediaBrowser.WebDashboard/jellyfin-web"
|
||||||
|
git clone https://github.com/jellyfin/jellyfin-web.git ${web_build_dir}/
|
||||||
|
pushd ${web_build_dir}
|
||||||
|
if [[ -n ${web_branch} ]]; then
|
||||||
|
checkout -b origin/${web_branch}
|
||||||
|
fi
|
||||||
|
yarn install
|
||||||
|
mkdir -p ${web_target}
|
||||||
|
mv dist/* ${web_target}/
|
||||||
|
popd
|
||||||
|
rm -rf ${web_build_dir}
|
||||||
|
|
||||||
|
# Get version
|
||||||
|
version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )"
|
||||||
|
|
||||||
|
# Build archives
|
||||||
|
dotnet publish Jellyfin.Server --configuration Release --self-contained --runtime osx-x64 --output /dist/jellyfin_${version}/ "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none;UseAppHost=true"
|
||||||
|
tar -cvzf /jellyfin_${version}.portable.tar.gz -C /dist jellyfin_${version}
|
||||||
|
rm -rf /dist/jellyfin_${version}
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/
|
||||||
|
mv /jellyfin[-_]*.tar.gz ${ARTIFACT_DIR}/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
34
deployment/old/macos/package.sh
Executable file
34
deployment/old/macos/package.sh
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-macos-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the DEBs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/* "${output_dir}"
|
37
deployment/old/portable/Dockerfile
Normal file
37
deployment/old/portable/Dockerfile
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
FROM debian:10
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/portable
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev libssl-dev libssl1.1 liblttng-ust0
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/d731f991-8e68-4c7c-8ea0-fad5605b077a/49497b5420eecbd905158d86d738af64/dotnet-sdk-3.1.100-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Install yarn package manager
|
||||||
|
RUN wget -q -O- https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
||||||
|
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
|
||||||
|
&& apt update \
|
||||||
|
&& apt install -y yarn
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
27
deployment/old/portable/clean.sh
Executable file
27
deployment/old/portable/clean.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-linux-build"
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/portable/dependencies.txt
Normal file
1
deployment/old/portable/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
36
deployment/old/portable/docker-build.sh
Executable file
36
deployment/old/portable/docker-build.sh
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the TAR archive inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Clone down and build Web frontend
|
||||||
|
web_build_dir="$( mktemp -d )"
|
||||||
|
web_target="${SOURCE_DIR}/MediaBrowser.WebDashboard/jellyfin-web"
|
||||||
|
git clone https://github.com/jellyfin/jellyfin-web.git ${web_build_dir}/
|
||||||
|
pushd ${web_build_dir}
|
||||||
|
if [[ -n ${web_branch} ]]; then
|
||||||
|
checkout -b origin/${web_branch}
|
||||||
|
fi
|
||||||
|
yarn install
|
||||||
|
mkdir -p ${web_target}
|
||||||
|
mv dist/* ${web_target}/
|
||||||
|
popd
|
||||||
|
rm -rf ${web_build_dir}
|
||||||
|
|
||||||
|
# Get version
|
||||||
|
version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )"
|
||||||
|
|
||||||
|
# Build archives
|
||||||
|
dotnet publish Jellyfin.Server --configuration Release --output /dist/jellyfin_${version}/ "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none"
|
||||||
|
tar -cvzf /jellyfin_${version}.portable.tar.gz -C /dist jellyfin_${version}
|
||||||
|
rm -rf /dist/jellyfin_${version}
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/
|
||||||
|
mv /jellyfin[-_]*.tar.gz ${ARTIFACT_DIR}/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
34
deployment/old/portable/package.sh
Executable file
34
deployment/old/portable/package.sh
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-portable-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the DEBs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/* "${output_dir}"
|
59
deployment/old/ubuntu-package-arm64/Dockerfile.amd64
Normal file
59
deployment/old/ubuntu-package-arm64/Dockerfile.amd64
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
FROM ubuntu:bionic
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/ubuntu-package-arm64
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/d731f991-8e68-4c7c-8ea0-fad5605b077a/49497b5420eecbd905158d86d738af64/dotnet-sdk-3.1.100-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Install npm package manager
|
||||||
|
RUN wget -q -O- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \
|
||||||
|
&& echo "deb https://deb.nodesource.com/node_10.x $(lsb_release -s -c) main" > /etc/apt/sources.list.d/npm.list \
|
||||||
|
&& apt update \
|
||||||
|
&& apt install -y nodejs
|
||||||
|
|
||||||
|
# Prepare the cross-toolchain
|
||||||
|
RUN rm /etc/apt/sources.list \
|
||||||
|
&& export CODENAME="$( lsb_release -c -s )" \
|
||||||
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
||||||
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
||||||
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
||||||
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
||||||
|
&& echo "deb [arch=arm64] http://ports.ubuntu.com/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/arm64.list \
|
||||||
|
&& echo "deb [arch=arm64] http://ports.ubuntu.com/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/arm64.list \
|
||||||
|
&& echo "deb [arch=arm64] http://ports.ubuntu.com/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/arm64.list \
|
||||||
|
&& echo "deb [arch=arm64] http://ports.ubuntu.com/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/arm64.list \
|
||||||
|
&& dpkg --add-architecture arm64 \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y cross-gcc-dev \
|
||||||
|
&& TARGET_LIST="arm64" cross-gcc-gensource 6 \
|
||||||
|
&& cd cross-gcc-packages-amd64/cross-gcc-6-arm64 \
|
||||||
|
&& ln -fs /usr/share/zoneinfo/America/Toronto /etc/localtime \
|
||||||
|
&& apt-get install -y gcc-6-source libstdc++6-arm64-cross binutils-aarch64-linux-gnu bison flex libtool gdb sharutils netbase libcloog-isl-dev libmpc-dev libmpfr-dev libgmp-dev systemtap-sdt-dev autogen expect chrpath zlib1g-dev zip libc6-dev:arm64 linux-libc-dev:arm64 libgcc1:arm64 libcurl4-openssl-dev:arm64 libfontconfig1-dev:arm64 libfreetype6-dev:arm64 liblttng-ust0:arm64 libstdc++6:arm64 libssl-dev:arm64
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
# Link to Debian source dir; mkdir needed or it fails, can't force dest
|
||||||
|
RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
40
deployment/old/ubuntu-package-arm64/Dockerfile.arm64
Normal file
40
deployment/old/ubuntu-package-arm64/Dockerfile.arm64
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
FROM ubuntu:bionic
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/ubuntu-package-arm64
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=arm64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev liblttng-ust0 libssl-dev
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/5a4c8f96-1c73-401c-a6de-8e100403188a/0ce6ab39747e2508366d498f9c0a0669/dotnet-sdk-3.1.100-linux-arm64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Install npm package manager
|
||||||
|
RUN wget -q -O- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \
|
||||||
|
&& echo "deb https://deb.nodesource.com/node_10.x $(lsb_release -s -c) main" > /etc/apt/sources.list.d/npm.list \
|
||||||
|
&& apt update \
|
||||||
|
&& apt install -y nodejs
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
# Link to Debian source dir; mkdir needed or it fails, can't force dest
|
||||||
|
RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
27
deployment/old/ubuntu-package-arm64/clean.sh
Executable file
27
deployment/old/ubuntu-package-arm64/clean.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-ubuntu-build"
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/ubuntu-package-arm64/dependencies.txt
Normal file
1
deployment/old/ubuntu-package-arm64/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
21
deployment/old/ubuntu-package-arm64/docker-build.sh
Executable file
21
deployment/old/ubuntu-package-arm64/docker-build.sh
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the DEB inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Remove build-dep for dotnet-sdk-3.1, since it's not a package in this image
|
||||||
|
sed -i '/dotnet-sdk-3.1,/d' debian/control
|
||||||
|
|
||||||
|
# Build DEB
|
||||||
|
export CONFIG_SITE=/etc/dpkg-cross/cross-config.${ARCH}
|
||||||
|
dpkg-buildpackage -us -uc -aarm64
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
|
mv /jellyfin[-_]* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
45
deployment/old/ubuntu-package-arm64/package.sh
Executable file
45
deployment/old/ubuntu-package-arm64/package.sh
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
ARCH="$( arch )"
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-ubuntu_arm64-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determine which Dockerfile to use
|
||||||
|
case $ARCH in
|
||||||
|
'x86_64')
|
||||||
|
DOCKERFILE="Dockerfile.amd64"
|
||||||
|
;;
|
||||||
|
'armv7l')
|
||||||
|
DOCKERFILE="Dockerfile.arm64"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
||||||
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the DEBs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
1
deployment/old/ubuntu-package-arm64/pkg-src
Symbolic link
1
deployment/old/ubuntu-package-arm64/pkg-src
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../debian-package-x64/pkg-src
|
59
deployment/old/ubuntu-package-armhf/Dockerfile.amd64
Normal file
59
deployment/old/ubuntu-package-armhf/Dockerfile.amd64
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
FROM ubuntu:bionic
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/ubuntu-package-armhf
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/d731f991-8e68-4c7c-8ea0-fad5605b077a/49497b5420eecbd905158d86d738af64/dotnet-sdk-3.1.100-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Install npm package manager
|
||||||
|
RUN wget -q -O- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \
|
||||||
|
&& echo "deb https://deb.nodesource.com/node_10.x $(lsb_release -s -c) main" > /etc/apt/sources.list.d/npm.list \
|
||||||
|
&& apt update \
|
||||||
|
&& apt install -y nodejs
|
||||||
|
|
||||||
|
# Prepare the cross-toolchain
|
||||||
|
RUN rm /etc/apt/sources.list \
|
||||||
|
&& export CODENAME="$( lsb_release -c -s )" \
|
||||||
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
||||||
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
||||||
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
||||||
|
&& echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/amd64.list \
|
||||||
|
&& echo "deb [arch=armhf] http://ports.ubuntu.com/ ${CODENAME} main restricted universe multiverse" >>/etc/apt/sources.list.d/armhf.list \
|
||||||
|
&& echo "deb [arch=armhf] http://ports.ubuntu.com/ ${CODENAME}-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/armhf.list \
|
||||||
|
&& echo "deb [arch=armhf] http://ports.ubuntu.com/ ${CODENAME}-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/armhf.list \
|
||||||
|
&& echo "deb [arch=armhf] http://ports.ubuntu.com/ ${CODENAME}-security main restricted universe multiverse" >>/etc/apt/sources.list.d/armhf.list \
|
||||||
|
&& dpkg --add-architecture armhf \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y cross-gcc-dev \
|
||||||
|
&& TARGET_LIST="armhf" cross-gcc-gensource 6 \
|
||||||
|
&& cd cross-gcc-packages-amd64/cross-gcc-6-armhf \
|
||||||
|
&& ln -fs /usr/share/zoneinfo/America/Toronto /etc/localtime \
|
||||||
|
&& apt-get install -y gcc-6-source libstdc++6-armhf-cross binutils-arm-linux-gnueabihf bison flex libtool gdb sharutils netbase libcloog-isl-dev libmpc-dev libmpfr-dev libgmp-dev systemtap-sdt-dev autogen expect chrpath zlib1g-dev zip libc6-dev:armhf linux-libc-dev:armhf libgcc1:armhf libcurl4-openssl-dev:armhf libfontconfig1-dev:armhf libfreetype6-dev:armhf liblttng-ust0:armhf libstdc++6:armhf libssl-dev:armhf
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
# Link to Debian source dir; mkdir needed or it fails, can't force dest
|
||||||
|
RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
40
deployment/old/ubuntu-package-armhf/Dockerfile.armhf
Normal file
40
deployment/old/ubuntu-package-armhf/Dockerfile.armhf
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
FROM ubuntu:bionic
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/ubuntu-package-armhf
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=armhf
|
||||||
|
|
||||||
|
# Prepare Debian build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev liblttng-ust0 libssl-dev
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/67766a96-eb8c-4cd2-bca4-ea63d2cc115c/7bf13840aa2ed88793b7315d5e0d74e6/dotnet-sdk-3.1.100-linux-arm.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Install npm package manager
|
||||||
|
RUN wget -q -O- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \
|
||||||
|
&& echo "deb https://deb.nodesource.com/node_10.x $(lsb_release -s -c) main" > /etc/apt/sources.list.d/npm.list \
|
||||||
|
&& apt update \
|
||||||
|
&& apt install -y nodejs
|
||||||
|
|
||||||
|
# Link to docker-build script
|
||||||
|
RUN ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh
|
||||||
|
|
||||||
|
# Link to Debian source dir; mkdir needed or it fails, can't force dest
|
||||||
|
RUN mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
27
deployment/old/ubuntu-package-armhf/clean.sh
Executable file
27
deployment/old/ubuntu-package-armhf/clean.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-ubuntu-build"
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/ubuntu-package-armhf/dependencies.txt
Normal file
1
deployment/old/ubuntu-package-armhf/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
21
deployment/old/ubuntu-package-armhf/docker-build.sh
Executable file
21
deployment/old/ubuntu-package-armhf/docker-build.sh
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the DEB inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Remove build-dep for dotnet-sdk-3.1, since it's not a package in this image
|
||||||
|
sed -i '/dotnet-sdk-3.1,/d' debian/control
|
||||||
|
|
||||||
|
# Build DEB
|
||||||
|
export CONFIG_SITE=/etc/dpkg-cross/cross-config.${ARCH}
|
||||||
|
dpkg-buildpackage -us -uc -aarmhf
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
|
mv /jellyfin[-_]* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
45
deployment/old/ubuntu-package-armhf/package.sh
Executable file
45
deployment/old/ubuntu-package-armhf/package.sh
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
ARCH="$( arch )"
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-ubuntu_armhf-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determine which Dockerfile to use
|
||||||
|
case $ARCH in
|
||||||
|
'x86_64')
|
||||||
|
DOCKERFILE="Dockerfile.amd64"
|
||||||
|
;;
|
||||||
|
'armv7l')
|
||||||
|
DOCKERFILE="Dockerfile.armhf"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./${DOCKERFILE}
|
||||||
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the DEBs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
1
deployment/old/ubuntu-package-armhf/pkg-src
Symbolic link
1
deployment/old/ubuntu-package-armhf/pkg-src
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../debian-package-x64/pkg-src
|
36
deployment/old/ubuntu-package-x64/Dockerfile
Normal file
36
deployment/old/ubuntu-package-x64/Dockerfile
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
FROM ubuntu:bionic
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG PLATFORM_DIR=/jellyfin/deployment/ubuntu-package-x64
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV DEB_BUILD_OPTIONS=noddebs
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
|
# Prepare Ubuntu build environment
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y apt-transport-https debhelper gnupg wget devscripts mmv libc6-dev libcurl4-openssl-dev libfontconfig1-dev libfreetype6-dev libssl-dev liblttng-ust0 \
|
||||||
|
&& ln -sf ${PLATFORM_DIR}/docker-build.sh /docker-build.sh \
|
||||||
|
&& mkdir -p ${SOURCE_DIR} && ln -sf ${PLATFORM_DIR}/pkg-src ${SOURCE_DIR}/debian
|
||||||
|
|
||||||
|
# Install dotnet repository
|
||||||
|
# https://dotnet.microsoft.com/download/linux-package-manager/debian9/sdk-current
|
||||||
|
RUN wget https://download.visualstudio.microsoft.com/download/pr/d731f991-8e68-4c7c-8ea0-fad5605b077a/49497b5420eecbd905158d86d738af64/dotnet-sdk-3.1.100-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||||
|
&& mkdir -p dotnet-sdk \
|
||||||
|
&& tar -xzf dotnet-sdk.tar.gz -C dotnet-sdk \
|
||||||
|
&& ln -s $( pwd )/dotnet-sdk/dotnet /usr/bin/dotnet
|
||||||
|
|
||||||
|
# Install npm package manager
|
||||||
|
RUN wget -q -O- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \
|
||||||
|
&& echo "deb https://deb.nodesource.com/node_10.x $(lsb_release -s -c) main" > /etc/apt/sources.list.d/npm.list \
|
||||||
|
&& apt update \
|
||||||
|
&& apt install -y nodejs
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
COPY . ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-build.sh"]
|
27
deployment/old/ubuntu-package-x64/clean.sh
Executable file
27
deployment/old/ubuntu-package-x64/clean.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
keep_artifacts="${1}"
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-ubuntu-build"
|
||||||
|
|
||||||
|
rm -rf "${package_temporary_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${package_temporary_dir}" &>/dev/null
|
||||||
|
|
||||||
|
rm -rf "${output_dir}" &>/dev/null \
|
||||||
|
|| sudo rm -rf "${output_dir}" &>/dev/null
|
||||||
|
|
||||||
|
if [[ ${keep_artifacts} == 'n' ]]; then
|
||||||
|
docker_sudo=""
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo=sudo
|
||||||
|
fi
|
||||||
|
${docker_sudo} docker image rm ${image_name} --force
|
||||||
|
fi
|
1
deployment/old/ubuntu-package-x64/dependencies.txt
Normal file
1
deployment/old/ubuntu-package-x64/dependencies.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker
|
20
deployment/old/ubuntu-package-x64/docker-build.sh
Executable file
20
deployment/old/ubuntu-package-x64/docker-build.sh
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Builds the DEB inside the Docker container
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Remove build-dep for dotnet-sdk-3.1, since it's not a package in this image
|
||||||
|
sed -i '/dotnet-sdk-3.1,/d' debian/control
|
||||||
|
|
||||||
|
# Build DEB
|
||||||
|
dpkg-buildpackage -us -uc
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mkdir -p ${ARTIFACT_DIR}/deb
|
||||||
|
mv /jellyfin[-_]* ${ARTIFACT_DIR}/deb/
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
34
deployment/old/ubuntu-package-x64/package.sh
Executable file
34
deployment/old/ubuntu-package-x64/package.sh
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
args="${@}"
|
||||||
|
declare -a docker_envvars
|
||||||
|
for arg in ${args}; do
|
||||||
|
docker_envvars+=("-e ${arg}")
|
||||||
|
done
|
||||||
|
|
||||||
|
WORKDIR="$( pwd )"
|
||||||
|
|
||||||
|
package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
|
||||||
|
output_dir="${WORKDIR}/pkg-dist"
|
||||||
|
current_user="$( whoami )"
|
||||||
|
image_name="jellyfin-ubuntu-build"
|
||||||
|
|
||||||
|
# Determine if sudo should be used for Docker
|
||||||
|
if [[ ! -z $(id -Gn | grep -q 'docker') ]] \
|
||||||
|
&& [[ ! ${EUID:-1000} -eq 0 ]] \
|
||||||
|
&& [[ ! ${USER} == "root" ]] \
|
||||||
|
&& [[ ! -z $( echo "${OSTYPE}" | grep -q "darwin" ) ]]; then
|
||||||
|
docker_sudo="sudo"
|
||||||
|
else
|
||||||
|
docker_sudo=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare temporary package dir
|
||||||
|
mkdir -p "${package_temporary_dir}"
|
||||||
|
# Set up the build environment Docker image
|
||||||
|
${docker_sudo} docker build ../.. -t "${image_name}" -f ./Dockerfile
|
||||||
|
# Build the DEBs and copy out to ${package_temporary_dir}
|
||||||
|
${docker_sudo} docker run --rm -v "${package_temporary_dir}:/dist" "${image_name}" ${docker_envvars}
|
||||||
|
# Move the DEBs to the output directory
|
||||||
|
mkdir -p "${output_dir}"
|
||||||
|
mv "${package_temporary_dir}"/deb/* "${output_dir}"
|
1
deployment/old/ubuntu-package-x64/pkg-src
Symbolic link
1
deployment/old/ubuntu-package-x64/pkg-src
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../debian-package-x64/pkg-src/
|
15
deployment/old/unraid/docker-templates/README.md
Normal file
15
deployment/old/unraid/docker-templates/README.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# docker-templates
|
||||||
|
|
||||||
|
### Installation:
|
||||||
|
|
||||||
|
Open unRaid GUI (at least unRaid 6.5)
|
||||||
|
|
||||||
|
Click on the Docker tab
|
||||||
|
|
||||||
|
Add the following line under "Template Repositories"
|
||||||
|
|
||||||
|
https://github.com/jellyfin/jellyfin/blob/master/deployment/unraid/docker-templates
|
||||||
|
|
||||||
|
Click save than click on Add Container and select jellyfin.
|
||||||
|
|
||||||
|
Adjust to your paths to your liking and off you go!
|
57
deployment/old/unraid/docker-templates/jellyfin.xml
Normal file
57
deployment/old/unraid/docker-templates/jellyfin.xml
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Containers>
|
||||||
|
<TemplateURL>https://raw.githubusercontent.com/jellyfin/jellyfin/deployment/unraid/docker-templates/jellyfin.xml</TemplateURL>
|
||||||
|
<Beta>False</Beta>
|
||||||
|
<Category>MediaApp:Video MediaApp:Music MediaApp:Photos MediaServer:Video MediaServer:Music MediaServer:Photos</Category>
|
||||||
|
<Name>Jellyfin</Name>
|
||||||
|
<Description>
|
||||||
|
Jellyfin is The Free Software Media Browser Converted By Community Applications Always verify this template (and values) against the dockerhub support page for the container!![br][br]
|
||||||
|
You can add as many mount points as needed for recordings, movies ,etc. [br][br]
|
||||||
|
[b][span style='color: #E80000;']Directions:[/span][/b][br]
|
||||||
|
[b]/config[/b] : This is where Jellyfin will store it's databases and configuration.[br][br]
|
||||||
|
[b]Port[/b] : This is the default port for Jellyfin. (Will add ssl port later)[br][br]
|
||||||
|
[b]Media[/b] : This is the mounting point of your media. When you access it in Jellyfin it will be /media or whatever you chose for a mount point[br][br]
|
||||||
|
[b]Cache[/b] : This is where Jellyfin will store and manage cached files like images to serve to clients. This is not where all images are stored.[br][br]
|
||||||
|
[b]Tip:[/b] You can add more volume mappings if you wish Jellyfin has access to it.
|
||||||
|
</Description>
|
||||||
|
<Overview>
|
||||||
|
Jellyfin Server is a home media server built on top of other popular open source technologies such as Service Stack, jQuery, jQuery mobile, and Mono and will remain completely free!
|
||||||
|
</Overview>
|
||||||
|
<Support>https://www.reddit.com/r/jellyfin/</Support>
|
||||||
|
<Registry>https://hub.docker.com/r/jellyfin/jellyfin/</Registry>
|
||||||
|
<GitHub>https://github.com/jellyfin/jellyfin/></GitHub>
|
||||||
|
<Repository>jellyfin/jellyfin</Repository>
|
||||||
|
<Project>https://jellyfin.media/</Project>
|
||||||
|
<BindTime>true</BindTime>
|
||||||
|
<Privileged>false</Privileged>
|
||||||
|
<Networking>
|
||||||
|
<Mode>host</Mode>
|
||||||
|
<Publish>
|
||||||
|
<Port>
|
||||||
|
<HostPort>8096</HostPort>
|
||||||
|
<ContainerPort>8096</ContainerPort>
|
||||||
|
<Protocol>tcp</Protocol>
|
||||||
|
</Port>
|
||||||
|
</Publish>
|
||||||
|
</Networking>
|
||||||
|
<Data>
|
||||||
|
<Volume>
|
||||||
|
<HostDir>/mnt/user/appdata/Jellyfin</HostDir>
|
||||||
|
<ContainerDir>/config</ContainerDir>
|
||||||
|
<Mode>rw</Mode>
|
||||||
|
</Volume>
|
||||||
|
<Volume>
|
||||||
|
<HostDir>/mnt/user</HostDir>
|
||||||
|
<ContainerDir>/media</ContainerDir>
|
||||||
|
<Mode>rw</Mode>
|
||||||
|
</Volume>
|
||||||
|
<Volume>
|
||||||
|
<HostDir>/mnt/user/appdata/Jellyfin/cache/</HostDir>
|
||||||
|
<ContainerDir>/cache</ContainerDir>
|
||||||
|
<Mode>rw</Mode>
|
||||||
|
</Volume>
|
||||||
|
</Data>
|
||||||
|
<WebUI>http://[IP]:[PORT:8096]/</WebUI>
|
||||||
|
<Icon>https://raw.githubusercontent.com/binhex/docker-templates/master/binhex/images/jellyfin-icon.png</Icon>
|
||||||
|
<ExtraParams></ExtraParams>
|
||||||
|
</Containers>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue