From 433aafe3651449889a0cfcfef902179a984544e8 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 2 Dec 2025 14:55:02 +0100 Subject: [PATCH] Refactor: Paperless-AI (#9588) Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com> --- ct/paperless-ai.sh | 53 +++++++++------------------------ install/paperless-ai-install.sh | 31 +++++++++++-------- 2 files changed, 33 insertions(+), 51 deletions(-) diff --git a/ct/paperless-ai.sh b/ct/paperless-ai.sh index 5b5031851c..951e7ef39b 100644 --- a/ct/paperless-ai.sh +++ b/ct/paperless-ai.sh @@ -27,58 +27,33 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - if ! dpkg -s python3-pip >/dev/null 2>&1; then - $STD apt install -y python3-pip - fi - RELEASE=$(curl -fsSL https://api.github.com/repos/clusterzx/paperless-ai/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + + if check_for_gh_release "paperless-ai" "clusterzx/paperless-ai"; then msg_info "Stopping Service" - systemctl stop paperless-ai - msg_info "Stopped Service" + systemctl stop paperless-ai paperless-rag + msg_ok "Stopped Service" - msg_info "Updating $APP to v${RELEASE}" - cd /opt - mv /opt/paperless-ai /opt/paperless-ai_bak - curl -fsSL "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/clusterzx/paperless-ai/archive/refs/tags/v${RELEASE}.zip") - $STD unzip v${RELEASE}.zip - mv paperless-ai-${RELEASE} /opt/paperless-ai - mkdir -p /opt/paperless-ai/data - cp -a /opt/paperless-ai_bak/data/. /opt/paperless-ai/data/ + fetch_and_deploy_gh_release "paperless-ai" "clusterzx/paperless-ai" + + msg_info "Updating Paperless-AI" cd /opt/paperless-ai - if [[ ! -f /etc/systemd/system/paperless-rag.service ]]; then - cat </etc/systemd/system/paperless-rag.service -[Unit] -Description=PaperlessAI-RAG Service -After=network.target - -[Service] -WorkingDirectory=/opt/paperless-ai -ExecStart=/usr/bin/python3 main.py --host 0.0.0.0 --port 8000 --initialize -Restart=always - -[Install] -WantedBy=multi-user.target -EOF - echo "RAG_SERVICE_URL=http://localhost:8000" >>/opt/paperless-ai/data/.env - echo "RAG_SERVICE_ENABLED=true" >>/opt/paperless-ai/data/.env - fi + source /opt/paperless-ai/venv/bin/activate + $STD pip install --upgrade pip $STD pip install --no-cache-dir -r requirements.txt mkdir -p data/chromadb - $STD npm install - rm -rf /opt/v${RELEASE}.zip - rm -rf /opt/paperless-ai_bak - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated $APP to v${RELEASE}" + $STD npm ci --only=production + msg_ok "Updated Paperless-AI" msg_info "Starting Service" + systemctl start paperless-rag + sleep 3 systemctl start paperless-ai msg_ok "Started Service" msg_ok "Updated successfully!" - else - msg_ok "No update required. ${APP} is already at v${RELEASE}" fi exit } + start build_container description diff --git a/install/paperless-ai-install.sh b/install/paperless-ai-install.sh index d382c1c00e..0d53d632fc 100644 --- a/install/paperless-ai-install.sh +++ b/install/paperless-ai-install.sh @@ -20,21 +20,27 @@ msg_ok "Installed Dependencies" msg_info "Installing Python3" $STD apt install -y \ - python3-pip + python3-pip \ + python3-dev \ + python3-venv +mkdir -p ~/.config/pip +cat >~/.config/pip/pip.conf </opt/paperless-ai/data/.env PAPERLESS_API_URL= @@ -61,8 +67,6 @@ CUSTOM_MODEL= RAG_SERVICE_URL=http://localhost:8000 RAG_SERVICE_ENABLED=true EOF -rm -rf v${RELEASE}.zip -echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" msg_ok "Setup Paperless-AI" msg_info "Creating Service" @@ -74,7 +78,9 @@ Requires=paperless-rag.service [Service] WorkingDirectory=/opt/paperless-ai -ExecStart=/usr/bin/npm start +Environment="NODE_ENV=production" +EnvironmentFile=/opt/paperless-ai/data/.env +ExecStart=/usr/bin/node server.js Restart=always [Install] @@ -88,7 +94,8 @@ After=network.target [Service] WorkingDirectory=/opt/paperless-ai -ExecStart=/usr/bin/python3 main.py --host 0.0.0.0 --port 8000 --initialize +EnvironmentFile=/opt/paperless-ai/data/.env +ExecStart=/opt/paperless-ai/venv/bin/python3 main.py --host 0.0.0.0 --port 8000 --initialize Restart=always [Install]