summaryrefslogtreecommitdiff
path: root/www-apps/paperless-ngx
diff options
context:
space:
mode:
Diffstat (limited to 'www-apps/paperless-ngx')
-rw-r--r--www-apps/paperless-ngx/Manifest12
-rw-r--r--www-apps/paperless-ngx/files/paperless-consumer.service15
-rw-r--r--www-apps/paperless-ngx/files/paperless-scheduler.service15
-rw-r--r--www-apps/paperless-ngx/files/paperless-task-queue.service15
-rw-r--r--www-apps/paperless-ngx/files/paperless-webserver.service19
-rw-r--r--www-apps/paperless-ngx/files/paperless-webserver.socket13
-rw-r--r--www-apps/paperless-ngx/files/paperless.target7
-rw-r--r--www-apps/paperless-ngx/files/paperless.tmpfiles7
-rw-r--r--www-apps/paperless-ngx/metadata.xml19
-rw-r--r--www-apps/paperless-ngx/paperless-ngx-2.7.2.ebuild185
10 files changed, 307 insertions, 0 deletions
diff --git a/www-apps/paperless-ngx/Manifest b/www-apps/paperless-ngx/Manifest
new file mode 100644
index 0000000..6823491
--- /dev/null
+++ b/www-apps/paperless-ngx/Manifest
@@ -0,0 +1,12 @@
+AUX paperless-consumer.service 306 BLAKE2B ebdeb8abf56a144a7a6ef281ac179aac0a9b2831a2093e9e6741fbb616078b84596c4a990995d8996ffb67ab653f4af356bd469eb965cab970f5c4c7f62a355e SHA512 d45f1e5be9130623eef21715ad3e2f80ff33e722ba2cbb29c56014008a105bca7add4507e116e8dbda53e4b41afa177b04f98a3e2d8553afd548a8846a19720c
+AUX paperless-scheduler.service 307 BLAKE2B 4abe32ad0cc4a565675dce7f01323343ff6c3fe2309049971764865acc3f8da20894ecb624137ecd2c367bc4972c55e554f7d5aabc5df4fd8fda6e8bfb8496fa SHA512 424d116d083c536bf979911700bf2bc5f66a415d2732b5e68c3bd9efd3ba0c18d78de3a885e2fe6c49613bae3be3cb8917d5d91d2dffa0c25e1764b78389b815
+AUX paperless-task-queue.service 306 BLAKE2B fb04b70fc9d3461dff1f4ba78a92f5e299f38d77c8bbae9f4449b52bfbb8d4b56dd50e8ced8126ba5224e316e1462590a0ccc227cd2219615430338a75a385e0 SHA512 a5f6ec9dd63d743dae42bad473c9147a66792b7b168521e9d1b7726d226829263fe5c4546ed1c1e9d8e86cf862581187fcf25b722e70f115c072c66b1bcde4f8
+AUX paperless-webserver.service 496 BLAKE2B 5a818886de0dfa0bb724b9c7e9d64a2707f78cfabce132f5255c7027bbfd5656a613de76675fecf85bd9491389997f3267c8d97d52742b846d7fb032e3cba8fa SHA512 37a4dbacd8ebc00f93dcd370dfc97d6657c091dbd062dd621b102de69a2b6307fbd1790b1766737ec8db6d65274d892a3998639a8a5a6880f654a3818482f433
+AUX paperless-webserver.socket 240 BLAKE2B 127735356bdd1ac1a46d85e757299f13a2224596fbc9e41b20b8d70aa2bbd31e8f20f571c636e6421960f2e5250386422c10ef16e7cab373f5625c7a3d053db1 SHA512 860ca3e6f3f2358684be356dbc9d2e770a22363e8324dea4d9547e99c02f9e36708b62b9da32df1d838852ca2ae0092a6795a368e7704d53981de87e4dc24df8
+AUX paperless.target 215 BLAKE2B 95b67ebfc166b888ee5aea32c5565002ae451a10c0d0851df79eeabf3a6e900c7112d447ccbc170bca771bf33e07261aa05f32a25e742ded0b10e6f31ee78870 SHA512 ae3d1dcc8f056f303a0c628c1aabb60e0c93f4006352c5d05a5ee673238c56085ccd2d95ff53555767d9a31a639cd571a26083aab274237cb9f8563ce50c25d6
+AUX paperless.tmpfiles 349 BLAKE2B 4a59f0a0c6a4abad23cba01e216909f45a7064e93911b8ba3e3b394f52379e41898b8c9e1246ba034bc8d2fe6dc83f5cad926e265a17da7c7093d997cfe8b4f3 SHA512 63af6e4359d5fa7bfc3f3669263a36f5d3b5f60c95cf6579d7324bb2116647bb447968b1bab5916e831918344b963d1026116e8cdfb57bce8063ed5ba119c9ea
+DIST paperless-ngx-v2.7.2.tar.xz 64558580 BLAKE2B c04d545363853c4b16cac300b653fa7c4c40894a98780f5636534427824132ae61ae4caa51253d5c4fd042200dcaaad02e180108a1ff11ef7c9c37964ef3047e SHA512 276f7f3368562280fbbeb57ef9486d53730f888e08cba6721c0f7c6d37450f5509acc7632c3d742e91106f2bcf0b0f5740d82512776f3ea78259e73aadd79dcf
+DIST paperless-ngx-v2.8.6.tar.xz 63450340 BLAKE2B a82b9114a16080e2d2c5252b774e5f09dc7ed618827598448968f3ce3b839141e2fcc39f1377262e65dc11e00ecdf56b7448c70502ca8a814832bf4571dba0aa SHA512 a593a33bb20f5084c37dfbcfa93dda918c0203638237cefb2721e59324bf5f21366e5cd1cef47e9bcbff1a85604cb9f82ba8c3bc87a8f75a8540cdef2697a943
+EBUILD paperless-ngx-2.7.2.ebuild 6363 BLAKE2B 419a727c29d6cf775e903b3367b1d1f4513b61132cf3bb97908fd3bb252567cdcaa8e686abb7f60ce95850b2052d13a910ba78be0dfde9aec0cb1d6fc9206906 SHA512 05a161eee91b55b6696998938f7c1e31016cef55454d67b2acf05efb76b9bc39397aabf618c86f7b000bd89ff7e6f4cc353119e1d946644e249b91dcb9583ede
+EBUILD paperless-ngx-2.8.6.ebuild 6363 BLAKE2B 9cbf5accf4b90534d8e09f854e63f865f98c822a257c7fd00ec2f1c021ce3a8ee91c01c217535a0765c75f184878b3e057a741d50201120d6840e966f49dd3a0 SHA512 78bcec04b0d5a4f81e98a71e40c47e85742cee4154d28e241dd06f6c67d45ed0db6d869693bde0f41bca9b5125e6dd7b9143e0e1c6e335432cdf73b89ab215d4
+MISC metadata.xml 851 BLAKE2B dfb395b418d92c0c7318c4862dfbce74a312222b3a2848334806c2f8063bb63947a4c0315c289f1db83987d5e7649483efb484944afd6963b3f74c1a488877f5 SHA512 e7622cfe74bee71e3698241cb234221d9d40c9a41eca4f8b3e5e3c7338940652f5c5652cd72a675339cc6620d777e858fe5310f29cf7f87f5585eb8742b58405
diff --git a/www-apps/paperless-ngx/files/paperless-consumer.service b/www-apps/paperless-ngx/files/paperless-consumer.service
new file mode 100644
index 0000000..a43178a
--- /dev/null
+++ b/www-apps/paperless-ngx/files/paperless-consumer.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Paperless consumer service
+Requires=redis.service
+After=network.target
+PartOf=paperless.target
+
+[Service]
+User=paperless
+Group=paperless
+WorkingDirectory=/usr/share/paperless/src
+ExecStart=/usr/bin/paperless-manage document_consumer
+Restart=on-abort
+
+[Install]
+WantedBy=paperless.target
diff --git a/www-apps/paperless-ngx/files/paperless-scheduler.service b/www-apps/paperless-ngx/files/paperless-scheduler.service
new file mode 100644
index 0000000..59e0aa1
--- /dev/null
+++ b/www-apps/paperless-ngx/files/paperless-scheduler.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Paperless scheduler service
+Requires=redis.service
+After=network.target
+PartOf=paperless.target
+
+[Service]
+User=paperless
+Group=paperless
+WorkingDirectory=/usr/share/paperless/src
+ExecStart=celery --app paperless beat --loglevel INFO
+Restart=on-abort
+
+[Install]
+WantedBy=paperless.target
diff --git a/www-apps/paperless-ngx/files/paperless-task-queue.service b/www-apps/paperless-ngx/files/paperless-task-queue.service
new file mode 100644
index 0000000..0049813
--- /dev/null
+++ b/www-apps/paperless-ngx/files/paperless-task-queue.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Paperless Celery Workers
+Requires=redis.service
+After=network.target
+PartOf=paperless.target
+
+[Service]
+User=paperless
+Group=paperless
+WorkingDirectory=/usr/share/paperless/src
+ExecStart=celery --app paperless worker --loglevel INFO
+Restart=on-abort
+
+[Install]
+WantedBy=paperless.target
diff --git a/www-apps/paperless-ngx/files/paperless-webserver.service b/www-apps/paperless-ngx/files/paperless-webserver.service
new file mode 100644
index 0000000..5394909
--- /dev/null
+++ b/www-apps/paperless-ngx/files/paperless-webserver.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=Paperless webserver service
+Requires=redis.service paperless-webserver.socket
+After=network.target
+Wants=network.target
+PartOf=paperless.target
+
+[Service]
+User=paperless
+Group=paperless
+Environment=PYTHONUNBUFFERED=1
+EnvironmentFile=/etc/paperless.conf
+WorkingDirectory=/usr/share/paperless/src
+ExecStart=/usr/bin/gunicorn -c /usr/share/paperless/gunicorn.conf.py paperless.asgi:application
+Restart=on-abort
+
+[Install]
+Also=paperless-webserver.socket
+WantedBy=paperless.target
diff --git a/www-apps/paperless-ngx/files/paperless-webserver.socket b/www-apps/paperless-ngx/files/paperless-webserver.socket
new file mode 100644
index 0000000..4c458c7
--- /dev/null
+++ b/www-apps/paperless-ngx/files/paperless-webserver.socket
@@ -0,0 +1,13 @@
+[Unit]
+Description=Socket for Paperless webserver
+PartOf=paperless-webserver.service
+
+[Socket]
+ListenStream=/run/paperless.sock
+SocketUser=paperless
+SocketGroup=paperless
+SocketMode=0660
+RemoveOnStop=True
+
+[Install]
+WantedBy=sockets.target
diff --git a/www-apps/paperless-ngx/files/paperless.target b/www-apps/paperless-ngx/files/paperless.target
new file mode 100644
index 0000000..2281a12
--- /dev/null
+++ b/www-apps/paperless-ngx/files/paperless.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=Paperless services
+After=network.target
+Wants=paperless-webserver.service paperless-consumer.service paperless-scheduler.service paperless-task-queue.service
+
+[Install]
+WantedBy=multi-user.target
diff --git a/www-apps/paperless-ngx/files/paperless.tmpfiles b/www-apps/paperless-ngx/files/paperless.tmpfiles
new file mode 100644
index 0000000..6d9934f
--- /dev/null
+++ b/www-apps/paperless-ngx/files/paperless.tmpfiles
@@ -0,0 +1,7 @@
+f /etc/paperless.conf 0640 root paperless
+d /var/lib/paperless 0770 paperless paperless
+d /var/lib/paperless/consume 0770 paperless paperless
+d /var/lib/paperless/data 0750 paperless paperless
+d /var/lib/paperless/media 0750 paperless paperless
+d /var/lib/paperless/tmp 0750 paperless paperless
+d /var/lib/paperless/uploads 0750 paperless paperless
diff --git a/www-apps/paperless-ngx/metadata.xml b/www-apps/paperless-ngx/metadata.xml
new file mode 100644
index 0000000..fad0d28
--- /dev/null
+++ b/www-apps/paperless-ngx/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
+ </maintainer>
+ <use>
+ <flag name="audit">Enables an audit trail for documents, document types, correspondents and tags</flag>
+ <flag name="compression">Enable compression of the responses in application</flag>
+ <flag name="ocr">Enable support for Optical Character Recognition</flag>
+ <flag name="remote-redis">Use remote Redis instance</flag>
+ <flag name="zxing">Use zxing-cpp as an alternative barcodes scanning library</flag>
+ </use>
+ <upstream>
+ <bugs-to>https://github.com/paperless-ngx/paperless-ngx/issues</bugs-to>
+ <remote-id type="github">paperless-ngx/paperless-ngx</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/www-apps/paperless-ngx/paperless-ngx-2.7.2.ebuild b/www-apps/paperless-ngx/paperless-ngx-2.7.2.ebuild
new file mode 100644
index 0000000..28c6491
--- /dev/null
+++ b/www-apps/paperless-ngx/paperless-ngx-2.7.2.ebuild
@@ -0,0 +1,185 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit python-single-r1 systemd
+
+DESCRIPTION="Community supported paperless: scan, index and archive your physical documents"
+HOMEPAGE="https://github.com/paperless-ngx/paperless-ngx"
+SRC_URI="https://github.com/paperless-ngx/paperless-ngx/releases/download/v${PV}/paperless-ngx-v${PV}.tar.xz"
+S="${WORKDIR}/${PN}"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="audit compression mysql +ocr postgres remote-redis +sqlite zxing"
+REQUIRED_USE="
+ ${PYTHON_REQUIRED_USE}
+ || ( mysql postgres sqlite )
+"
+
+ACCT_DEPEND="
+ acct-group/paperless
+ acct-user/paperless
+"
+EXTRA_DEPEND="
+ app-text/unpaper
+ $(python_gen_cond_dep '
+ dev-python/hiredis[${PYTHON_USEDEP}]
+ dev-python/websockets[${PYTHON_USEDEP}]')
+"
+
+DEPEND="
+ ${ACCT_DEPEND}
+ ${EXTRA_DEPEND}
+ ${PYTHON_DEPS}
+ app-text/poppler[utils]
+ $(python_gen_cond_dep '
+ dev-python/asgiref[${PYTHON_USEDEP}]
+ dev-python/bleach[${PYTHON_USEDEP}]
+ dev-python/celery[${PYTHON_USEDEP}]
+ >=dev-python/channels-4.0[${PYTHON_USEDEP}]
+ >=dev-python/channels-redis-4.0[${PYTHON_USEDEP}]
+ dev-python/concurrent-log-handler[${PYTHON_USEDEP}]
+ >=dev-python/dateparser-1.2[${PYTHON_USEDEP}]
+ >=dev-python/django-4.2.11[${PYTHON_USEDEP}]
+ <dev-python/django-5.0[${PYTHON_USEDEP}]
+ dev-python/django-allauth[${PYTHON_USEDEP}]
+ dev-python/django-celery-results[${PYTHON_USEDEP}]
+ dev-python/django-cors-headers[${PYTHON_USEDEP}]
+ dev-python/django-extensions[${PYTHON_USEDEP}]
+ >=dev-python/django-filter-24.1[${PYTHON_USEDEP}]
+ dev-python/django-guardian[${PYTHON_USEDEP}]
+ dev-python/django-multiselectfield[${PYTHON_USEDEP}]
+ dev-python/django-redis[${PYTHON_USEDEP}]
+ ~dev-python/djangorestframework-3.14.0[${PYTHON_USEDEP}]
+ dev-python/djangorestframework-guardian[${PYTHON_USEDEP}]
+ dev-python/drf-writable-nested[${PYTHON_USEDEP}]
+ dev-python/filelock[${PYTHON_USEDEP}]
+ dev-python/imap-tools[${PYTHON_USEDEP}]
+ >=dev-python/inotifyrecursive-0.3[${PYTHON_USEDEP}]
+ dev-python/langdetect[${PYTHON_USEDEP}]
+ dev-python/nltk[${PYTHON_USEDEP}]
+ dev-python/pathvalidate[${PYTHON_USEDEP}]
+ dev-python/pdf2image[${PYTHON_USEDEP}]
+ dev-python/pikepdf[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/python-dotenv[${PYTHON_USEDEP}]
+ dev-python/python-gnupg[${PYTHON_USEDEP}]
+ >=dev-python/python-ipware-2.0.0[${PYTHON_USEDEP}]
+ dev-python/python-magic[${PYTHON_USEDEP}]
+ dev-python/pyzbar[${PYTHON_USEDEP}]
+ dev-python/rapidfuzz[${PYTHON_USEDEP}]
+ dev-python/redis[${PYTHON_USEDEP}]
+ >=dev-python/scikit-learn-1.4
+ dev-python/tqdm[${PYTHON_USEDEP}]
+ <dev-python/uvicorn-0.26.0[${PYTHON_USEDEP}]
+ >=dev-python/watchdog-4.0[${PYTHON_USEDEP}]
+ >=dev-python/whitenoise-6.6[${PYTHON_USEDEP}]
+ >=dev-python/whoosh-2.7[${PYTHON_USEDEP}]')
+ media-gfx/imagemagick[xml]
+ media-gfx/optipng
+ media-libs/jbig2enc
+ www-servers/gunicorn
+ audit? ( $(python_gen_cond_dep '
+ dev-python/django-auditlog[${PYTHON_USEDEP}]') )
+ compression? ( $(python_gen_cond_dep '
+ dev-python/django-compression-middleware[${PYTHON_USEDEP}]') )
+ mysql? ( dev-python/mysqlclient )
+ ocr? ( >=app-text/OCRmyPDF-15.4 )
+ postgres? ( dev-python/psycopg:2 )
+ !remote-redis? ( dev-db/redis )
+ zxing? ( media-libs/zxing-cpp[python,${PYTHON_SINGLE_USEDEP}] )
+"
+RDEPEND="${DEPEND}"
+# dev-python/tika
+# dev-python/gotenberg-client
+
+DOCS=( docker/imagemagick-policy.xml )
+
+src_prepare() {
+ default
+
+ sed \
+ -e "s|#PAPERLESS_CONSUMPTION_DIR=../consume|PAPERLESS_CONSUMPTION_DIR=/var/lib/paperless/consume|" \
+ -e "s|#PAPERLESS_DATA_DIR=../data|PAPERLESS_DATA_DIR=/var/lib/paperless/data|" \
+ -e "s|#PAPERLESS_MEDIA_ROOT=../media|PAPERLESS_MEDIA_ROOT=/var/lib/paperless/media|" \
+ -e "s|#PAPERLESS_STATICDIR=../static|PAPERLESS_STATICDIR=/usr/share/paperless/static|" \
+ -e "s|#PAPERLESS_CONVERT_TMPDIR=/var/tmp/paperless|PAPERLESS_CONVERT_TMPDIR=/var/lib/paperless/tmp|" \
+ -i "paperless.conf" || die "Cannot update paperless.conf"
+
+ cat >> "paperless.conf" <<- EOF
+
+ # Custom
+ PAPERLESS_BIND_ADDR=unix
+ PAPERLESS_PORT=/run/paperless.sock
+
+ PAPERLESS_ENABLE_COMPRESSION=$(use compression && echo true || echo false)
+ PAPERLESS_AUDIT_LOG_ENABLED=$(use audit && echo true || echo false)
+ EOF
+}
+
+src_install() {
+ einstalldocs
+
+ # Install service files
+ systemd_newunit "${FILESDIR}"/paperless-webserver.service paperless-webserver.service
+ systemd_newunit "${FILESDIR}"/paperless-webserver.socket paperless-webserver.socket
+ systemd_newunit "${FILESDIR}"/paperless-scheduler.service paperless-scheduler.service
+ systemd_newunit "${FILESDIR}"/paperless-consumer.service paperless-consumer.service
+ systemd_newunit "${FILESDIR}"/paperless-task-queue.service paperless-task-queue.service
+ systemd_newunit "${FILESDIR}"/paperless.target paperless.target
+ if use remote-redis; then
+ sed -e '/redis\.service/d' -i *.service "${D}$(systemd_get_systemunitdir)"/*.service
+ fi
+
+ # Install paperless files
+ insinto /usr/share/paperless
+ doins -r docs src static gunicorn.conf.py requirements.txt
+
+ insinto /etc
+ doins paperless.conf
+ fowners root:paperless /etc/paperless.conf
+ fperms 640 /etc/paperless.conf
+
+ insinto /usr/lib/tmpfiles.d
+ doins "${FILESDIR}"/paperless.tmpfiles
+ fperms 644 /usr/lib/tmpfiles.d/paperless.tmpfiles
+
+ # Set directories
+ for dir in consume data media tmp; do
+ keepdir /var/lib/paperless/${dir}
+ fowners paperless:paperless /var/lib/paperless/${dir}
+ case "${dir}" in
+ data) fperms 700 /var/lib/paperless/${dir} ;;
+ *) fperms 750 /var/lib/paperless/${dir} ;;
+ esac
+ done
+
+ # Main executable
+ fperms 755 "/usr/share/paperless/src/manage.py"
+ dosym -r "/usr/share/paperless/src/manage.py" "/usr/bin/paperless-manage"
+}
+
+pkg_postinst() {
+ elog "To complete the installation of paperless, edit /etc/paperless.conf file and"
+ elog "* Create the database with"
+ elog ""
+ elog "sudo -u paperless paperless-manage migrate"
+ elog ""
+ elog "* Create a super user account with"
+ elog ""
+ elog "sudo -u paperless paperless-manage createsuperuser"
+ elog ""
+ elog "After each update of paperless, you should run migration with"
+ elog ""
+ elog "sudo -u paperless paperless-manage migrate"
+ elog ""
+ elog "Paperless services can be started together with"
+ elog ""
+ elog "sudo systemctl start paperless.target"
+}