Package Details: paperless-ng 1.5.0-1

Git Clone URL: https://aur.archlinux.org/paperless-ng.git (read-only, click to copy)
Package Base: paperless-ng
Description: A supercharged version of paperless: scan, index and archive all your physical documents
Upstream URL: https://github.com/jonaswinkler/paperless-ng
Licenses: GPL3
Conflicts: paperless
Submitter: AlphaJack
Maintainer: AlphaJack (amo)
Last Packager: AlphaJack
Votes: 6
Popularity: 0.29
First Submitted: 2021-04-11 09:35 (UTC)
Last Updated: 2021-08-25 20:36 (UTC)

Pinned Comments

AlphaJack commented on 2022-03-11 10:20 (UTC)

@qcasey thanks for the alternative, I've created the new package.
We may think about migrating ng to ngx in the future, at the moment one can choose what to install.

Latest Comments

amo commented on 2022-03-11 21:10 (UTC)

The wiki page is updated and contains instructions for migrating from ng to ngx.

qcasey commented on 2022-03-11 15:35 (UTC)

Thanks for creating that :)

AlphaJack commented on 2022-03-11 10:20 (UTC)

@qcasey thanks for the alternative, I've created the new package.
We may think about migrating ng to ngx in the future, at the moment one can choose what to install.

amo commented on 2022-03-11 05:53 (UTC)

Thanks @qcasey for your suggestion. I have been wondering too if paperless-ng is now abandoned but I didn't know about the new fork. It looks awesome!

However, I guess that two things should go first:

  1. As you pointed out on the new repo, we should first decide whether this new fork can be recognized as the successor. Maybe the linked issue is a better place to discuss this, as the discussion is already started there.

  2. The migration with the AUR package from ng to ngx should be tested on an archlinux virtual machine.

This being said, I do support the adoption of the fork once those points are checked. It's awesome that the paperless project is still further developed. We should bring the updates to AUR users and honor the efforts of the new fork.

qcasey commented on 2022-03-11 01:23 (UTC)

Hello, Paperless-ng appears abandoned, there's a group moving forward with a new fork at https://github.com/paperless-ngx/paperless-ngx - is this something we can upgrade to directly or should it go to a new pkgbuild?

trumee commented on 2022-03-05 14:16 (UTC) (edited on 2022-03-05 15:36 (UTC) by trumee)

I tried to upload a 2MB file via Paperless Dashboard home page and received an error "HTTP error: 413 Request Entity Too Large". There seems to be some sort of upload limit defined. Which file can i edit to change the upload size?


Fixed my nginx with,

# set max upload size
client_max_body_size 1G;

and problem went away.

amo commented on 2021-09-07 09:22 (UTC)

Thank you @eomanis for your detailed suggestion.

To me, following the very short archwiki article on setting up a redis instance is not daunting at all. Besides, if you feel that something is wrong with the default redis configuration, you should probably discuss it in the archwiki redis discussion page. Your suggestion reads to me like you might have a point, but I can't really tell. Anyway, I guess that this is not the right place to discuss redis setup optimizations.

eomanis commented on 2021-09-05 23:35 (UTC) (edited on 2021-09-05 23:54 (UTC) by eomanis)

Suggestion: Extend this package to include configuration for a minimally-privileged dedicated Redis instance

For me, one of the more daunting aspects of setting up paperless-ng was having to set up Redis. Also, Redis in its default configuration smells unnecessarily privileged – any process on the system can access it over its TCP socket. In the case of paperless-ng there is no communication with other applications through Redis, so paperless-ng may very well use a dedicated Redis instance running as paperless:paperless and only accessible by paperless-ng. Telling the Redis instance to not bind to a TCP socket but rather provide a UNIX socket file at a location only accessible by paperless-ng achieves this. I am successfully running paperless-ng like that.

Shipping such a configuration would require packaging two additional configuration files, and editing most of the existing files. Tasks outline:

  • Add systemd service unit for the Redis instance: /usr/lib/systemd/system/paperless-redis.service [1]
  • Add Redis configuration file: /etc/paperless-redis.conf [2]
  • All *.service files and paperless.target: Replace Requires=redis.service with Requires=paperless-redis.service
  • paperless-ng.tmpfiles: Add two lines, f /etc/paperless-redis.conf 0640 root paperless and d /var/lib/paperless/redis 0750 paperless paperless
  • PKGBUILD: Add /etc/paperless-redis.conf to the backup() array
  • PKGBUILD, prepare() function, defaults for /etc/paperless.conf: Add another sed expression that replaces #PAPERLESS_REDIS=redis://localhost:6379 with PAPERLESS_REDIS=unix:///var/lib/paperless/redis/redis.sock in the upstream configuration file

This should make the dedicated Redis instance "just work", and the user does not have to deal with Redis at all.

[1] /usr/lib/systemd/system/paperless-redis.service

[Unit]
Description=Paperless dedicated Redis service
PartOf=paperless.target

[Service]
Type=notify
User=paperless
Group=paperless
ExecStart=/usr/bin/redis-server /etc/paperless-redis.conf
TimeoutStartSec=60
TimeoutStopSec=60
CapabilityBoundingSet=
PrivateTmp=true
PrivateDevices=true
ProtectSystem=strict
ReadWritePaths=/var/lib/paperless/redis
RestrictAddressFamilies=AF_UNIX
ProtectHome=true
NoNewPrivileges=true
RuntimeDirectory=paperless-redis
RuntimeDirectoryMode=750
LimitNOFILE=10032

[Install]
WantedBy=paperless.target

[2] /etc/paperless-redis.conf

# Configuration for the paperless-ng dedicated Redis instance

# If you change any paths you may need to alter the "ReadWritePaths="
# directive in the "paperless-redis.service" systemd unit
# You can do so by creating a unit drop in at
# /etc/systemd/system/paperless-redis.service.d/read-write-paths.conf:
#   [Service]
#   ReadWritePaths=
#   ReadWritePaths=/your/custom/path /another/custom/path

# Disable TCP socket listening completely, a UNIX socket is used instead
# If port 0 is specified Redis will not listen on a TCP socket
port                 0
protected-mode       yes

# Listen on UNIX socket
# Redis URL:  unix:///var/lib/paperless/redis/redis.sock
unixsocket           /var/lib/paperless/redis/redis.sock
unixsocketperm       660

# Server behavior
timeout              0
daemonize            no
supervised           systemd
pidfile              /var/lib/paperless/redis/redis.pid
loglevel             warning
logfile              ""
databases            1
always-show-logo     no
set-proc-title       yes
proc-title-template  "{title} paperless dedicated instance"
# Working directory; database files go here
dir                  /var/lib/paperless/redis/
# Default database file
dbfilename           dump.rdb
# Persist the database after 300 seconds (5 minutes) if at least 1 key
# has changed
save                 300 1
# Write an additional append-only database file for increased crash
# resilience
appendonly           yes
appendfilename       appendonly.aof
appendfsync          everysec

amo commented on 2021-08-26 21:39 (UTC)

I had no issues. Did you try without AUR helper or maybe with yay?

harleypig commented on 2021-08-26 20:09 (UTC) (edited on 2021-08-26 20:10 (UTC) by harleypig)

When updating the paperless-ng package I get the following:

$ trizen -S paperless-ng
:: Pulling AUR changes: paperless-ng
error: unable to read sha1 file of .SRCINFO 
(3b2b19e6ab2884e3ef0f457213df7389e0c9ce0c)
fatal: Could not reset index file to revision 'HEAD'.
:: paperless-ng not found.

AlphaJack commented on 2021-08-25 20:39 (UTC)

Thank you for reporting the issue, I have packaged the legacy version of aioredis and listed it as a dependency starting from paperless-ng 1.5.0.
Hopefully this won't break anything and other components will be updated soon to support aioredis 2

harleypig commented on 2021-08-24 21:18 (UTC) (edited on 2021-08-24 21:19 (UTC) by harleypig)

I've never downgraded a package, I didn't think of doing that.

I've downgraded and ignored updates for python-aioredis-1.3.1.

This seems to have made things work.

Thanks

amo commented on 2021-08-23 21:19 (UTC)

It looks like django-q called aioredis, but oddly enough, the python-django-q package does not list python-aioredis as dependency.

Anyway, have you tried to downgrade python-aioredis? This could do the trick for now until upstream updates to the packages depending on aioredis (django-q?).

harleypig commented on 2021-08-23 16:54 (UTC)

Paperless-ng is not working for me. I tracked down and opened a bug with the project (found at https://github.com/jonaswinkler/paperless-ng/issues/1230 ).

This was their response:

Archlinux version of aioredis is at 2.0.0, whereas paperless-ng depends on 1.3.x - they have changed some interfaces, and other dependencies of paperless that use aioredis have not updated yet.

AlphaJack commented on 2021-07-27 21:37 (UTC)

Thank you for reporting the issue, I didn't notice that. What the package does now is removing the /usr/share/paperless/paperless.conf file, replacing it with a harmless symlink to /etc/paperless.conf, editable by the user and update-proof. This behaviour is common among many php packages, so I think this is the best way to go.

amo commented on 2021-07-27 18:08 (UTC)

Hello eomanis, you are right about this messy circumstance. I already reported the misleading precendence order to the paperless-ng dev here.

Anyway, your suggestion to not package the /usr/share/paperless/paperless.conf sounds good to me. What do you think AlphaJack?

eomanis commented on 2021-07-27 18:02 (UTC) (edited on 2021-07-27 18:05 (UTC) by eomanis)

Hello AlphaJack, thank you for providing this package and its systemd integration.

I managed to get paperless-ng running, but for a while I was thrown because paperless-ng did not appear to care about whatever I wrote in /etc/paperless.conf. It was very confusing. Turns out, the package also ships a /usr/share/paperless/paperless.conf which shadows the one in /etc. This is because paperless-ng only uses the first configuration file it can find.

One cannot put the configuration into /usr/share/paperless/paperless.conf as it is not included in the PKGBUILD's backup=() array and will therefore be overwritten when the package is updated. Effectively there is no way to run this package with anything else than its exact shipped configuration.

A solution would be to just not package the /usr/share/paperless/paperless.conf file, seeing that the PKGBUILD places a copy of it at /etc/paperless.conf.