aboutsummaryrefslogtreecommitdiff
path: root/debian/jellyfin-server.postinst
diff options
context:
space:
mode:
authorJoshua M. Boniface <joshua@boniface.me>2024-02-03 16:37:47 -0500
committerJoshua M. Boniface <joshua@boniface.me>2024-02-04 02:20:03 -0500
commit1784777c50950867b4d1dc815655e29e6687756b (patch)
treeb346dc57b12cc233e106a0ea8c979be96ab0cd09 /debian/jellyfin-server.postinst
parentAdd combined Debian build (diff)
downloadjellyfin-packaging-1784777c50950867b4d1dc815655e29e6687756b.tar.gz
jellyfin-packaging-1784777c50950867b4d1dc815655e29e6687756b.tar.bz2
jellyfin-packaging-1784777c50950867b4d1dc815655e29e6687756b.zip
Fix naming of per-package files
Diffstat (limited to 'debian/jellyfin-server.postinst')
-rw-r--r--debian/jellyfin-server.postinst102
1 files changed, 102 insertions, 0 deletions
diff --git a/debian/jellyfin-server.postinst b/debian/jellyfin-server.postinst
new file mode 100644
index 0000000..947959a
--- /dev/null
+++ b/debian/jellyfin-server.postinst
@@ -0,0 +1,102 @@
+#!/bin/bash
+set -e
+
+NAME=jellyfin
+DEFAULT_FILE=/etc/default/${NAME}
+
+# Source Jellyfin default configuration
+if [[ -f $DEFAULT_FILE ]]; then
+ . $DEFAULT_FILE
+fi
+
+JELLYFIN_USER=${JELLYFIN_USER:-jellyfin}
+RENDER_GROUP=${RENDER_GROUP:-render}
+VIDEO_GROUP=${VIDEO_GROUP:-video}
+
+# 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_USER})" ]]; then
+ addgroup --quiet --system ${JELLYFIN_USER} > /dev/null 2>&1
+ fi
+ # create jellyfin user if it does not exist
+ if [[ -z "$(getent passwd ${JELLYFIN_USER})" ]]; then
+ adduser --system --ingroup ${JELLYFIN_USER} --shell /bin/false ${JELLYFIN_USER} --no-create-home --home ${PROGRAMDATA} \
+ --gecos "Jellyfin default user" > /dev/null 2>&1
+ fi
+ # add jellyfin to the render group for hwa
+ if [[ ! -z "$(getent group ${RENDER_GROUP})" ]]; then
+ usermod -aG ${RENDER_GROUP} ${JELLYFIN_USER} > /dev/null 2>&1
+ fi
+ # add jellyfin to the video group for hwa
+ if [[ ! -z "$(getent group ${VIDEO_GROUP})" ]]; then
+ usermod -aG ${VIDEO_GROUP} ${JELLYFIN_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_USER} $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
+ chgrp adm $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
+ chmod 0750 $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
+
+ # 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/system" ]]; 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
bgstack15