paperless-ngx.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #!/usr/bin/env bash
  2. source <(curl -s https://raw.githubusercontent.com/tteck/Proxmox/main/misc/build.func)
  3. # Copyright (c) 2021-2023 tteck
  4. # Author: tteck (tteckster)
  5. # License: MIT
  6. # https://github.com/tteck/Proxmox/raw/main/LICENSE
  7. function header_info {
  8. clear
  9. cat <<"EOF"
  10. ____ __
  11. / __ \____ _____ ___ _____/ /__ __________ ____ ____ __ __
  12. / /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/___/ __ \/ __ `/ |/_/
  13. / ____/ /_/ / /_/ / __/ / / / __(__ |__ )___/ / / / /_/ /> <
  14. /_/ \__,_/ .___/\___/_/ /_/\___/____/____/ /_/ /_/\__, /_/|_|
  15. /_/ /____/
  16. EOF
  17. }
  18. header_info
  19. echo -e "Loading..."
  20. APP="Paperless-ngx"
  21. var_disk="10"
  22. var_cpu="2"
  23. var_ram="2048"
  24. var_os="debian"
  25. var_version="12"
  26. variables
  27. color
  28. catch_errors
  29. function default_settings() {
  30. CT_TYPE="1"
  31. PW=""
  32. CT_ID=$NEXTID
  33. HN=$NSAPP
  34. DISK_SIZE="$var_disk"
  35. CORE_COUNT="$var_cpu"
  36. RAM_SIZE="$var_ram"
  37. BRG="vmbr0"
  38. NET="dhcp"
  39. GATE=""
  40. DISABLEIP6="no"
  41. MTU=""
  42. SD=""
  43. NS=""
  44. MAC=""
  45. VLAN=""
  46. SSH="no"
  47. VERB="no"
  48. echo_default
  49. }
  50. function update_script() {
  51. if [[ ! -d /opt/paperless ]]; then
  52. msg_error "No ${APP} Installation Found!"
  53. exit
  54. fi
  55. 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) }')
  56. SER=/etc/systemd/system/paperless-task-queue.service
  57. UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \
  58. "1" "Update Paperless-ngx to $RELEASE" ON \
  59. "2" "Paperless-ngx Credentials" OFF \
  60. 3>&1 1>&2 2>&3)
  61. header_info
  62. if [ "$UPD" == "1" ]; then
  63. msg_info "Stopping Paperless-ngx"
  64. systemctl stop paperless-consumer paperless-webserver paperless-scheduler
  65. if [ -f "$SER" ]; then
  66. systemctl stop paperless-task-queue.service
  67. fi
  68. sleep 1
  69. msg_ok "Stopped Paperless-ngx"
  70. msg_info "Updating to ${RELEASE}"
  71. if [ "$(dpkg -l | awk '/libmariadb-dev-compat/ {print }' | wc -l)" != 1 ]; then apt-get install -y libmariadb-dev-compat; fi &>/dev/null
  72. wget https://github.com/paperless-ngx/paperless-ngx/releases/download/$RELEASE/paperless-ngx-$RELEASE.tar.xz &>/dev/null
  73. tar -xf paperless-ngx-$RELEASE.tar.xz &>/dev/null
  74. cp -r /opt/paperless/paperless.conf paperless-ngx/
  75. cp -r paperless-ngx/* /opt/paperless/
  76. cd /opt/paperless
  77. sed -i 's/scipy==1.8.1/scipy==1.10.1/g' requirements.txt
  78. 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
  79. pip install -r requirements.txt &>/dev/null
  80. cd /opt/paperless/src
  81. /usr/bin/python3 manage.py migrate &>/dev/null
  82. if [ -f "$SER" ]; then
  83. msg_ok "paperless-task-queue.service Exists."
  84. else
  85. cat <<EOF >/etc/systemd/system/paperless-task-queue.service
  86. [Unit]
  87. Description=Paperless Celery Workers
  88. Requires=redis.service
  89. [Service]
  90. WorkingDirectory=/opt/paperless/src
  91. ExecStart=celery --app paperless worker --loglevel INFO
  92. [Install]
  93. WantedBy=multi-user.target
  94. EOF
  95. systemctl enable paperless-task-queue &>/dev/null
  96. msg_ok "paperless-task-queue.service Created."
  97. fi
  98. cat <<EOF >/etc/systemd/system/paperless-scheduler.service
  99. [Unit]
  100. Description=Paperless Celery beat
  101. Requires=redis.service
  102. [Service]
  103. WorkingDirectory=/opt/paperless/src
  104. ExecStart=celery --app paperless beat --loglevel INFO
  105. [Install]
  106. WantedBy=multi-user.target
  107. EOF
  108. msg_ok "Updated to ${RELEASE}"
  109. msg_info "Cleaning up"
  110. cd ~
  111. rm paperless-ngx-$RELEASE.tar.xz
  112. rm -rf paperless-ngx
  113. msg_ok "Cleaned"
  114. msg_info "Starting Paperless-ngx"
  115. systemctl daemon-reload
  116. systemctl start paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue.service
  117. sleep 1
  118. msg_ok "Started Paperless-ngx"
  119. msg_ok "Updated Successfully!\n"
  120. exit
  121. fi
  122. if [ "$UPD" == "2" ]; then
  123. cat paperless.creds
  124. exit
  125. fi
  126. }
  127. start
  128. build_container
  129. description
  130. msg_ok "Completed Successfully!\n"
  131. echo -e "${APP} should be reachable by going to the following URL.
  132. ${BL}http://${IP}:8000${CL} \n"