This commit is contained in:
Thomas Legay 2024-05-15 10:20:52 +02:00
parent c72fb8b625
commit 654ff2f496
30 changed files with 265 additions and 15 deletions

View file

@ -0,0 +1,17 @@
#### paperless-ngx
##### Information
Site : https://paperless-ngx.com/
Source : https://github.com/paperless-ngx/
##### Install
```bash
apt install -y wget ca-certificates
wget -qO - https://deb.lgy.fr/install.sh | bash
apt-get update
apt-get install -y paperless-ngx
```

View file

@ -0,0 +1,65 @@
#!/bin/bash
VERSION=2.8.1
APP=paperless-ngx
DEPOT=https://github.com/paperless-ngx/paperless-ngx.git
GIT_VERSION=v${VERSION}
DEB_VERSION=$VERSION-$(date +%Y%m%d%H%M)
DEBIAN_VERSION_CODENAME=bookworm
IMAGE_SIZE=8
PACKAGE_DEPENDENCY="nodejs python3 python3-pip python3-dev imagemagick fonts-liberation gnupg libpq-dev default-libmysqlclient-dev pkg-config libmagic-dev mime-support libzbar0 poppler-utils unpaper ghostscript icc-profiles-free qpdf liblept5 libxml2 pngquant zlib1g tesseract-ocr"
main(){
base_package_upgrade
configure_depot_nodejs 20
install_package_dependency
default_prebuild
build
makedeb
}
build(){
cd /tmp/${APP}
/tmp/venv/bin/pip install --upgrade pipenv==2023.12.1 setuptools wheel
/tmp/venv/bin/pipenv sync --dev
cd /tmp/${APP}/src-ui
export NODE_OPTIONS=--max-old-space-size=8192
npm ci
npx playwright install --with-deps
./node_modules/.bin/ng build --configuration production
cd /tmp/${APP}
/tmp/venv/bin/pipenv requirements > requirements.txt
cd /tmp/${APP}/src
/tmp/venv/bin/pipenv run python3 manage.py compilemessages
/tmp/venv/bin/pipenv run python3 manage.py collectstatic --no-input
}
makedeb(){
PATH_DEB=/tmp/src/rootfs
mkdir -p ${PATH_DEB}/usr/lib/systemd/system/
mkdir -p ${PATH_DEB}/usr/share/paperless-ngx
mkdir -p ${PATH_DEB}/usr/share/doc/paperless-ngx
mkdir -p ${PATH_DEB}/etc/default
mkdir -p ${PATH_DEB}/var/cache/paperless-ngx
cp -fr /tmp/${APP}/src/ ${PATH_DEB}/usr/share/paperless-ngx
cp -fr /tmp/${APP}/requirements.txt ${PATH_DEB}/usr/share/paperless-ngx
cp -fr /tmp/${APP}/static ${PATH_DEB}/usr/share/paperless-ngx
cp -fr /tmp/${APP}/gunicorn.conf.py ${PATH_DEB}/usr/share/paperless-ngx
cp -fr /tmp/${APP}/paperless.conf.example ${PATH_DEB}/etc/default/paperless-ngx
cp -fr /tmp/${APP}/README.md ${PATH_DEB}/usr/share/doc/paperless-ngx
cp -fr /tmp/${APP}/LICENSE ${PATH_DEB}/usr/share/doc/paperless-ngx
mv /tmp/src/prestart.sh ${PATH_DEB}/usr/share/paperless-ngx
mv /tmp/src/*.service ${PATH_DEB}/usr/lib/systemd/system/
sed -i "s/%VERSION%/$DEB_VERSION/" ${PATH_DEB}/DEBIAN/control
fakeroot dpkg-deb -Z gzip --build ${PATH_DEB} /tmp/dist
}

View file

@ -0,0 +1,14 @@
[Unit]
Description=Paperless consumer
#Requires=redis.service
[Service]
User=paperless-ngx
Group=paperless-ngx
EnvironmentFile=/etc/default/paperless-ngx
WorkingDirectory=/usr/share/paperless-ngx/src
ExecStartPre=/usr/share/paperless-ngx/prestart.sh
ExecStart=/var/cache/paperless-ngx/python-venv/bin/python3 manage.py document_consumer
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,14 @@
[Unit]
Description=Paperless Celery Beat
#Requires=redis.service
[Service]
User=paperless-ngx
Group=paperless-ngx
EnvironmentFile=/etc/default/paperless-ngx
WorkingDirectory=/usr/share/paperless-ngx/src
ExecStartPre=/usr/share/paperless-ngx/prestart.sh
ExecStart=/var/cache/paperless-ngx/python-venv/bin/celery --app paperless beat --loglevel INFO
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,14 @@
[Unit]
Description=Paperless Celery Workers
#Requires=redis.service
[Service]
User=paperless-ngx
Group=paperless-ngx
EnvironmentFile=/etc/default/paperless-ngx
WorkingDirectory=/usr/share/paperless-ngx/src
ExecStartPre=/usr/share/paperless-ngx/prestart.sh
ExecStart=/var/cache/paperless-ngx/python-venv/bin/celery --app paperless worker --loglevel INFO
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,17 @@
[Unit]
Description=Paperless webserver
After=network.target
Wants=network.target
#Requires=redis.service
#Requires=paperless-webserver.socket
[Service]
User=paperless-ngx
Group=paperless-ngx
EnvironmentFile=/etc/default/paperless-ngx
WorkingDirectory=/usr/share/paperless-ngx/src
ExecStartPre=/usr/share/paperless-ngx/prestart.sh
ExecStart=/var/cache/paperless-ngx/python-venv/bin/gunicorn -c ../gunicorn.conf.py paperless.asgi:application
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,12 @@
#!/usr/bin/env bash
(
flock 9
if [ -e /var/cache/paperless-ngx/lastcheck ] && [ "$(cat /var/cache/paperless-ngx/lastcheck)" == "$(date +%y%m%d)" ]
then
echo allready check today
else
python3 -m venv /var/cache/paperless-ngx/python-venv
/var/cache/paperless-ngx/python-venv/bin/pip3 install -r /usr/share/paperless-ngx/requirements.txt
date +%y%m%d > /var/cache/paperless-ngx/lastcheck
fi
) 9>python3 -m venv /tmp/paperless-ngx-python-venv

View file

@ -0,0 +1 @@
/etc/default/paperless-ngx

View file

@ -0,0 +1,8 @@
Package: paperless-ngx
Version: %VERSION%
Section: contrib
Priority: optional
Architecture: all
Maintainer: Thomas Legay <thomas@lgy.fr>
Depends: python3, python3-pip, python3-dev, imagemagick, fonts-liberation, gnupg, libpq-dev, default-libmysqlclient-dev, pkg-config, libmagic-dev, mime-support, libzbar0, poppler-utils, unpaper, ghostscript, icc-profiles-free, qpdf, liblept5, libxml2, pngquant, zlib1g, tesseract-ocr, gcc
Description: Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.

View file

@ -0,0 +1,15 @@
#!/bin/bash
APP=paperless-ngx
HOMEDIR=/var/lib/paperless-ngx
LOGDIR=/var/log/paperless-ngx
CACHEDIR=/var/cache/paperless-ngx
[ -d ${HOMEDIR} ] || mkdir -p ${HOMEDIR}
id ${APP} &> /dev/null || useradd ${APP} -r -s /bin/false -d ${HOMEDIR}
chown ${APP}:${APP} ${HOMEDIR}
[ -d ${LOGDIR} ] || mkdir -p ${LOGDIR}
chown ${APP}:${APP} ${LOGDIR}
[ -d ${CACHEDIR} ] || mkdir -p ${CACHEDIR}
chown ${APP}:${APP} ${CACHEDIR}