summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlphaJack2022-03-11 11:18:04 +0100
committerAlphaJack2022-03-11 11:18:04 +0100
commit2362e648206408e496d954f5e35ff374b677b1b2 (patch)
tree9d8b8158be842b2b941465abf38c1b040827d177
downloadaur-2362e648206408e496d954f5e35ff374b677b1b2.tar.gz
Initial commit
-rw-r--r--.SRCINFO126
-rw-r--r--PKGBUILD165
-rw-r--r--paperless-consumer.service15
-rw-r--r--paperless-scheduler.service15
-rw-r--r--paperless-webserver.service16
-rw-r--r--paperless.hook9
-rw-r--r--paperless.install36
-rw-r--r--paperless.sysusers1
-rw-r--r--paperless.target8
-rw-r--r--paperless.tmpfiles7
10 files changed, 398 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..d86816697365
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,126 @@
+pkgbase = paperless-ngx
+ pkgdesc = A supercharged version of paperless: scan, index and archive all your physical documents
+ pkgver = 1.6.0
+ pkgrel = 1
+ url = https://github.com/paperless-ngx/paperless-ngx
+ install = paperless.install
+ arch = any
+ license = GPL3
+ depends = file
+ depends = gnupg
+ depends = gunicorn
+ depends = imagemagick
+ depends = mailcap
+ depends = ocrmypdf
+ depends = optipng
+ depends = redis
+ depends = sqlite
+ depends = tesseract-data-eng
+ depends = ttf-liberation
+ depends = uvicorn
+ depends = python-aiohttp
+ depends = python-aioredis1
+ depends = python-arrow
+ depends = python-asgiref
+ depends = python-async-timeout
+ depends = python-attrs
+ depends = python-autobahn
+ depends = python-automat
+ depends = python-blessed
+ depends = python-certifi
+ depends = python-django-channels
+ depends = python-django-channels-redis
+ depends = python-chardet
+ depends = python-click
+ depends = python-concurrent-log-handler
+ depends = python-constantly
+ depends = python-cryptography
+ depends = python-daphne
+ depends = python-dateparser
+ depends = python-django
+ depends = python-django-cors-headers
+ depends = python-django-extensions
+ depends = python-django-filter
+ depends = python-django-picklefield
+ depends = python-django-q
+ depends = python-django-rest-framework
+ depends = python-filelock
+ depends = python-fuzzywuzzy
+ depends = python-h11
+ depends = python-hiredis
+ depends = python-httptools
+ depends = python-humanfriendly
+ depends = python-hyperlink
+ depends = python-idna
+ depends = python-imap-tools
+ depends = python-incremental
+ depends = python-inotify-simple
+ depends = python-inotifyrecursive
+ depends = python-joblib
+ depends = python-langdetect
+ depends = python-lxml
+ depends = python-msgpack
+ depends = python-numpy
+ depends = python-pathvalidate
+ depends = python-portalocker
+ depends = python-psycopg2
+ depends = python-pyasn1
+ depends = python-pyasn1-modules
+ depends = python-pycparser
+ depends = python-pyopenssl
+ depends = python-dateutil
+ depends = python-dotenv
+ depends = python-gnupg
+ depends = python-levenshtein
+ depends = python-magic-ahupp
+ depends = python-pytz
+ depends = python-yaml
+ depends = python-redis
+ depends = python-regex
+ depends = python-requests
+ depends = python-scikit-learn
+ depends = python-scipy
+ depends = python-service-identity
+ depends = python-six
+ depends = python-sortedcontainers
+ depends = python-sqlparse
+ depends = python-threadpoolctl
+ depends = python-tika
+ depends = python-twisted
+ depends = python-txaio
+ depends = python-tzlocal
+ depends = python-urllib3
+ depends = python-uvloop
+ depends = python-watchdog
+ depends = python-watchgod
+ depends = python-wcwidth
+ depends = python-websockets
+ depends = python-whitenoise
+ depends = python-whoosh
+ depends = python-zope-interface
+ optdepends = jbig2enc: smaller PDF size
+ optdepends = postgresql: postgres database
+ provides = paperless
+ provides = paperless-ngx
+ conflicts = paperless
+ conflicts = paperless-ng
+ options = !strip
+ backup = etc/paperless.conf
+ source = https://github.com/paperless-ngx/paperless-ngx/releases/download/ngx-1.6.0/paperless-ngx-1.6.0.tar.xz
+ source = paperless.hook
+ source = paperless.sysusers
+ source = paperless.tmpfiles
+ source = paperless.target
+ source = paperless-consumer.service
+ source = paperless-scheduler.service
+ source = paperless-webserver.service
+ sha256sums = f4971abf258382fb171a8d11f4c6181ca03b42334deb6d9305a04ea8f8eab91e
+ sha256sums = 4e2ca67d7eedf14ba839af852907e1d76aa0a5ee5f4f740a3aee786c24035ace
+ sha256sums = a002bd55b8e5b1ef89a10b907483c56df99d52d03951d464472d8c375e9835d6
+ sha256sums = 3971deb5721eb4e01c2cc0348546cc22a861a1e84458061fce4fbd2cf01b2a1e
+ sha256sums = 091dc2406139bcc52ca1f9acdb4e20723f4511b8ce6849e37c5ab88784dbac12
+ sha256sums = 95d4e665f66f63432c22d9f139769f84575cb427362865931253d9651779ec22
+ sha256sums = 544821a278617c6493e7a27f25266c39d6cc10a877247fa5f807c7eaf1a460cd
+ sha256sums = 47e47fcadf029d85fa6304191afa6362b7675216cb82ed1bad8cce42c0378e7e
+
+pkgname = paperless-ngx
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..9a5709bcdce8
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,165 @@
+# Maintainer: AlphaJack <alphajack at tuta dot io>
+# Maintainer: amo <https://aur.archlinux.org/account/amo>
+
+pkgname="paperless-ngx"
+pkgver=1.6.0
+pkgrel=1
+pkgdesc="A supercharged version of paperless: scan, index and archive all your physical documents"
+url="https://github.com/paperless-ngx/paperless-ngx"
+license=("GPL3")
+arch=("any")
+provides=("paperless" "$pkgname")
+conflicts=("paperless" "paperless-ng")
+depends=("file"
+ "gnupg"
+ "gunicorn"
+ "imagemagick"
+ "mailcap"
+ "ocrmypdf"
+ "optipng"
+ "redis"
+ "sqlite"
+ "tesseract-data-eng"
+ "ttf-liberation"
+ "uvicorn"
+ "python-aiohttp"
+ "python-aioredis1" # until components have been updated
+ "python-arrow"
+ "python-asgiref"
+ "python-async-timeout"
+ "python-attrs"
+ "python-autobahn"
+ "python-automat"
+ "python-blessed"
+ "python-certifi"
+ "python-django-channels"
+ "python-django-channels-redis"
+ "python-chardet"
+ "python-click"
+ "python-concurrent-log-handler"
+ "python-constantly"
+ "python-cryptography"
+ "python-daphne"
+ "python-dateparser"
+ "python-django"
+ "python-django-cors-headers"
+ "python-django-extensions"
+ "python-django-filter"
+ "python-django-picklefield"
+ "python-django-q"
+ "python-django-rest-framework"
+ "python-filelock"
+ "python-fuzzywuzzy"
+ "python-h11"
+ "python-hiredis"
+ "python-httptools"
+ "python-humanfriendly"
+ "python-hyperlink"
+ "python-idna"
+ "python-imap-tools"
+ "python-incremental"
+ "python-inotify-simple"
+ "python-inotifyrecursive"
+ "python-joblib"
+ "python-langdetect"
+ "python-lxml"
+ "python-msgpack"
+ "python-numpy"
+ "python-pathvalidate"
+ "python-portalocker"
+ "python-psycopg2"
+ "python-pyasn1"
+ "python-pyasn1-modules"
+ "python-pycparser"
+ "python-pyopenssl"
+ "python-dateutil"
+ "python-dotenv"
+ "python-gnupg"
+ "python-levenshtein"
+ "python-magic-ahupp"
+ "python-pytz"
+ "python-yaml"
+ "python-redis"
+ "python-regex"
+ "python-requests"
+ "python-scikit-learn"
+ "python-scipy"
+ "python-service-identity"
+ "python-six"
+ "python-sortedcontainers"
+ "python-sqlparse"
+ "python-threadpoolctl"
+ "python-tika"
+ "python-twisted"
+ "python-txaio"
+ "python-tzlocal"
+ "python-urllib3"
+ "python-uvloop"
+ "python-watchdog"
+ "python-watchgod"
+ "python-wcwidth"
+ "python-websockets"
+ "python-whitenoise"
+ "python-whoosh"
+ "python-zope-interface")
+optdepends=("jbig2enc: smaller PDF size"
+ "postgresql: postgres database")
+source=("$url/releases/download/ngx-$pkgver/$pkgname-$pkgver.tar.xz"
+ "paperless.hook"
+ "paperless.sysusers"
+ "paperless.tmpfiles"
+ "paperless.target"
+ "paperless-consumer.service"
+ "paperless-scheduler.service"
+ "paperless-webserver.service")
+sha256sums=('f4971abf258382fb171a8d11f4c6181ca03b42334deb6d9305a04ea8f8eab91e'
+ '4e2ca67d7eedf14ba839af852907e1d76aa0a5ee5f4f740a3aee786c24035ace'
+ 'a002bd55b8e5b1ef89a10b907483c56df99d52d03951d464472d8c375e9835d6'
+ '3971deb5721eb4e01c2cc0348546cc22a861a1e84458061fce4fbd2cf01b2a1e'
+ '091dc2406139bcc52ca1f9acdb4e20723f4511b8ce6849e37c5ab88784dbac12'
+ '95d4e665f66f63432c22d9f139769f84575cb427362865931253d9651779ec22'
+ '544821a278617c6493e7a27f25266c39d6cc10a877247fa5f807c7eaf1a460cd'
+ '47e47fcadf029d85fa6304191afa6362b7675216cb82ed1bad8cce42c0378e7e')
+backup=("etc/paperless.conf")
+options=("!strip")
+install="paperless.install"
+
+prepare(){
+ # use arch linux canonical paths
+ sed -i "$pkgname/paperless.conf" \
+ -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|"
+ # remove hardcoded bind address
+ sed -i "$pkgname/gunicorn.conf.py" \
+ -e "s|bind = '0.0.0.0:8000'||"
+ # add custom dir for uploaded files
+ printf "\n# Uploads\n\nPAPERLESS_SCRATCH_DIR=/var/lib/paperless/uploads" >> "$pkgname/paperless.conf"
+ # add customizable bind address, will be used by paperless-webserver.service
+ printf "\n\n# Webserver\n\nGUNICORN_CMD_ARGS='--bind=127.0.0.1:8000'" >> "$pkgname/paperless.conf"
+}
+
+package(){
+ # program files
+ install -d "$pkgdir/usr/share/paperless" "$pkgdir/usr/bin"
+ cp -R "$pkgname"/* "$pkgdir/usr/share/paperless"
+ # main executable
+ chmod 755 "$pkgdir/usr/share/paperless/src/manage.py"
+ ln -s "/usr/share/paperless/src/manage.py" "$pkgdir/usr/bin/paperless-manage"
+ # config file
+ install -D -m 640 "$pkgname/paperless.conf" "$pkgdir/etc/paperless.conf"
+ rm "$pkgdir/usr/share/paperless/paperless.conf"
+ ln -s "/etc/paperless.conf" "$pkgdir/usr/share/paperless/paperless.conf"
+ # optional pacman hook
+ install -D -m 644 "paperless.hook" "$pkgdir/usr/share/paperless/docs/paperless.hook"
+ # user and files to create, ownership and permission to set
+ install -D -m 644 "paperless.sysusers" "$pkgdir/usr/lib/sysusers.d/paperless.conf"
+ install -D -m 644 "paperless.tmpfiles" "$pkgdir/usr/lib/tmpfiles.d/paperless.conf"
+ # service files
+ install -D -m 644 "paperless.target" "$pkgdir/usr/lib/systemd/system/paperless.target"
+ install -D -m 644 "paperless-consumer.service" "$pkgdir/usr/lib/systemd/system/paperless-consumer.service"
+ install -D -m 644 "paperless-scheduler.service" "$pkgdir/usr/lib/systemd/system/paperless-scheduler.service"
+ install -D -m 644 "paperless-webserver.service" "$pkgdir/usr/lib/systemd/system/paperless-webserver.service"
+}
diff --git a/paperless-consumer.service b/paperless-consumer.service
new file mode 100644
index 000000000000..754273c1acfa
--- /dev/null
+++ b/paperless-consumer.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Paperless consumer service
+After=network.target
+Requires=redis.service
+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/paperless-scheduler.service b/paperless-scheduler.service
new file mode 100644
index 000000000000..e2925459b749
--- /dev/null
+++ b/paperless-scheduler.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Paperless scheduler service
+After=network.target
+Requires=redis.service
+PartOf=paperless.target
+
+[Service]
+User=paperless
+Group=paperless
+WorkingDirectory=/usr/share/paperless/src
+ExecStart=/usr/bin/paperless-manage qcluster
+Restart=on-abort
+
+[Install]
+WantedBy=paperless.target
diff --git a/paperless-webserver.service b/paperless-webserver.service
new file mode 100644
index 000000000000..adf3845bea9a
--- /dev/null
+++ b/paperless-webserver.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Paperless webserver service
+After=network.target
+Requires=redis.service
+PartOf=paperless.target
+
+[Service]
+User=paperless
+Group=paperless
+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]
+WantedBy=paperless.target
diff --git a/paperless.hook b/paperless.hook
new file mode 100644
index 000000000000..0f78fee63eef
--- /dev/null
+++ b/paperless.hook
@@ -0,0 +1,9 @@
+[Trigger]
+Operation = Upgrade
+Type = Package
+Target = paperless-ngx
+
+[Action]
+Description = Migrating the Paperless database
+When = PostTransaction
+Exec = /usr/bin/runuser -u paperless -- /usr/bin/paperless-manage migrate --noinput
diff --git a/paperless.install b/paperless.install
new file mode 100644
index 000000000000..1b5792373d7a
--- /dev/null
+++ b/paperless.install
@@ -0,0 +1,36 @@
+post_install(){
+ cat <<INFO
+
+To complete the installation of this paperless fork, edit /etc/paperless.conf,
+then create the database with
+
+ sudo -u paperless paperless-manage migrate
+
+and create a super user with
+
+ sudo -u paperless paperless-manage createsuperuser
+
+Paperless services can be started together with
+
+ sudo systemctl start paperless.target
+
+INFO
+}
+
+post_upgrade(){
+ # warn the user if the provided hook is not being used
+ if [ ! -e "/etc/pacman.d/hooks/paperless.hook" ]; then
+ cat <<INFO
+
+To complete the update process of Paperless-ng, you should run eventual new migrations with
+
+ sudo -u paperless paperless-manage migrate
+
+This process can be automated by running once
+
+ sudo mkdir -p /etc/pacman.d/hooks/
+ sudo ln -s /usr/share/paperless/docs/paperless.hook /etc/pacman.d/hooks/
+
+INFO
+ fi
+}
diff --git a/paperless.sysusers b/paperless.sysusers
new file mode 100644
index 000000000000..fc84469b42cf
--- /dev/null
+++ b/paperless.sysusers
@@ -0,0 +1 @@
+u paperless - "Paperless user" /var/lib/paperless
diff --git a/paperless.target b/paperless.target
new file mode 100644
index 000000000000..2b95694600f5
--- /dev/null
+++ b/paperless.target
@@ -0,0 +1,8 @@
+[Unit]
+Description=Paperless services
+After=network.target
+Wants=paperless-webserver.service paperless-consumer.service paperless-scheduler.service
+Requires=redis.service
+
+[Install]
+WantedBy=multi-user.target
diff --git a/paperless.tmpfiles b/paperless.tmpfiles
new file mode 100644
index 000000000000..6d9934f5e315
--- /dev/null
+++ b/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