diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 1ad06f12e..0d2302b72 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -42,7 +42,15 @@ body: id: logs attributes: label: Webserver logs - description: If available, post any logs from the web server related to your issue. + description: Logs from the web server related to your issue. + render: bash + validations: + required: true + - type: textarea + id: logs_browser + attributes: + label: Browser logs + description: Logs from the web browser related to your issue, if needed render: bash - type: input id: version diff --git a/README.md b/README.md index 8b1eb5e4a..9ae1443f4 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Crowdin](https://badges.crowdin.net/paperless-ngx/localized.svg)](https://crowdin.com/project/paperless-ngx) [![Documentation Status](https://readthedocs.org/projects/paperless-ngx/badge/?version=latest)](https://paperless-ngx.readthedocs.io/en/latest/?badge=latest) [![Coverage Status](https://coveralls.io/repos/github/paperless-ngx/paperless-ngx/badge.svg?branch=master)](https://coveralls.io/github/paperless-ngx/paperless-ngx?branch=master) -[![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#paperless:adnidor.de) +[![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/%23paperlessngx%3Amatrix.org)

@@ -105,6 +105,7 @@ Paperless has been around a while now, and people are starting to build stuff on - [Paperless App](https://github.com/bauerj/paperless_app): An Android/iOS app for Paperless-ngx. Also works with the original Paperless and Paperless-ng. - [Paperless Share](https://github.com/qcasey/paperless_share). Share any files from your Android application with paperless. Very simple, but works with all of the mobile scanning apps out there that allow you to share scanned documents. - [Scan to Paperless](https://github.com/sbrunner/scan-to-paperless): Scan and prepare (crop, deskew, OCR, ...) your documents for Paperless. +- [Paperless Mobile](https://github.com/astubenbord/paperless-mobile): A modern, feature rich mobile application for Paperless. These projects also exist, but their status and compatibility with paperless-ngx is unknown. diff --git a/docker/compose/docker-compose.mariadb-tika.yml b/docker/compose/docker-compose.mariadb-tika.yml index b3699e4d7..22f69ba4f 100644 --- a/docker/compose/docker-compose.mariadb-tika.yml +++ b/docker/compose/docker-compose.mariadb-tika.yml @@ -77,8 +77,8 @@ services: PAPERLESS_REDIS: redis://broker:6379 PAPERLESS_DBENGINE: mariadb PAPERLESS_DBHOST: db - PAPERLESS_DBUSER: paperless - PAPERLESS_DBPASSWORD: paperless + PAPERLESS_DBUSER: paperless # only needed if non-default username + PAPERLESS_DBPASS: paperless # only needed if non-default password PAPERLESS_DBPORT: 3306 PAPERLESS_TIKA_ENABLED: 1 PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 diff --git a/docker/compose/docker-compose.mariadb.yml b/docker/compose/docker-compose.mariadb.yml index 8cb452464..a18e0fb3e 100644 --- a/docker/compose/docker-compose.mariadb.yml +++ b/docker/compose/docker-compose.mariadb.yml @@ -71,8 +71,8 @@ services: PAPERLESS_REDIS: redis://broker:6379 PAPERLESS_DBENGINE: mariadb PAPERLESS_DBHOST: db - PAPERLESS_DBUSER: paperless - PAPERLESS_DBPASSWORD: paperless + PAPERLESS_DBUSER: paperless # only needed if non-default username + PAPERLESS_DBPASS: paperless # only needed if non-default password PAPERLESS_DBPORT: 3306 diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index d1107feca..f227e18d8 100755 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -137,8 +137,7 @@ initialize() { install_languages() { echo "Installing languages..." - local -r langs="$1" - read -ra langs <<<"$langs" + read -ra langs <<<"$1" # Check that it is not empty if [ ${#langs[@]} -eq 0 ]; then diff --git a/docs/administration.rst b/docs/administration.rst index ed2075a48..2984057ed 100644 --- a/docs/administration.rst +++ b/docs/administration.rst @@ -447,6 +447,14 @@ command: The command takes no arguments and processes all your mail accounts and rules. + .. note:: + + As of October 2022 Microsoft no longer supports IMAP authentication for Exchange + servers, thus Exchange is no longer supported until a solution is implemented in + the Python IMAP library used by Paperless. See `learn.microsoft.com`_ + +.. _learn.microsoft.com: https://learn.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/deprecation-of-basic-authentication-exchange-online + .. _utilities-archiver: Creating archived documents diff --git a/docs/advanced_usage.rst b/docs/advanced_usage.rst index eda2ca259..1fe3e3685 100644 --- a/docs/advanced_usage.rst +++ b/docs/advanced_usage.rst @@ -149,6 +149,9 @@ which will in turn call `pdf2pdfocr.py`_ on your document, which will then overwrite the file with an OCR'd version of the file and exit. At which point, the consumption process will begin with the newly modified file. +The script's stdout and stderr will be logged line by line to the webserver log, along +with the exit code of the script. + .. _pdf2pdfocr.py: https://github.com/LeoFCardoso/pdf2pdfocr .. _advanced-post_consume_script: @@ -178,6 +181,10 @@ example, you can take a look at `post-consumption-example.sh`_ in this project. The post consumption script cannot cancel the consumption process. +The script's stdout and stderr will be logged line by line to the webserver log, along +with the exit code of the script. + + Docker ------ Assumed you have ``/home/foo/paperless-ngx/scripts/post-consumption-example.sh``. @@ -417,3 +424,24 @@ For example, using Docker Compose: # ... volumes: - /path/to/my/scripts:/custom-cont-init.d:ro + +.. _advanced-mysql-caveats: + +MySQL Caveats +############# + +Case Sensitivity +================ + +The database interface does not provide a method to configure a MySQL database to +be case sensitive. This would prevent a user from creating a tag ``Name`` and ``NAME`` +as they are considered the same. + +Per Django documentation, to enable this requires manual intervention. To enable +case sensetive tables, you can execute the following command against each table: + +``ALTER TABLE CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`` + +You can also set the default for new tables (this does NOT affect existing tables) with: + +``ALTER DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;`` diff --git a/docs/changelog.md b/docs/changelog.md index 1caa00220..6bd488cca 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,7 +1,21 @@ # Changelog +## paperless-ngx 1.9.2 + +### Bug Fixes + +- Bugfix: Allow PAPERLESS_OCR_CLEAN=none [@shamoon](https://github.com/shamoon) ([#1670](https://github.com/paperless-ngx/paperless-ngx/pull/1670)) + +### All App Changes + +- Chore: Bumps version numbers to 1.9.2 [@stumpylog](https://github.com/stumpylog) ([#1666](https://github.com/paperless-ngx/paperless-ngx/pull/1666)) + ## paperless-ngx 1.9.1 +### Notes + +- Version 1.9.1 incorrectly displays the version string as 1.9.0 + ### Bug Fixes - Bugfix: Fixes missing OCR mode skip_noarchive [@stumpylog](https://github.com/stumpylog) ([#1645](https://github.com/paperless-ngx/paperless-ngx/pull/1645)) diff --git a/docs/configuration.rst b/docs/configuration.rst index f9c4f89cc..1684cc63e 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -38,8 +38,14 @@ PAPERLESS_REDIS= PAPERLESS_DBENGINE= Optional, gives the ability to choose Postgres or MariaDB for database engine. Available options are `postgresql` and `mariadb`. + Default is `postgresql`. + .. warning:: + + Using MariaDB comes with some caveats. See :ref:`advanced-mysql-caveats` for details. + + PAPERLESS_DBHOST= By default, sqlite is used as the database backend. This can be changed here. diff --git a/docs/setup.rst b/docs/setup.rst index 15f16d193..db96c6b58 100644 --- a/docs/setup.rst +++ b/docs/setup.rst @@ -648,13 +648,56 @@ Migration to paperless-ngx is then performed in a few simple steps: 10. Optionally, follow the instructions below to migrate your existing data to PostgreSQL. +Migrating from LinuxServer.io Docker Image +========================================== + +As with any upgrades and large changes, it is highly recommended to create a backup before +starting. This assumes the image was running using Docker Compose, but the instructions +are translatable to Docker commands as well. + +1. Stop and remove the paperless container +2. If using an external database, stop the container +3. Update Redis configuration + + a) If ``REDIS_URL`` is already set, change it to ``PAPERLESS_REDIS`` and continue + to step 4. + b) Otherwise, in the ``docker-compose.yml`` add a new service for Redis, + following `the example compose files `_ + c) Set the environment variable ``PAPERLESS_REDIS`` so it points to the new Redis container + +4. Update user mapping + + a) If set, change the environment variable ``PUID`` to ``USERMAP_UID`` + b) If set, change the environment variable ``PGID`` to ``USERMAP_GID`` + +5. Update configuration paths + + a) Set the environment variable ``PAPERLESS_DATA_DIR`` + to ``/config`` + +6. Update media paths + + a) Set the environment variable ``PAPERLESS_MEDIA_ROOT`` + to ``/data/media`` + +7. Update timezone + + a) Set the environment variable ``PAPERLESS_TIME_ZONE`` + to the same value as ``TZ`` + +8. Modify the ``image:`` to point to ``ghcr.io/paperless-ngx/paperless-ngx:latest`` or + a specific version if preferred. + +9. Start the containers as before, using ``docker-compose``. + .. _setup-sqlite_to_psql: -Moving data from SQLite to PostgreSQL -===================================== +Moving data from SQLite to PostgreSQL or MySQL/MariaDB +====================================================== -Moving your data from SQLite to PostgreSQL is done via executing a series of django -management commands as below. +Moving your data from SQLite to PostgreSQL or MySQL/MariaDB is done via executing a series of django +management commands as below. The commands below use PostgreSQL, but are applicable to MySQL/MariaDB +with the .. caution:: @@ -671,6 +714,11 @@ management commands as below. and filenames (1024 characters). If you have data in these fields that surpasses these limits, migration to PostgreSQL is not possible and will fail with an error. +.. warning:: + + MySQL is case insensitive by default, treating values like "Name" and "NAME" as identical. + See :ref:`advanced-mysql-caveats` for details. + 1. Stop paperless, if it is running. 2. Tell paperless to use PostgreSQL: diff --git a/docs/troubleshooting.rst b/docs/troubleshooting.rst index 2d10bb15f..0ef573805 100644 --- a/docs/troubleshooting.rst +++ b/docs/troubleshooting.rst @@ -317,3 +317,12 @@ Uploading or consuming multiple files at once results in many workers attempting Consider changing to the PostgreSQL database if you will be processing many documents at once often. Otherwise, try tweaking the ``PAPERLESS_DB_TIMEOUT`` setting to allow more time for the database to unlock. This may have minor performance implications. + + +gunicorn fails to start with "is not a valid port number" +######################################################### + +You are likely running using Kubernetes, which automatically creates an environment variable named `${serviceName}_PORT`. +This is the same environment variable which is used by Paperless to optionally change the port gunicorn listens on. + +To fix this, set `PAPERLESS_PORT` again to your desired port, or the default of 8000. diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf index daca389d1..0f38dd28f 100644 --- a/src-ui/messages.xlf +++ b/src-ui/messages.xlf @@ -1957,8 +1957,8 @@ 391 - - Redo OCR operation will begin in the background. + + Redo OCR operation will begin in the background. Close and re-open or reload this document after the operation has completed to see new content. src/app/components/document-detail/document-detail.component.ts 494 diff --git a/src-ui/src/app/components/app-frame/app-frame.component.html b/src-ui/src/app/components/app-frame/app-frame.component.html index 41bd50970..079c562b9 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.html +++ b/src-ui/src/app/components/app-frame/app-frame.component.html @@ -17,7 +17,7 @@ -