Paperless
Paperless 是一个开源文档管理系统,它可以索引您扫描的文档,并允许您轻松搜索文档和存储文档的元数据。本文档指的是 Paperless-ngx,它是 Paperless-ng 的社区维护分支,而 Paperless-ng 本身又是 原始 Paperless 项目的分支,这两个项目都已被放弃。
安装
安装 paperless-ngx-venvAUR 软件包。
文件夹
Paperless 安装到 /usr/share/paperless
。Paperless 的持久存储位于 /var/lib/paperless
,包含 media
文件夹、data
文件夹(默认包含 SQLite 数据库)、用于文档消耗的 consume
文件夹、临时 uploads
文件夹和 tmp
转换文件夹。consume
文件夹对 paperless
组中的每个人都具有写入权限。
消耗文件夹权限
如果您希望允许用户(例如 "http")将文档放入消耗文件夹中,请将他们添加到 paperless
用户组。
OCR 语言
如果您希望 Paperless 消耗非英语语言的文档,您需要安装相应的 tesseract 语言数据包。对于德语,应该是 tesseract-data-deu。
减小生成的 PDF 文档的大小
您可能需要安装可选依赖项 jbig2enc-gitAUR,以便 Paperless 可以使用它来减小生成的 PDF 文档的大小。
从 Paperless-ng 迁移
如果您已安装 paperless-ng 并希望迁移到 paperless-ngx-venvAUR,您可以安装 paperless-ngx-venvAUR,并在询问时选择删除 paperless-ng。数据不会丢失。不过,您仍然需要以 root 身份运行
# paperless-manage makemigrations
之后,以 paperless 用户身份应用通常的数据库迁移
[paperless]$ paperless-manage migrate
最后,重启 paperless.target
。
开始
启动/启用 paperless.target
。您的 Paperless 实例现在应该可以通过端口 8000 访问。
配置
有关 Paperless 配置的详细信息,请访问其官方文档。配置文件位于 /etc/paperless.conf
。
paperless
系统用户,并提供了一个 paperless-manage
命令,该命令应始终以 paperless
用户身份运行。有关示例,请参见下方。在官方文档中提到 python3 manage.py
的地方,都应使用 paperless-manage
命令。修改配置后,请不要忘记重启 paperless.target
。
根据您的需求调整配置
打开位于 /etc/paperless.conf
的配置文件,并根据您的需求调整参数,特别是与 OCR 相关的参数。有关各个设置的说明,请参阅官方文档。
设置密钥
首次安装后,您应该生成并设置一个密钥。您无需记住它,但由于它用于保护签名数据,因此您应该对其保密。要设置密钥,请取消注释并修改以下行
/etc/paperless.conf
#PAPERLESS_SECRET_KEY=change-me
要生成密钥并在配置文件中设置它,您可以简单地运行以下命令
# sed -i /etc/paperless.conf -e "s|#PAPERLESS_SECRET_KEY=change-me|PAPERLESS_SECRET_KEY=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 32)|"
运行数据库迁移
首次安装后以及更新后,您应该运行数据库迁移
[paperless]$ paperless-manage migrate
创建管理员用户
首次安装后,您应该为您的 Paperless 实例创建一个管理员用户
[paperless]$ paperless-manage createsuperuser
Nginx
安装 Nginx 并使用以下配置作为 Paperless 虚拟主机的起点
/etc/nginx/sites-available/paperless.domain.tld
server { server_name paperless.domain.tld; listen 80; listen [::]:80; location / { # Adjust host and port as required. proxy_pass https://127.0.0.1:8000/; # These configuration options are required for WebSockets to work. proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; } }
Pacman hook
要自动为软件包更新运行 Paperless 数据库的迁移,您可以利用包含的 pacman hook
# mkdir -vp /etc/pacman.d/hooks # ln -sv /usr/share/paperless/docs/paperless.hook /etc/pacman.d/hooks/
故障排除
尝试导入文档时记录 BadSignature 错误
如果您在尝试导入文档时看到 BadSignature
错误,则可能是因为位于 /etc/paperless.conf
的配置文件未被考虑,因为模板配置文件 /usr/share/paperless/paperless.conf
具有优先权。在这种情况下,删除或重命名 /usr/share/paperless/paperless.conf
并重启 paperless.target
。
关于错误配置的重试和超时的警告
如果您看到关于错误配置的重试和超时的警告,您可以安全地忽略它,并等待 python-django-qAUR 中的简单的上游修复。警告看起来像这样
gunicorn[29457]: /usr/lib/python3.9/site-packages/django_q/conf.py:136: UserWarning: Retry and timeout are misconfigured. Set retry larger than timeout, gunicorn[29457]: failure to do so will cause the tasks to be retriggered before completion. gunicorn[29457]: See https://django-q.readthedocs.io/en/latest/configure.html#retry for details. gunicorn[29457]: warn("""Retry and timeout are misconfigured. Set retry larger than timeout,
使用 ImageMagick 生成缩略图失败
您必须在 /etc/ImageMagick-7/policy.xml
中禁用策略规则。添加 <!--
和 -->
来注释掉以下行
/etc/ImageMagick-7/policy.xml
<!-- <policy domain="delegate" rights="none" pattern="gs" /> -->
请考虑 ImageMagick 文章开头提到的可能的安全隐患。另请注意,如果 ImageMagick 策略规则保持活动状态,Paperless 无论如何都会回退到使用 ghostscript。
消费者服务持续占用一个 CPU 核心 100%
取消注释您的 /etc/paperless.conf
配置文件中关于 PAPERLESS_CONSUMER_POLLING
设置的行
/etc/paperless.conf
PAPERLESS_CONSUMER_POLLING=10