From nobody Thu Feb 22 18:34:40 2024 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4TghdD2r2Wz5B95J; Thu, 22 Feb 2024 18:34:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TghdD2HVCz4hqj; Thu, 22 Feb 2024 18:34:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1708626880; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LtG43cynE63g39xOSFNGbMNiNQ4ib2975axUFuN/znY=; b=ZOSqzTYCTVECTFjvaYnEyCt/4SeL1nknIkH7EnXgobjdKbSXSdftyQ7hHpcQA72xHOO2Gy CE4vU08RbERrD/6RrMQhOXC60SguqqteiJd+apCHhPSYdLXbGlI5J3IMVAGgsi4mQk6Qex FhMHA3a6PvC5vWJdMUMhhZweQDZxdEH0tKBWw5AcD++xGQG0zkpwfESoEQFGUHHg60Piq5 UOmN/Qy2kVZ2B4qzfeE1zpm633Q27TqCoW46geB1qibNEqlmQRHG6In6kjNHkacL1xZwwD zZbicEpAQkOrVYUeh4uBaFxROVVK8QEVdpse4Su0W5DEY8M/nfmDYTPxq7t2Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1708626880; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LtG43cynE63g39xOSFNGbMNiNQ4ib2975axUFuN/znY=; b=jZZTqrUXDVE6U6U0SHtLSvLiK6vmL+f4QHGIx2y1BvTNmNCd4Vp7kCv/oxYhN6NaNMf0pn QDFiGG5FaZsi5Qk9otbNqiWPAcxNxhopSBNPPJLKUH60abl4nusDF7p5AOIYA9qa/gDpno KvBp8AF+7jpASwwIIYPCPyRi1+aLtchVhKJ+VvDpVMwf3LP24MRbnyYka1iMRXHgJGXonj xTHavpDUCXPgJ5URI4lNWCOtcTWoTMlLHWgTvCbEwU6IvZeq008Et+WYd52pF0vVljffO5 l2Qu2z8FlWwLwrx8ePJW1xIR+UKxXEKkfL1nGHDt2K8ovTugG4mzrm5jRLHz/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1708626880; a=rsa-sha256; cv=none; b=IZcs1zZdE5E5V58637/KrzXu5n0GOwlBn2ZTtK1rN97+2rcn+In6YBcjkU7DZns+lSVpNy 3ZbcDBpzg1g9p1VUiVkpi5CHM1gQVIIlFnEVY+XoysvELktHicKBY9LWn8JxLRcL9uhkLf GWc1J1sF8IWF7ZLKCibQaBl3zzJFPqL8jrogxBZY1qrCNk/AJxFdZy4iPVFLg4HSx4Ghsg Dh4TrgFi4rRwFb2xQddwpaI+feTpSSNImYir6isUa6gkmjFS1Hetcdm0v3/Fnqite8t7oV MwLZy/kGfB2mk+nxf6bCp315Pa/w3kNGXiSdNJL+Bq1LmYPdHC4BlzLBQpMB/w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TghdD0ykkzk4t; Thu, 22 Feb 2024 18:34:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 41MIYev7036127; Thu, 22 Feb 2024 18:34:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 41MIYeGk036124; Thu, 22 Feb 2024 18:34:40 GMT (envelope-from git) Date: Thu, 22 Feb 2024 18:34:40 GMT Message-Id: <202402221834.41MIYeGk036124@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Michael Gmelin Subject: git: 61fe359cf641 - main - deskutils/py-paperless-ngx: New port List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: grembo X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 61fe359cf641ced0712679b795047eda95f75c02 Auto-Submitted: auto-generated The branch main has been updated by grembo: URL: https://cgit.FreeBSD.org/ports/commit/?id=61fe359cf641ced0712679b795047eda95f75c02 commit 61fe359cf641ced0712679b795047eda95f75c02 Author: Michael Gmelin AuthorDate: 2024-02-18 20:03:51 +0000 Commit: Michael Gmelin CommitDate: 2024-02-22 18:33:06 +0000 deskutils/py-paperless-ngx: New port Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper. Paperless-ngx is the official successor to the original Paperless and Paperless-ng projects. --- deskutils/Makefile | 1 + deskutils/py-paperless-ngx/Makefile | 180 ++ deskutils/py-paperless-ngx/distinfo | 5 + deskutils/py-paperless-ngx/files/README.in | 1 + deskutils/py-paperless-ngx/files/nginx.conf.in | 54 + deskutils/py-paperless-ngx/files/paperless-beat.in | 49 + .../py-paperless-ngx/files/paperless-consumer.in | 49 + .../py-paperless-ngx/files/paperless-flower.in | 48 + .../py-paperless-ngx/files/paperless-migrate.in | 48 + .../py-paperless-ngx/files/paperless-ngx.7.in | 362 +++ .../py-paperless-ngx/files/paperless-webui.in | 58 + .../py-paperless-ngx/files/paperless-worker.in | 49 + .../py-paperless-ngx/files/patch-gunicorn.conf.py | 11 + .../files/patch-paperless.conf.example | 42 + ...ments_management_commands_document__consumer.py | 20 + .../files/patch-src_paperless_settings.py | 29 + deskutils/py-paperless-ngx/files/pkg-message.in | 7 + deskutils/py-paperless-ngx/files/sshd_config.in | 14 + deskutils/py-paperless-ngx/pkg-descr | 6 + deskutils/py-paperless-ngx/pkg-plist | 2856 ++++++++++++++++++++ 20 files changed, 3889 insertions(+) diff --git a/deskutils/Makefile b/deskutils/Makefile index e9c589209cb9..009af6c83416 100644 --- a/deskutils/Makefile +++ b/deskutils/Makefile @@ -230,6 +230,7 @@ SUBDIR += py-khal SUBDIR += py-khard SUBDIR += py-paperless + SUBDIR += py-paperless-ngx SUBDIR += py-py3status SUBDIR += py-pystash SUBDIR += py-send2trash diff --git a/deskutils/py-paperless-ngx/Makefile b/deskutils/py-paperless-ngx/Makefile new file mode 100644 index 000000000000..204480125afe --- /dev/null +++ b/deskutils/py-paperless-ngx/Makefile @@ -0,0 +1,180 @@ +PORTNAME= paperless-ngx +PORTVERSION= 2.5.0 +DISTVERSIONPREFIX= v +CATEGORIES= deskutils python +MASTER_SITES= https://github.com/${PORTNAME}/${PORTNAME}/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/:webui \ + GH:gh +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} +DISTFILES= ${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}${EXTRACT_SUFX}:webui + +MAINTAINER= grembo@FreeBSD.org +COMMENT= Community-supported supercharged version of paperless +WWW= https://docs.paperless-ngx.com + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}bleach>=6.1.0:www/py-bleach@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}concurrent-log-handler>=0.9.19:sysutils/py-concurrent-log-handler@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dateparser>=1.1.4:devel/py-dateparser@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-channels-redis>=4.2.0:www/py-dj42-channels-redis@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-django-allauth>=0.59.0:www/py-dj42-django-allauth@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-django-auditlog>=2.3.0:www/py-dj42-django-auditlog@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-django-celery-results>=2.5.1:www/py-dj42-django-celery-results@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-django-compression-middleware>=0.5.0:www/py-dj42-django-compression-middleware@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-django-cors-headers>=4.3.1:www/py-dj42-django-cors-headers@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-django-extensions>=3.2.3:www/py-dj42-django-extensions@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-django-filter>=23.5:www/py-dj42-django-filter@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-django-multiselectfield>=0.1.12:www/py-dj42-django-multiselectfield@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-djangorestframework-guardian>=0.3.0:www/py-dj42-djangorestframework-guardian@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}dj42-drf-writable-nested>=0.7.0:www/py-dj42-drf-writable-nested@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}filelock>=3.13.1:sysutils/py-filelock@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}flower>=2.0.1:www/py-flower@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}gotenberg-client>=0.5.0:converters/py-gotenberg-client@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}gunicorn>=21.2.0:www/py-gunicorn@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}h2>=4.1.0:www/py-h2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}hiredis>=2.0.0:databases/py-hiredis@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}httptools>=0.6.1:www/py-httptools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}imap-tools>=1.5.0:mail/py-imap-tools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}inotifyrecursive>=0.3.5_1:devel/py-inotifyrecursive@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}langdetect>=1.0.9:textproc/py-langdetect@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}mysqlclient>=2.2.1:databases/py-mysqlclient@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}nltk>=3.8.1:textproc/py-nltk@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}ocrmypdf>=15.4.4:textproc/py-ocrmypdf@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pathvalidate>=3.2.0:devel/py-pathvalidate@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pdf2image>=1.17.0:graphics/py-pdf2image@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pdftotext>=2.2.2:textproc/py-pdftotext@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}psycopg2>=2.9.9:databases/py-psycopg2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-dotenv>=1.0.0:www/py-python-dotenv@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-gnupg>=0.5.1:security/py-python-gnupg@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-ipware>=2.0.1:net/py-python-ipware@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}python-magic>=0.4.27:devel/py-python-magic@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyzbar>=0.1.9:graphics/py-pyzbar@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rapidfuzz>=3.6.1:devel/py-rapidfuzz@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}scikit-learn>=1.4.0:science/py-scikit-learn@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}setproctitle>=1.3.2:devel/py-setproctitle@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}tika-client>=0.5.0:textproc/py-tika-client@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}uvicorn>=0.25.0:www/py-uvicorn@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}uvloop>=0.17.0:devel/py-uvloop@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}watchdog>=4.0.0:devel/py-watchdog@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}watchfiles>=0.21.0:devel/py-watchfiles@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}websockets>=12.0:devel/py-websockets@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}whitenoise>=6.2.0:www/py-whitenoise@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}whoosh>=2.7.4:textproc/py-whoosh@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}yaml>=6.0.1:devel/py-yaml@${PY_FLAVOR} +RUN_DEPENDS:= ${BUILD_DEPENDS} +RUN_DEPENDS+= gpg2:security/gnupg \ + liberation-fonts-ttf>=2.1.3:x11-fonts/liberation-fonts-ttf \ + optipng:graphics/optipng \ + tesseract:graphics/tesseract \ + unpaper:graphics/unpaper + +USES= python shebangfix tar:xz +USE_GITHUB= yes +GH_ACCOUNT= paperless-ngx +USE_RC_SUBR= paperless-beat \ + paperless-consumer \ + paperless-flower \ + paperless-migrate \ + paperless-webui \ + paperless-worker + +SHEBANG_FILES= ${WRKSRC}/src/manage.py + +CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*paperless + +NO_ARCH= yes + +SUB_FILES= nginx.conf paperless-ngx.7 pkg-message README sshd_config +SUB_LIST= CHOWN=${CHOWN} \ + ECHO=${ECHO} \ + EGREP=${EGREP} \ + PKGBASE=${PKGBASE} \ + PYTHON_CMD=${PYTHON_CMD} \ + PYTHONPREFIX_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR} \ + RM=${RM:Q} \ + TOUCH=${TOUCH} + +USERS= paperless +GROUPS= paperless + +PORTDOCS= * + +OPTIONS_DEFINE= DOCS EXAMPLES +OPTIONS_DEFAULT= IMAGICK7_X11 +OPTIONS_SINGLE= IMAGICK +OPTIONS_SINGLE_IMAGICK= IMAGICK6_NOX11 IMAGICK6_X11 IMAGICK7_NOX11 IMAGICK7_X11 + +IMAGICK6_NOX11_DESC= ImageMagick6 without X11 support +IMAGICK6_X11_DESC= ImageMagick6 with X11 support +IMAGICK7_NOX11_DESC= ImageMagick7 without X11 support +IMAGICK7_X11_DESC= ImageMagick7 with X11 support +IMAGICK_DESC= ${IMAGEMAGICK_DESC} + +IMAGICK6_NOX11_USES= magick:6,run,nox11 +IMAGICK6_X11_USES= magick:6,run +IMAGICK7_NOX11_USES= magick:7,run,nox11 +IMAGICK7_X11_USES= magick:7,run + +PAPERLESS_STATICDIR= ${WRKSRC}/static + +post-patch: + @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \ + ${WRKSRC}/src/paperless/settings.py + +do-build: + @${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \ + -d ${PYTHONPREFIX_SITELIBDIR} \ + -x ".*/tests/" \ + -f ${WRKSRC}/src + @${PYTHON_CMD} -O ${PYTHON_LIBDIR}/compileall.py \ + -d ${PYTHONPREFIX_SITELIBDIR} \ + -x ".*/tests/" \ + -f ${WRKSRC}/src + @${PYTHON_CMD} -O ${PYTHON_LIBDIR}/compileall.py \ + -d ${PYTHONPREFIX_SITELIBDIR} \ + -f ${WRKSRC}/gunicorn.conf.py + @${RM} -r ${PAPERLESS_STATICDIR} + @${SETENV} \ + PAPERLESS_STATICDIR=${PAPERLESS_STATICDIR} \ + ${PYTHON_CMD} ${WRKSRC}/src/manage.py collectstatic -i tests + +do-install: + @${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless + @cd ${WRKSRC}/resources && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR} + @cd ${WRKSRC}/src && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless + @cd ${WRKSRC} && ${COPYTREE_SHARE} gunicorn.conf.py \ + ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless + @${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR} -name '*.orig' -delete + @${RLN} ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless/manage.py \ + ${STAGEDIR}${PREFIX}/bin/paperless + @${CHMOD} +x ${STAGEDIR}${PREFIX}/bin/paperless + @${SED} -e 's|%%WWWDIR%%|${WWWDIR}|g;' \ + ${WRKSRC}/paperless.conf.example \ + > ${STAGEDIR}${PREFIX}/etc/paperless.conf.sample + @${MKDIR} ${STAGEDIR}/var/db/paperless/consume/input \ + ${STAGEDIR}/var/db/paperless/data/log \ + ${STAGEDIR}/var/db/paperless/media \ + ${STAGEDIR}/var/db/paperless/nltkdata + ${INSTALL_MAN} ${WRKDIR}/paperless-ngx.7 ${STAGEDIR}${PREFIX}/share/man/man7 + ${MKDIR} ${STAGEDIR}${WWWDIR} + @cd ${WRKDIR}/${PORTNAME} && ${COPYTREE_SHARE} static ${STAGEDIR}${WWWDIR} + @${MKDIR} ${STAGEDIR}/var/run/paperless + +post-install-DOCS-on: + @${MKDIR} ${STAGEDIR}${DOCSDIR}/ + @cd ${WRKSRC}/docs && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR} + +post-install-EXAMPLES-on: + @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} + ${INSTALL_DATA} \ + ${WRKDIR}/README \ + ${WRKDIR}/nginx.conf \ + ${WRKDIR}/sshd_config \ + ${STAGEDIR}${EXAMPLESDIR} + +.include diff --git a/deskutils/py-paperless-ngx/distinfo b/deskutils/py-paperless-ngx/distinfo new file mode 100644 index 000000000000..96f2f2b55a7c --- /dev/null +++ b/deskutils/py-paperless-ngx/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1707783446 +SHA256 (paperless-ngx-v2.5.0.tar.xz) = fa0b90cf9203d1aa89dbf687c43ea103cd616eb7725ae2c6cb6d2ead4d66de6a +SIZE (paperless-ngx-v2.5.0.tar.xz) = 62063416 +SHA256 (paperless-ngx-paperless-ngx-v2.5.0_GH0.tar.gz) = 805345b849eb40358562e85b633cab9d6a264ff9e886c9af2d6313ebca281cce +SIZE (paperless-ngx-paperless-ngx-v2.5.0_GH0.tar.gz) = 48300940 diff --git a/deskutils/py-paperless-ngx/files/README.in b/deskutils/py-paperless-ngx/files/README.in new file mode 100644 index 000000000000..bb4fc88e205d --- /dev/null +++ b/deskutils/py-paperless-ngx/files/README.in @@ -0,0 +1 @@ +Please see `man paperless' for details on how to use the paperless examples. diff --git a/deskutils/py-paperless-ngx/files/nginx.conf.in b/deskutils/py-paperless-ngx/files/nginx.conf.in new file mode 100644 index 000000000000..a27919949ec9 --- /dev/null +++ b/deskutils/py-paperless-ngx/files/nginx.conf.in @@ -0,0 +1,54 @@ +worker_processes 1; +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + + #sendfile off; + keepalive_timeout 65; + + upstream django { + server 127.0.0.1:8000; + } + + server { + listen 443 ssl http2; + server_name example.com; + + ssl_certificate selfsigned.crt; + ssl_certificate_key selfsigned.key; + + location /static/ { + alias %%WWWDIR%%/static/; + } + + location / { + proxy_pass http://django; + include uwsgi_params; + proxy_set_header Host $host; + proxy_http_version 1.1; + } + + location /ws/status/ { + proxy_pass http://django/ws/status/; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + + #location /flower/ { + # proxy_pass http://127.0.0.1:5555; + # proxy_set_header Host 127.0.0.1; + # proxy_http_version 1.1; + #} + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/local/www/nginx-dist; + } + } +} diff --git a/deskutils/py-paperless-ngx/files/paperless-beat.in b/deskutils/py-paperless-ngx/files/paperless-beat.in new file mode 100755 index 000000000000..76c977d9c2ea --- /dev/null +++ b/deskutils/py-paperless-ngx/files/paperless-beat.in @@ -0,0 +1,49 @@ +#!/bin/sh + +# PROVIDE: paperless-beat +# REQUIRE: LOGIN +# BEFORE: paperless-consumer +# KEYWORD: shutdown +# +# Add the following line(s) to /etc/rc.conf to enable the paperless +# celery beat process: +# +# paperless_beat_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable +# paperless_beat +# paperless_beat_log_facility(str): Set to "daemon" by default. +# Beat logging syslog facility. +# paperless_beat_log_priority(str): Set to "notice" by default. +# Beat logging syslog priority. +# paperless_beat_log_tag(str): Set to "paperless-beat" by default. +# Beat logging syslog tag. + +. /etc/rc.subr + +name="paperless_beat" +rcvar="${name}_enable" + +# Set defaults +paperless_beat_enable=${paperless_beat_enable:-"NO"} +paperless_beat_daemon_user=${paperless_beat_user:-"paperless"} +paperless_beat_log_facility=${paperless_beat_log_facility:-"daemon"} +paperless_beat_log_priority=${paperless_beat_log_priority:-"notice"} +paperless_beat_log_tag=${paperless_beat_log_tag:-"paperless-beat"} + +paperless_beat_env="LANG=en_US.UTF-8 PATH=$PATH:%%PREFIX%%/bin \ + PYTHONPATH=%%PYTHONPREFIX_SITELIBDIR%%/paperless" + +pidfile="/var/run/paperless/beat.pid" +procname="%%PYTHON_CMD%%" +command="/usr/sbin/daemon" +command_args="-cS -u ${paperless_beat_daemon_user} \ + -p ${pidfile} \ + -t paperless-beat \ + -l ${paperless_beat_log_facility} \ + -s ${paperless_beat_log_priority} \ + -T ${paperless_beat_log_tag} \ + %%PREFIX%%/bin/celery \ + --app paperless beat --loglevel INFO" + +load_rc_config ${name} +run_rc_command "$1" diff --git a/deskutils/py-paperless-ngx/files/paperless-consumer.in b/deskutils/py-paperless-ngx/files/paperless-consumer.in new file mode 100755 index 000000000000..806003623d2d --- /dev/null +++ b/deskutils/py-paperless-ngx/files/paperless-consumer.in @@ -0,0 +1,49 @@ +#!/bin/sh + +# PROVIDE: paperless-consumer +# REQUIRE: LOGIN +# BEFORE: paperless-flower +# KEYWORD: shutdown +# +# Add the following line(s) to /etc/rc.conf to enable the paperless +# celery consumer process: +# +# paperless_consumer_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable +# paperless_consumer +# paperless_consumer_log_facility(str): Set to "daemon" by default. +# Consumer logging syslog facility. +# paperless_consumer_log_priority(str): Set to "notice" by default. +# Consumer logging syslog priority. +# paperless_consumer_log_tag(str): Set to "paperless-consumer" by default. +# Consumer logging syslog tag. + +. /etc/rc.subr + +name="paperless_consumer" +rcvar="${name}_enable" + +# Set defaults +paperless_consumer_enable=${paperless_consumer_enable:-"NO"} +paperless_consumer_daemon_user=${paperless_consumer_user:-"paperless"} +paperless_consumer_log_facility=${paperless_consumer_log_facility:-"daemon"} +paperless_consumer_log_priority=${paperless_consumer_log_priority:-"notice"} +paperless_consumer_log_tag=${paperless_consumer_log_tag:-"paperless-consumer"} + +paperless_consumer_env="LANG=en_US.UTF-8 PATH=$PATH:%%PREFIX%%/bin\ + PYTHONPATH=%%PYTHONPREFIX_SITELIBDIR%%/paperless" + +sig_stop="INT" +pidfile="/var/run/paperless/consumer.pid" +procname="%%PYTHON_CMD%%" +command="/usr/sbin/daemon" +command_args="-cS -u ${paperless_consumer_daemon_user} \ + -p ${pidfile} \ + -t paperless-consumer \ + -l ${paperless_consumer_log_facility} \ + -s ${paperless_consumer_log_priority} \ + -T ${paperless_consumer_log_tag} \ + %%PREFIX%%/bin/paperless document_consumer" + +load_rc_config ${name} +run_rc_command "$1" diff --git a/deskutils/py-paperless-ngx/files/paperless-flower.in b/deskutils/py-paperless-ngx/files/paperless-flower.in new file mode 100755 index 000000000000..87f5942f365a --- /dev/null +++ b/deskutils/py-paperless-ngx/files/paperless-flower.in @@ -0,0 +1,48 @@ +#!/bin/sh + +# PROVIDE: paperless-flower +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following line(s) to /etc/rc.conf to enable the paperless +# celery flower process: +# +# paperless_flower_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable +# paperless_flower +# paperless_flower_log_facility(str): Set to "daemon" by default. +# Flower logging syslog facility. +# paperless_flower_log_priority(str): Set to "notice" by default. +# Flower logging syslog priority. +# paperless_flower_log_tag(str): Set to "paperless-flower" by default. +# Flower logging syslog tag. + +. /etc/rc.subr + +name="paperless_flower" +rcvar="${name}_enable" + +# Set defaults +paperless_flower_enable=${paperless_flower_enable:-"NO"} +paperless_flower_daemon_user=${paperless_flower_user:-"paperless"} +paperless_flower_log_facility=${paperless_flower_log_facility:-"daemon"} +paperless_flower_log_priority=${paperless_flower_log_priority:-"notice"} +paperless_flower_log_tag=${paperless_flower_log_tag:-"paperless-flower"} + +paperless_flower_env="LANG=en_US.UTF-8 PATH=$PATH:%%PREFIX%%/bin \ + PYTHONPATH=%%PYTHONPREFIX_SITELIBDIR%%/paperless" + +pidfile="/var/run/paperless/flower.pid" +procname="%%PYTHON_CMD%%" +command="/usr/sbin/daemon" +command_args="-cS -u ${paperless_flower_daemon_user} \ + -p ${pidfile} \ + -t paperless-flower \ + -l ${paperless_flower_log_facility} \ + -s ${paperless_flower_log_priority} \ + -T ${paperless_flower_log_tag} \ + %%PREFIX%%/bin/celery \ + --app paperless flower --url-prefix=flower --loglevel INFO" + +load_rc_config ${name} +run_rc_command "$1" diff --git a/deskutils/py-paperless-ngx/files/paperless-migrate.in b/deskutils/py-paperless-ngx/files/paperless-migrate.in new file mode 100755 index 000000000000..596fa621e8dc --- /dev/null +++ b/deskutils/py-paperless-ngx/files/paperless-migrate.in @@ -0,0 +1,48 @@ +#!/bin/sh + +# PROVIDE: paperless-migrate +# REQUIRE: LOGIN mysql postgresql redis +# BEFORE: paperless-webui +# KEYWORD: shutdown +# +# Add the following line(s) to /etc/rc.conf to enable running paperless +# migrations: +# +# paperless_migrate_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable +# paperless_migrate +# paperless_migrate_log_facility(str): Set to "daemon" by default. +# Migrate logging syslog facility. +# paperless_migrate_log_priority(str): Set to "notice" by default. +# Migrate logging syslog priority. +# paperless_migrate_log_tag(str): Set to "paperless-migrate" by default. +# Migrate logging syslog tag. + +. /etc/rc.subr + +name="paperless_migrate" +rcvar="${name}_enable" + +# Set defaults +paperless_migrate_enable=${paperless_migrate_enable:-"NO"} +paperless_migrate_user=${paperless_migrate_user:-"paperless"} +paperless_migrate_log_facility=${paperless_migrate_log_facility:-"daemon"} +paperless_migrate_log_priority=${paperless_migrate_log_priority:-"notice"} +paperless_migrate_log_tag=${paperless_migrate_log_tag:-"paperless-migrate"} + +paperless_migrate_env="LANG=en_US.UTF-8 PATH=$PATH:%%PREFIX%%/bin \ + PYTHONPATH=%%PYTHONPREFIX_SITELIBDIR%%/paperless" + +start_cmd="${name}_run | logger -s -t '$paperless_migrate_log_tag'" +stop_cmd=":" + +paperless_migrate_run() +{ + echo "Applying potential migrations to ${name}." + env ${paperless_migrate_env} su \ + -m ${paperless_migrate_user} \ + -c 'sh -c "%%PREFIX%%/bin/paperless migrate --no-color -v 0"' +} + +load_rc_config ${name} +run_rc_command "$1" diff --git a/deskutils/py-paperless-ngx/files/paperless-ngx.7.in b/deskutils/py-paperless-ngx/files/paperless-ngx.7.in new file mode 100644 index 000000000000..d965f27802b9 --- /dev/null +++ b/deskutils/py-paperless-ngx/files/paperless-ngx.7.in @@ -0,0 +1,362 @@ +.\" +.\" Copyright (c) 2024 Michael Gmelin +.\" +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd February 22, 2024 +.Dt PAPERLESS-NGX 7 +.Os +.Sh NAME +.Nm paperless-ngx +.Nd Index and archive scanned paper documents - installation +.Sh SYNOPSIS +.Nm pkg install %%PKGBASE%% +.Sh DESCRIPTION +.Em Paperless-ngx +is a Django-based document management system that transforms +physical documents into a searchable online archive. +It is the successor of the original Paperless and Paperless-ng projects. +.Pp +It consists of multiple parts, a web UI and a couple of backend +services for consuming and processing documents. +.Pp +This man page documents how the +.Fx +port is installed and configured. +It assumes that the paperless-ngx package was already installed, e.g., from the +.Fx +package repo as described in +.Sx SYNOPSIS . +.Pp +.Em IMPORTANT : +Please note that upgrading an existing installation of +deskutils/paperless needs special precautions. +See +.Sx UPGRADING FROM PAPERLESS +for how to approach that. +.Pp +For more information about using paperless-ngx, see +the official paperless-ngx documentation +.Pa ( https://docs.paperless-ngx.com ) . +.Pp +The package creates a symlink from +.Pa %%PYTHONPREFIX_SITELIBDIR%%/paperless/manage.py +to +.Pa %%PREFIX%%/bin/paperless +for convenience reasons, so whenever the official +documentation mentions +.Em manage.py +it can be substituted with +.Pa %%PREFIX%%/bin/paperless +or simply +.Pa paperless . +.Pp +.Em Paperless-ngx always needs to be run using the correct system user +and a UTF-8 codepage. +.Pp +The package %%PKGBASE%% created a user +.Em paperless +with the following home directory layout, setting appropriate +restrictive access permissions: +.Bl -tag -width "/var" +.It Pa /var/db/paperless +home directory (only writeable by root) +.Bl -tag -width "consume/" -compact +.It Pa consume/ +Consume directory writable by root, used as chroot directory +for sftp access (see below). +.Bl -tag -width "123" -compact +.It Pa input/ +Input files are dropped in there to be processed by the +paperless document consumer - either directly or via +a mechanism like sftp. +.El +.It Pa data/ +Contains paperless-ngx's data, including its SQLite database +unless an external database like PostgreSQL or MariaDB is used. +.Bl -tag -width "123" -compact +.It Pa log/ +This is where paperless stored its log files +(on top of what the services write to syslog). +.El +.It Pa media/ +Directory used by paperless-ngx to store original files and +thumbnails. +.It Pa nltkdata/ +Directory containing data used for natural language processing. +.El +.El +.Sh BACKEND SETUP +Paperless needs access to a running redis instance, which can be +installed locally: +.Bd -literal -offset indent +pkg install redis +service redis enable +service redis start +.Ed +.Pp +Modify +.Pa %%PREFIX%%/etc/paperless.conf +to match the configured credentials (when running on localhost, +it is possible to use no special credentials). +.Pp +The URL paperless is hosted on needs to be configued by setting +.Va PAPERLESS_URL , +it is also possible to tune +.Va PAPERLESS_THREADS_PER_WORKER +in the same configuration file to limit the impact on system +performance. +.Pp +Now, the database needs to be initialized. +This can be accomplished by running +.Bd -literal -offset indent +service paperless-migrate onestart +.Ed +.Pp +In case database migrations should be applied on every +system start, paperless-migrate can be enabled to run on boot: +.Bd -literal -offset indent +service paperless-migrate enable +.Ed +.Pp +Next, mandatory backend services are enabled +.Bd -literal -offset indent +service paperless-beat enable +service paperless-consumer enable +service paperless-webui enable +service paperless-worker enable +.Ed +.Pp +and subsequently started +.Bd -literal -offset indent +service paperless-beat start +service paperless-consumer start +service paperless-webui start +service paperless-worker start +.Ed +.Sh NLTK DATA +In order to process scanned documents using machine learning, +paperless-ngx requires NLTK (natural language toolkit) data. +The required files can be downloaded by using these commands: +.Bd -literal -offset indent +%%PYTHON_CMD%% -m nltk.downloader \\ + stopwords punkt -d /var/db/paperless/nltkdata +.Ed +.Pp +Normally, the document classifier is run automatically by +Celery, but it can also be initiated manually by calling +.Bd -literal -offset indent +su -l paperless \\ + -c '%%PREFIX%%/bin/paperless document_create_classifier' +.Ed +.Sh OPTIONAL FLOWER SERVICE +paperless-ngx makes use of Celery to control a cluster of workers. +There is a component called flower which can be enabled optionally +to monitor the cluster. +It can be enabled and started like this: +.Bd -literal -offset indent +service paperless-flower enable +service paperless-flower start +.Ed +.Sh WEB UI SETUP +Before using the web ui, make sure to create a super user and assign +a password +.Bd -literal -offset indent +su -l paperless -c '%%PREFIX%%/bin/paperless createsuperuser' +.Ed +.Pp +It is recommended to host the web component using a real +web server, e.g., nginx: +.Bd -literal -offset indent +pkg install nginx +.Ed +.Pp +Copy-in basic server configuration: +.Bd -literal -offset indent +cp %%EXAMPLESDIR%%/nginx.conf \\ + %%PREFIX%%/etc/nginx/nginx.conf +.Ed +.Pp +This server configuration contains TLS certificates, which +need to be created by the administrator. +See below for an example of how to create a self-signed +certificate to get started: +.Bd -literal -offset indent +openssl req -x509 -nodes -days 365 -newkey rsa:4096 \\ + -keyout %%PREFIX%%/etc/nginx/selfsigned.key \\ + -out %%PREFIX%%/etc/nginx/selfsigned.crt +.Ed +.Pp +Enable and start nginx: +.Bd -literal -offset indent +service nginx enable +service nginx start +.Ed +.Pp +The default nginx.conf can be adapted by the administrator to their +needs. +In case the optional flower service was enabled earlier, the commented +out block in the example file can be uncommented to make flower available +at /flower. +.Pp +.Em \&It is important to properly secure a public facing web server. +.Em Doing this properly is up to the administrator. +.Sh SFTP SETUP +Setting up +.Em sftp +enabled direct upload of files to be processed by the paperless +consumer. +Some scanners allow configuring sftp with key based authentication, +which is convenient as it scans directly to the paperless processing +pipeline. +.Pp +In case paperless is using a dedicated instance of +.Xr sshd 8 , +access can be limited to the paperless user by adding +these lines to +.Pa /etc/ssh/sshd_config : +.Bd -literal -offset indent +# Only include if sshd is dedicated to paperless +# otherwise you'll lock yourself out +AllowUsers paperless +.Ed +.Pp +The following block limits the paperless user to using the +.Xr sftp 1 +protocol and locks it into the consume directory: +.Bd -literal -offset indent +# paperless can only do sftp and is dropped into correct directory +Match User paperless + ChrootDirectory %h/consume + ForceCommand internal-sftp -u 0077 -d /input + AllowTcpForwarding no + X11Forwarding no + PasswordAuthentication no +.Ed +.Pp +The public keys of authorized users/devices need to be added to +.Pa /var/db/paperless/.ssh/authorized_keys : +.Bd -literal -offset indent +mkdir -p /var/db/paperless/.ssh +cat path/to/pubkey >>/var/db/paperless/.ssh/authorized_keys +.Ed +.Pp +Make sure +.Xr sshd 8 +is enabled and restart (or reload) it: +.Bd -literal -offset indent +service sshd enable +service sshd restart +.Ed +.Pp +The user will be dropped into the correct directory, so uploading +a file is as simple as: +.Bd -literal -offset indent +echo put file.pdf | sftp -b - paperless@host +.Ed +.Sh UPGRADING FROM PAPERLESS +In case deskutils/paperless is installed, follow the upgrading +guide at: +.Pa https://docs.paperless-ngx.com/setup/#migrating-from-paperless +.Pp +This guide is for a docker based installation, so here a few basic +hints for upgrading a +.Fx +based installation: +.Bl -bullet -compact +.It +There need to be good and working backups before migrating +.It +In case PGP encryption was used, files need to be decrypted first +by using the existing installation of deskutils/py-paperless. +See +.Pa https://github.com/the-paperless-project/paperless/issues/714 +for a description on how to do this and potential pitfalls. +The basic idea is to comment out lines 95 and 96 in +.Pa change_storage_type.py +and then run: +.Bd -literal -offset indent +su -l paperless -c \\ + '%%PREFIX%%/bin/paperless change_storage_type gpg unencrypted' +.Ed +.Pp +.It +Deinstall py-paperless (it might be good to keep a backup of the +package). +.It +Move the old paperless configuration file out of the way before +installing paperless-ngx: +.Bd -literal -offset indent +mv %%PREFIX%%/etc/paperless.conf \\ + %%PREFIX%%/etc/paperless.conf.old +.Ed +.Pp +.It +Install paperless-ngx: +.Bd -literal -offset indent +pkg install %%PKGBASE%% +.Ed +.Pp +.It +Configure +.Pa %%PREFIX%%/etc/paperless.conf +as described above. +.It +Re-index documents: +.Bd -literal -offset indent +su -l paperless \\ + -c '%%PREFIX%%/bin/paperless document_index reindex' +.Ed +.Pp +.It +Check if documents are okay: +.Bd -literal -offset indent +su -l paperless \\ + -c '%%PREFIX%%/bin/paperless document_sanity_checker' +.Ed +.Pp +.It +In general, things should be expected to fail, so being able to +restore from backup is vital. +.El +.Sh FILES +.Bl -tag -width ".Pa %%PREFIX%%/etc/paperless.conf" -compact +.It Pa %%PREFIX%%/etc/paperless.conf +See +.Pa %%PREFIX%%/etc/paperless.conf.sample +for an example. +.It Pa %%EXAMPLESDIR%% +Configuration examples, complementary to this man page. +.El +.Sh SEE ALSO +.Xr sftp 1 , +.Xr sshd_config 5 , +.Xr ports 7 , +.Xr daemon 8 , +.Xr service 8 +.Pp +.Pa https://docs.paperless-nginx.com +.Sh AUTHORS +.An -nosplit +This manual page was written by +.An Michael Gmelin Aq Mt grembo@FreeBSD.org . diff --git a/deskutils/py-paperless-ngx/files/paperless-webui.in b/deskutils/py-paperless-ngx/files/paperless-webui.in new file mode 100755 index 000000000000..1ef8477b58ee --- /dev/null +++ b/deskutils/py-paperless-ngx/files/paperless-webui.in @@ -0,0 +1,58 @@ +#!/bin/sh + +# PROVIDE: paperless-webui +# REQUIRE: LOGIN +# BEFORE: paperless-worker +# KEYWORD: shutdown +# +# Add the following line(s) to /etc/rc.conf to enable the paperless +# celery webui process: +# +# paperless_webui_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable +# paperless_webui +# paperless_webui_log_facility(str): Set to "daemon" by default. +# WebUI logging syslog facility. +# paperless_webui_log_priority(str): Set to "notice" by default. +# WebUI logging syslog priority. +# paperless_webui_log_tag(str): Set to "paperless-webui" by default. +# WebUI logging syslog tag. +# paperless_webui_restart_delay(int): Set to "5" by default. +# WebUI automatic restart delay in +# seconds. + +. /etc/rc.subr + +name="paperless_webui" +rcvar="${name}_enable" + +# Set defaults +paperless_webui_enable=${paperless_webui_enable:-"NO"} +paperless_webui_daemon_user=${paperless_webui_user:-"paperless"} +paperless_webui_log_facility=${paperless_webui_log_facility:-"daemon"} +paperless_webui_log_priority=${paperless_webui_log_priority:-"notice"} +paperless_webui_log_tag=${paperless_webui_log_tag:-"paperless-webui"} +paperless_webui_listen_address=${paperless_webui_listen_address:-"127.0.0.1"} +paperless_webui_listen_port=${paperless_webui_listen_port:-"8000"} +paperless_webui_restart_delay=${paperless_webui_restart_delay:-"5"} + +paperless_webui_env="LANG=en_US.UTF-8 PATH=$PATH:%%PREFIX%%/bin\ + PYTHONPATH=%%PYTHONPREFIX_SITELIBDIR%%/paperless \ + PAPERLESS_BIND_ADDR=${paperless_webui_listen_address} \ + PAPERLESS_PORT=${paperless_webui_listen_port}" + +pidfile="/var/run/paperless/webui.pid" +command="/usr/sbin/daemon" +command_args="-cS -u ${paperless_webui_daemon_user} \ + -P ${pidfile} \ + -t paperless-webui \ + -l ${paperless_webui_log_facility} \ + -s ${paperless_webui_log_priority} \ + -T ${paperless_webui_log_tag} \ + -R ${paperless_webui_restart_delay} \ + %%PREFIX%%/bin/gunicorn \ + -c %%PYTHONPREFIX_SITELIBDIR%%/paperless/gunicorn.conf.py \ + paperless.asgi:application" + +load_rc_config ${name} +run_rc_command "$1" diff --git a/deskutils/py-paperless-ngx/files/paperless-worker.in b/deskutils/py-paperless-ngx/files/paperless-worker.in new file mode 100755 index 000000000000..51568e68415a --- /dev/null +++ b/deskutils/py-paperless-ngx/files/paperless-worker.in @@ -0,0 +1,49 @@ +#!/bin/sh + +# PROVIDE: paperless-worker +# REQUIRE: LOGIN +# BEFORE: paperless-beat +# KEYWORD: shutdown +# +# Add the following line(s) to /etc/rc.conf to enable the paperless +# worker: +# +# paperless_worker_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable +# paperless_worker *** 3069 LINES SKIPPED ***