paperless-ngx.sh 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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="8"
  22. var_cpu="2"
  23. var_ram="2048"
  24. var_os="debian"
  25. var_version="11"
  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 --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 -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
  78. pip install -r requirements.txt &>/dev/null
  79. cd /opt/paperless/src
  80. /usr/bin/python3 manage.py migrate &>/dev/null
  81. if [ -f "$SER" ]; then
  82. msg_ok "paperless-task-queue.service Exists."
  83. else
  84. cat <<EOF >/etc/systemd/system/paperless-task-queue.service
  85. [Unit]
  86. Description=Paperless Celery Workers
  87. Requires=redis.service
  88. [Service]
  89. WorkingDirectory=/opt/paperless/src
  90. ExecStart=celery --app paperless worker --loglevel INFO
  91. [Install]
  92. WantedBy=multi-user.target
  93. EOF
  94. systemctl enable paperless-task-queue &>/dev/null
  95. msg_ok "paperless-task-queue.service Created."
  96. fi
  97. cat <<EOF >/etc/systemd/system/paperless-scheduler.service
  98. [Unit]
  99. Description=Paperless Celery beat
  100. Requires=redis.service
  101. [Service]
  102. WorkingDirectory=/opt/paperless/src
  103. ExecStart=celery --app paperless beat --loglevel INFO
  104. [Install]
  105. WantedBy=multi-user.target
  106. EOF
  107. msg_ok "Updated to ${RELEASE}"
  108. msg_info "Cleaning up"
  109. cd ~
  110. rm paperless-ngx-$RELEASE.tar.xz
  111. rm -rf paperless-ngx
  112. msg_ok "Cleaned"
  113. msg_info "Starting Paperless-ngx"
  114. systemctl daemon-reload
  115. systemctl start paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue.service
  116. sleep 1
  117. msg_ok "Started Paperless-ngx"
  118. msg_ok "Updated Successfully!\n"
  119. exit
  120. fi
  121. if [ "$UPD" == "2" ]; then
  122. cat paperless.creds
  123. exit
  124. fi
  125. }
  126. start
  127. build_container
  128. description
  129. msg_ok "Completed Successfully!\n"
  130. echo -e "${APP} should be reachable by going to the following URL.
  131. ${BL}http://${IP}:8000${CL} \n"