aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua M. Boniface <joshua@boniface.me>2018-12-12 20:39:48 -0500
committerGitHub <noreply@github.com>2018-12-12 20:39:48 -0500
commitb2651c89b6762850035d4400052d20cedcb6167f (patch)
tree66c0bda299342b587e974a7de23993c7032e0adb
parent45cb71442938713f95cd412eebaddf297e0e82ab (diff)
parent917ccad0abfeb41f000459d6be24412774a029dc (diff)
Merge pull request #116 from joshuaboniface/debian-packaging
Debian initscript improvements
-rw-r--r--debian/conf/jellyfin57
-rw-r--r--debian/conf/jellyfin.conf24
-rw-r--r--debian/conf/jellyfin.service.conf7
-rw-r--r--debian/install2
-rw-r--r--debian/jellyfin.init5
-rw-r--r--debian/jellyfin.service16
-rw-r--r--debian/jellyfin.upstart4
-rwxr-xr-xdebian/rules1
8 files changed, 50 insertions, 66 deletions
diff --git a/debian/conf/jellyfin b/debian/conf/jellyfin
index 57f424c06..5c26d12c3 100644
--- a/debian/conf/jellyfin
+++ b/debian/conf/jellyfin
@@ -1,37 +1,36 @@
-# Defaults for jellyfin initscript
-# sourced by /etc/init.d/jellyfin and /usr/lib/jellyfin/jellyfin.sh
-# installed at /etc/default/jellyfin by the maintainer scripts
+# Jellyfin default configuration options
+
+# 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.
#
# This is a POSIX shell fragment
#
-## Don't edit this file
-## Edit user configuration in /etc/jellyfin.conf to change
-##
-## JELLYFIN_USER= #$JELLYFIN_USER, username to run Jellyfin under, the default is jellyfin
-## JELLYFIN_GROUP= #$JELLYFIN_GROUP, Jellyfin group where Jellyfin user belongs
-## JELLYFIN_DIR= #$JELLYFIN_DIR, the location of Jellyfin program files the default is /usr/lib/jellyfin
-## JELLYFIN_BIN= #$JELLYFIN_BIN, full path of MediaBrowser.Server.Mono.exe the default is /usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe
-## JELLYFIN_DATA= #$JELLYFIN_DATA, the location of Jellyfin data, cache, logs, the default is /var/lib/jellyfin
-## JELLYFIN_PIDFILE= #$JELLYFIN_PIDFILE, the location of jellyfin.pid, the default is /var/run/jellyfin/jellyfin.pid
-## JELLYFIN_ADD_OPTS= #$JELLYFIN_ADD_OPTS, additional options to pass to the Jellyfin executable, beyond ffmpeg, ffprobe and restart
-## MONO_BIN= #$MONO_BIN, full path of mono binary, the default is /usr/bin/mono-sgen
-## MONO_OPTS= #$MONO_OPTS, list of additional options to pass to mono binary
-## MONO_ENV= #$MONO_ENV, list of environment variables for running mono binary
-##
-## EXAMPLE if want to run as different user
-## add JELLYFIN_USER=username to /etc/jellyfin.conf
-## otherwise default jellyfin is used
+#
+# General options
+#
-JELLYFIN_USER="jellyfin"
-JELLYFIN_GROUP="jellyfin"
-JELLYFIN_DIR="/usr/lib/jellyfin"
-JELLYFIN_BIN="/usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe"
+# Path to the jellyfin.dll executable
+JELLYFIN_EXE="/usr/lib/jellyfin/bin/jellyfin.dll"
+# Data directory
JELLYFIN_DATA="/var/lib/jellyfin"
-JELLYFIN_PIDFILE="/var/run/jellyfin.pid"
+# Restart script for in-app server control
+JELLYFIN_RESTART_SCRIPT="/usr/lib/jellyfin/restart.sh"
+# Additional options for the binary
JELLYFIN_ADD_OPTS=""
-MONO_BIN="/usr/bin/mono-sgen"
-MONO_OPTS="--optimize=all"
-MONO_ENV="MONO_THREADS_PER_CPU=250 MONO_GC_PARAMS=nursery-size=128m"
-UMASK="002"
+
+#
+# SysV init/Upstart options
+#
+
+# Application username
+JELLYFIN_USER="jellyfin"
+# .NET Core runtime binary
+JELLYFIN_DOTNET="/usr/bin/dotnet"
+# Full application command
+JELLYFIN_COMMAND="$JELLYFIN_EXE -programdata $JELLYFIN_DATA -restartpath $JELLYFIN_RESTART_SCRIPT $JELLYFIN_ADD_OPTS"
diff --git a/debian/conf/jellyfin.conf b/debian/conf/jellyfin.conf
deleted file mode 100644
index ef5c424e8..000000000
--- a/debian/conf/jellyfin.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-# Override defaults for jellyfin initscript
-# sourced by /etc/init.d/jellyfin and /usr/bin/jellyfin
-# installed at /etc/jellyfin.conf by the maintainer scripts
-
-#
-# This is a POSIX shell fragment
-#
-
-## To change the defaults add any of the following settings below the comments
-##
-## JELLYFIN_USER= #$JELLYFIN_USER, username to run Jellyfin under, the default is jellyfin
-## JELLYFIN_GROUP= #$JELLYFIN_GROUP, Jellyfin group where Jellyfin user belongs
-## JELLYFIN_DIR= #$JELLYFIN_DIR, the location of Jellyfin program files the default is /usr/lib/jellyfin
-## JELLYFIN_BIN= #$JELLYFIN_BIN, full path of MediaBrowser.Server.Mono.exe the default is /usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe
-## JELLYFIN_DATA= #$JELLYFIN_DATA, the location of Jellyfin data, cache, logs, the default is /var/lib/jellyfin
-## JELLYFIN_PIDFILE= #$JELLYFIN_PIDFILE, the location of jellyfin.pid, the default is /var/run/jellyfin/jellyfin.pid
-## JELLYFIN_ADD_OPTS= #$JELLYFIN_ADD_OPTS, additional options to pass to the Jellyfin executable, beyond ffmpeg, ffprobe and restart
-## MONO_BIN= #$MONO_BIN, full path of mono binary, the default is /usr/bin/mono-sgen
-## MONO_OPTS= #$MONO_OPTS, list of additional options to pass to mono binary
-## MONO_ENV= #$MONO_ENV, list of environment variables for running mono binary
-##
-## EXAMPLE if want to run as different user
-## add JELLYFIN_USER=username
-## otherwise default jellyfin is used
diff --git a/debian/conf/jellyfin.service.conf b/debian/conf/jellyfin.service.conf
new file mode 100644
index 000000000..1b69dd74e
--- /dev/null
+++ b/debian/conf/jellyfin.service.conf
@@ -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
diff --git a/debian/install b/debian/install
index a45091a3c..bc26f9f09 100644
--- a/debian/install
+++ b/debian/install
@@ -1,5 +1,5 @@
usr/lib/jellyfin usr/lib/
-debian/conf/jellyfin.conf etc/
debian/conf/jellyfin etc/default/
+debian/conf/jellyfin.service.conf etc/systemd/system/jellyfin.service.d/
debian/bin/jellyfin-sudoers etc/sudoers.d/
debian/bin/restart.sh usr/lib/jellyfin/
diff --git a/debian/jellyfin.init b/debian/jellyfin.init
index 4f23e13f0..18c7d02a1 100644
--- a/debian/jellyfin.init
+++ b/debian/jellyfin.init
@@ -9,13 +9,14 @@
### END INIT INFO
# Carry out specific functions when asked to by the system
-pid=`ps -fA|grep dotnet|grep JellyfinServer|awk '{print $2}'| tr -d '\n'`
+pid=`ps -fA|grep dotnet|grep jellyfin|awk '{print $2}'| tr -d '\n'`
case "$1" in
start)
if [ "$pid" == "" ]; then
echo "Starting Jellyfin..."
- nohup dotnet /usr/lib/jellyfin/bin/EmbyServer.dll >/dev/null 2>&1 &
+ . /etc/default/jellyfin
+ nohup su -u $JELLYFIN_USER -c $JELLYFIN_DOTNET $JELLYFIN_COMMAND
else
echo "Jellyfin already running"
fi
diff --git a/debian/jellyfin.service b/debian/jellyfin.service
index 751d19f89..982608a7e 100644
--- a/debian/jellyfin.service
+++ b/debian/jellyfin.service
@@ -1,12 +1,14 @@
[Unit]
-Description=Jellyfin Media Server
-After=network.target
+Description = Jellyfin Media Server
+After = network.target
[Service]
-User=jellyfin
-ExecStart=/usr/bin/dotnet /usr/lib/jellyfin/bin/EmbyServer.dll
-Restart=on-abort
-TimeoutSec=20
+Type = simple
+EnvironmentFile = /etc/default/jellyfin
+User = jellyfin
+ExecStart = /usr/bin/dotnet ${JELLYFIN_EXE} -programdata ${JELLYFIN_DATA} -restartpath ${JELLYFIN_RESTART_SCRIPT} ${JELLYFIN_ADD_OPTS}
+Restart = on-abort
+TimeoutSec = 20
[Install]
-WantedBy=multi-user.target
+WantedBy = multi-user.target
diff --git a/debian/jellyfin.upstart b/debian/jellyfin.upstart
index ea7831ac0..ebbceaf57 100644
--- a/debian/jellyfin.upstart
+++ b/debian/jellyfin.upstart
@@ -15,6 +15,6 @@ script
# Log file
logger -t "$0" "DEBUG: `set`"
- exec /usr/bin/jellyfin start
- exec /usr/bin/dotnet /usr/lib/jellyfin/bin/EmbyServer.dll
+ . /etc/default/jellyfin
+ exec su -u $JELLYFIN_USER -c $JELLYFIN_DOTNET $JELLYFIN_COMMAND
end script
diff --git a/debian/rules b/debian/rules
index 864b64f6f..eddf9b9ba 100755
--- a/debian/rules
+++ b/debian/rules
@@ -15,7 +15,6 @@ override_dh_auto_test:
override_dh_clistrip:
override_dh_auto_build:
- dotnet build --configuration $(CONFIG) $(CURDIR)/MediaBrowser.sln --output='$(CURDIR)/usr/lib/jellyfin/bin'
dotnet publish --configuration $(CONFIG) $(CURDIR)/MediaBrowser.sln --output='$(CURDIR)/usr/lib/jellyfin/bin'
override_dh_auto_clean: