postinst 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/bin/bash
  2. set -e
  3. NAME=jellyfin
  4. DEFAULT_FILE=/etc/default/${NAME}
  5. # Source Jellyfin default configuration
  6. if [[ -f $DEFAULT_FILE ]]; then
  7. . $DEFAULT_FILE
  8. fi
  9. JELLYFIN_USER=${JELLYFIN_USER:-jellyfin}
  10. RENDER_GROUP=${RENDER_GROUP:-render}
  11. VIDEO_GROUP=${VIDEO_GROUP:-video}
  12. # Data directories for program data (cache, db), configs, and logs
  13. PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME}
  14. CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME}
  15. LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME}
  16. CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME}
  17. case "$1" in
  18. configure)
  19. # create jellyfin group if it does not exist
  20. if [[ -z "$(getent group ${JELLYFIN_USER})" ]]; then
  21. addgroup --quiet --system ${JELLYFIN_USER} > /dev/null 2>&1
  22. fi
  23. # create jellyfin user if it does not exist
  24. if [[ -z "$(getent passwd ${JELLYFIN_USER})" ]]; then
  25. adduser --system --ingroup ${JELLYFIN_USER} --shell /bin/false ${JELLYFIN_USER} --no-create-home --home ${PROGRAMDATA} \
  26. --gecos "Jellyfin default user" > /dev/null 2>&1
  27. fi
  28. # add jellyfin to the render group for hwa
  29. if [[ ! -z "$(getent group ${RENDER_GROUP})" ]]; then
  30. usermod -aG ${RENDER_GROUP} ${JELLYFIN_USER} > /dev/null 2>&1
  31. fi
  32. # add jellyfin to the video group for hwa
  33. if [[ ! -z "$(getent group ${VIDEO_GROUP})" ]]; then
  34. usermod -aG ${VIDEO_GROUP} ${JELLYFIN_USER} > /dev/null 2>&1
  35. fi
  36. # ensure $PROGRAMDATA exists
  37. if [[ ! -d $PROGRAMDATA ]]; then
  38. mkdir $PROGRAMDATA
  39. fi
  40. # ensure $CONFIGDATA exists
  41. if [[ ! -d $CONFIGDATA ]]; then
  42. mkdir $CONFIGDATA
  43. fi
  44. # ensure $LOGDATA exists
  45. if [[ ! -d $LOGDATA ]]; then
  46. mkdir $LOGDATA
  47. fi
  48. # ensure $CACHEDATA exists
  49. if [[ ! -d $CACHEDATA ]]; then
  50. mkdir $CACHEDATA
  51. fi
  52. # Ensure permissions are correct on all config directories
  53. chown -R ${JELLYFIN_USER} $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
  54. chgrp adm $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
  55. chmod 0750 $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
  56. # Install jellyfin symlink into /usr/bin
  57. ln -sf /usr/lib/jellyfin/bin/jellyfin /usr/bin/jellyfin
  58. ;;
  59. abort-upgrade|abort-remove|abort-deconfigure)
  60. ;;
  61. *)
  62. echo "postinst called with unknown argument \`$1'" >&2
  63. exit 1
  64. ;;
  65. esac
  66. #DEBHELPER
  67. if [[ -x "/usr/bin/deb-systemd-helper" ]]; then
  68. # Manual init script handling
  69. deb-systemd-helper unmask jellyfin.service >/dev/null || true
  70. # was-enabled defaults to true, so new installations run enable.
  71. if deb-systemd-helper --quiet was-enabled jellyfin.service; then
  72. # Enables the unit on first installation, creates new
  73. # symlinks on upgrades if the unit file has changed.
  74. deb-systemd-helper enable jellyfin.service >/dev/null || true
  75. else
  76. # Update the statefile to add new symlinks (if any), which need to be
  77. # cleaned up on purge. Also remove old symlinks.
  78. deb-systemd-helper update-state jellyfin.service >/dev/null || true
  79. fi
  80. fi
  81. # End automatically added section
  82. # Automatically added by dh_installinit
  83. if [[ "$1" == "configure" ]] || [[ "$1" == "abort-upgrade" ]]; then
  84. if [[ -d "/run/systemd/system" ]]; then
  85. systemctl --system daemon-reload >/dev/null || true
  86. deb-systemd-invoke start jellyfin >/dev/null || true
  87. elif [[ -x "/etc/init.d/jellyfin" ]] || [[ -e "/etc/init/jellyfin.conf" ]]; then
  88. update-rc.d jellyfin defaults >/dev/null
  89. invoke-rc.d jellyfin start || exit $?
  90. fi
  91. fi
  92. exit 0