mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-07 20:08:59 +02:00
This is pretty arbitrary and personal, but I detest services that lock out global access (which is good), but don't simultaneously make it easy for administrators to enter the directories. The adm group should only have actual system administrators as members, so this lets them view the secure directories.
92 lines
3 KiB
Bash
92 lines
3 KiB
Bash
#!/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
|