paperless-ngx-update.sh 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/usr/bin/env bash
  2. clear
  3. RELEASE=$(curl -s https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
  4. SER=/etc/systemd/system/paperless-task-queue.service
  5. YW=$(echo "\033[33m")
  6. RD=$(echo "\033[01;31m")
  7. BL=$(echo "\033[36m")
  8. GN=$(echo "\033[1;92m")
  9. CL=$(echo "\033[m")
  10. RETRY_NUM=10
  11. RETRY_EVERY=3
  12. NUM=$RETRY_NUM
  13. CM="${GN}✓${CL}"
  14. CROSS="${RD}✗${CL}"
  15. BFR="\\r\\033[K"
  16. HOLD="-"
  17. set -e
  18. function msg_info() {
  19. local msg="$1"
  20. echo -ne " ${HOLD} ${YW}${msg}..."
  21. }
  22. function msg_ok() {
  23. local msg="$1"
  24. echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
  25. }
  26. function msg_error() {
  27. local msg="$1"
  28. echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
  29. }
  30. cat <<"EOF"
  31. ____ __
  32. / __ \____ _____ ___ _____/ /__ __________ ____ ____ __ __
  33. / /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/___/ __ \/ __ `/ |/_/
  34. / ____/ /_/ / /_/ / __/ / / / __(__ |__ )___/ / / / /_/ /> <
  35. /_/ \__,_/ .___/\___/_/ /_/\___/____/____/ /_/ /_/\__, /_/|_|
  36. /_/ UPDATE /____/
  37. EOF
  38. while true; do
  39. read -p "This will Update Paperless-ngx to $RELEASE. Proceed(y/n)?" yn
  40. case $yn in
  41. [Yy]*) break ;;
  42. [Nn]*) exit ;;
  43. *) echo "Please answer yes or no." ;;
  44. esac
  45. done
  46. sleep 2
  47. msg_info "Stopping Paperless-ngx"
  48. systemctl stop paperless-consumer paperless-webserver paperless-scheduler
  49. if [ -f "$SER" ]; then
  50. systemctl stop paperless-task-queue.service
  51. fi
  52. sleep 1
  53. msg_ok "Stopped Paperless-ngx"
  54. msg_info "Updating to ${RELEASE}"
  55. if [ "$(dpkg -l | awk '/libmariadb-dev-compat/ {print }'|wc -l)" != 1 ]; then apt-get install -y libmariadb-dev-compat; fi &>/dev/null
  56. wget https://github.com/paperless-ngx/paperless-ngx/releases/download/$RELEASE/paperless-ngx-$RELEASE.tar.xz &>/dev/null
  57. tar -xf paperless-ngx-$RELEASE.tar.xz &>/dev/null
  58. cp -r /opt/paperless/paperless.conf paperless-ngx/
  59. cp -r paperless-ngx/* /opt/paperless/
  60. cd /opt/paperless
  61. sed -i -e 's|-e git+https://github.com/paperless-ngx/django-q.git|git+https://github.com/paperless-ngx/django-q.git|' /opt/paperless/requirements.txt
  62. pip install -r requirements.txt &>/dev/null
  63. cd /opt/paperless/src
  64. /usr/bin/python3 manage.py migrate &>/dev/null
  65. if [ -f "$SER" ]; then
  66. msg_ok "paperless-task-queue.service Exists."
  67. else
  68. cat <<EOF >/etc/systemd/system/paperless-task-queue.service
  69. [Unit]
  70. Description=Paperless Celery Workers
  71. Requires=redis.service
  72. [Service]
  73. WorkingDirectory=/opt/paperless/src
  74. ExecStart=celery --app paperless worker --loglevel INFO
  75. [Install]
  76. WantedBy=multi-user.target
  77. EOF
  78. systemctl enable paperless-task-queue &>/dev/null
  79. msg_ok "paperless-task-queue.service Created."
  80. fi
  81. cat <<EOF >/etc/systemd/system/paperless-scheduler.service
  82. [Unit]
  83. Description=Paperless Celery beat
  84. Requires=redis.service
  85. [Service]
  86. WorkingDirectory=/opt/paperless/src
  87. ExecStart=celery --app paperless beat --loglevel INFO
  88. [Install]
  89. WantedBy=multi-user.target
  90. EOF
  91. msg_ok "Updated to ${RELEASE}"
  92. msg_info "Cleaning up"
  93. cd ~
  94. rm paperless-ngx-$RELEASE.tar.xz
  95. rm -rf paperless-ngx
  96. msg_ok "Cleaned"
  97. msg_info "Starting Paperless-ngx"
  98. systemctl daemon-reload
  99. systemctl start paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue.service
  100. sleep 1
  101. msg_ok "Finished Update"
  102. echo -e "\n${BL}It may take a minute or so for Paperless-ngx to become available.${CL}\n"