!!! warning
- Using MariaDB comes with some caveats. See
- `advanced-mysql-caveats`{.interpreted-text role="ref"} for details.
+ Using MariaDB comes with some caveats. See [MySQL Caveats](advanced_usage#mysql-caveats).
`PAPERLESS_DBHOST=<hostname>`
`PAPERLESS_FILENAME_FORMAT=<format>`
: Changes the filenames paperless uses to store documents in the media
-directory. See `advanced-file_name_handling`{.interpreted-text
-role="ref"} for details.
+directory. See [File name handling](advanced_usage#file_name_handling) for details.
Default is none, which disables this feature.
: Tells paperless to replace placeholders in
[PAPERLESS_FILENAME_FORMAT]{.title-ref} that would resolve to
'none' to be omitted from the resulting filename. This also holds
-true for directory names. See
-`advanced-file_name_handling`{.interpreted-text role="ref"} for
+true for directory names. See [File name handling](advanced_usage#file_name_handling) for
details.
Defaults to [false]{.title-ref} which disables this feature.
Make sure to use the correct format [PAPERLESS_TIKA_ENABLED =
1]{.title-ref} so python_dotenv can parse the statement correctly.
-## Software tweaks
+## Software tweaks {#software_tweaks}
`PAPERLESS_TASK_WORKERS=<num>`
: After a document is consumed, Paperless can trigger an arbitrary
script if you like. This script will be passed a number of arguments
-for you to work with. For more information, take a look at
-`advanced-post_consume_script`{.interpreted-text role="ref"}.
+for you to work with. For more information, take a look at [Post-consumption script](advanced_usage#post_consume_script).
The default is blank, which means nothing will be executed.
[Flower](https://flower.readthedocs.io/en/latest/index.html) will be
started by the container.
- You can read more about this in the
- `advanced setup <advanced-celery-monitoring>`{.interpreted-text
- role="ref"} documentation.
+ You can read more about this in the [advanced documentation](advanced#celery-monitoring).
## Update Checking {#update-checking}
- By default, paperless uses the internal ID of each document as its
filename. This might not be very convenient for export. However, you
can adjust the way files are stored in paperless by
- `configuring the filename format <advanced-file_name_handling>`{.interpreted-text
- role="ref"}.
-- `The exporter <utilities-exporter>`{.interpreted-text role="ref"} is
+ [configuring the filename format](advanced_usage#file_name_handling).
+- [The exporter](administration#exporter) is
another easy way to get your files out of paperless with reasonable
file names.
are processed with OCR and converted into PDF documents.
- Plain text documents are supported as well and are added verbatim to
paperless.
-- With the optional Tika integration enabled (see
- `Configuration <configuration-tika>`{.interpreted-text role="ref"}),
+- With the optional Tika integration enabled (see [Tika configuration](configuration#tika),
Paperless also supports various Office documents (.docx, .doc, odt,
.ppt, .pptx, .odp, .xls, .xlsx, .ods).
!!! note
You can adjust some of the settings so that paperless uses less
- processing power. See `setup-less_powerful_devices`{.interpreted-text
- role="ref"} for details.
+ processing power. See [setup](setup#less_powerful_devices) for details.
### _How do I install paperless-ngx on Raspberry Pi?_
### _How do I proxy this with NGINX?_
-**A:** See `here <setup-nginx>`{.interpreted-text role="ref"}.
+**A:** See [here](setup#nginx).
### _How do I get WebSocket support with Apache mod_wsgi_?
ask you for a couple configuration options, download and create the
necessary configuration files, pull the docker image, start paperless
and create your user account. This script essentially performs all the
-steps described in `setup-docker_hub`{.interpreted-text role="ref"}
-automatically.
+steps described in [Docker setup](#docker_hub) automatically.
1. Make sure that docker and docker-compose are installed.
### From GHCR / Docker Hub {#docker_hub}
-1. Login with your user and create a folder in your home-directory
- [mkdir -v \~/paperless-ngx]{.title-ref} to have a place for your
+1. Login with your user and create a folder in your home-directory to have a place for your
configuration files and consumption directory.
+ ```shell-session
+ $ mkdir -v ~/paperless-ngx
+ ```
+
2. Go to the [/docker/compose directory on the project
page](https://github.com/paperless-ngx/paperless-ngx/tree/master/docker/compose)
- and download one of the [docker-compose.\*.yml]{.title-ref} files,
+ and download one of the `docker-compose.*.yml` files,
depending on which database backend you want to use. Rename this
- file to [docker-compose.yml]{.title-ref}. If you want to enable
+ file to `docker-compose.*.yml`. If you want to enable
optional support for Office documents, download a file with
- [-tika]{.title-ref} in the file name. Download the
+ `-tika` in the file name. Download the
`docker-compose.env` file and the `.env` file as well and store them
in the same directory.
If you want to use the included `docker-compose.*.yml` file, you
need to have at least Docker version **17.09.0** and docker-compose
- version **1.17.0**. To check do: [docker-compose -v]{.title-ref} or
- [docker -v]{.title-ref}
+ version **1.17.0**. To check do: `docker-compose -v` or
+ `docker -v`
- See the [Docker installation guide]() on how to install the current
+ See the [Docker installation guide](https://docs.docker.com/engine/install/) on how to install the current
version of Docker for your operating system or Linux distribution of
choice. To get the latest version of docker-compose, follow the
- [docker-compose installation guide]() if your package repository
+ [docker-compose installation guide](https://docs.docker.com/compose/install/linux/) if your package repository
doesn't include it.
4. Modify `docker-compose.yml` to your preferences. You may want to
change the path to the consumption directory. Find the line that
specifies where to mount the consumption directory:
- ```
+ ```yaml
- ./consume:/usr/src/paperless/consume
```
Replace the part BEFORE the colon with a local directory of your
choice:
- ```
+ ```yaml
- /home/jonaswinkler/paperless-inbox:/usr/src/paperless/consume
```
You may also need to change the default port that the webserver will
use from the default (8000):
- > ```
- > ports:
- > - 8000:8000
- > ```
+ ```yaml
+ ports:
+ - 8000:8000
+ ```
Replace the part BEFORE the colon with a port of your choice:
- > ```
- > ports:
- > - 8010:8000
- > ```
+ ```yaml
+ ports:
+ - 8010:8000
+ ```
Don't change the part after the colon or edit other lines that
refer to port 8000. Modifying the part before the colon will map
machine have write access to the consumption directory. If your UID
and GID on the host system is 1000 (the default for the first normal
user on most systems), it will work out of the box without any
- modifications. [id "username"]{.title-ref} to check.
+ modifications. `id "username"` to check.
!!! note
You can copy any setting from the file `paperless.conf.example` and
- paste it here. Have a look at `configuration`{.interpreted-text
- role="ref"} to see what's available.
+ paste it here. Have a look at [configuration](/configuration] to see what's available.
!!! note
You can utilize Docker secrets for some configuration settings by
- appending [\_FILE]{.title-ref} to some configuration values. This is
+ appending `_FILE` to some configuration values. This is
supported currently only by:
- - PAPERLESS_DBUSER
- - PAPERLESS_DBPASS
- - PAPERLESS_SECRET_KEY
- - PAPERLESS_AUTO_LOGIN_USERNAME
- - PAPERLESS_ADMIN_USER
- - PAPERLESS_ADMIN_MAIL
- - PAPERLESS_ADMIN_PASSWORD
+ - PAPERLESS_DBUSER
+ - PAPERLESS_DBPASS
+ - PAPERLESS_SECRET_KEY
+ - PAPERLESS_AUTO_LOGIN_USERNAME
+ - PAPERLESS_ADMIN_USER
+ - PAPERLESS_ADMIN_MAIL
+ - PAPERLESS_ADMIN_PASSWORD
!!! warning
certain, more updated software. If you want to build these images
your self, that is possible, but beyond the scope of these steps.
-4. Follow steps 3 to 8 of `setup-docker_hub`{.interpreted-text
+4. Follow steps 3 to 8 of [Docker Setup](setup#docker_hub)
role="ref"}. When asked to run `docker-compose pull` to pull the
image, do
by yourself. Extract the archive to a place from where you wish to
execute it, such as `/opt/paperless`.
-5. Configure paperless. See `configuration`{.interpreted-text
- role="ref"} for details. Edit the included `paperless.conf` and
- adjust the settings to your needs. Required settings for getting
+5. Configure paperless. See [configuration](configuration) for details.
+ Edit the included `paperless.conf` and adjust the settings to your
+ needs. Required settings for getting
paperless running are:
- `PAPERLESS_REDIS` should point to your redis server, such as
allows third parties to forge authentication credentials.
- `PAPERLESS_URL` if you are behind a reverse proxy. This should
point to your domain. Please see
- `configuration`{.interpreted-text role="ref"} for more
+ [configuration](configuration) for more
information.
Many more adjustments can be made to paperless, especially the OCR
not available for most distributions.
15. Optional: If using the NLTK machine learning processing (see
- `PAPERLESS_ENABLE_NLTK` in `configuration`{.interpreted-text
- role="ref"} for details), download the NLTK data for the Snowball
+ `PAPERLESS_ENABLE_NLTK` in [configuration](configuration#software_tweaks) for details),
+ download the NLTK data for the Snowball
Stemmer, Stopwords and Punkt tokenizer to your
`PAPERLESS_DATA_DIR/nltk`. Refer to the [NLTK
instructions](https://www.nltk.org/data.html) for details on how to
- Read the [changelog](/changelog) and
take note of breaking changes.
- You should decide if you want to stick with SQLite or want to
- migrate your database to PostgreSQL. See
- `setup-sqlite_to_psql`{.interpreted-text role="ref"} for details on
+ migrate your database to PostgreSQL. See [documentation](#sqlite_to_psql)
+ for details on
how to move your data from SQLite to PostgreSQL. Both work fine with
paperless. However, if you already have a database server running
for other services, you might as well use it for paperless as well.
after you migrated your existing SQLite database.
5. Adjust `docker-compose.yml` and `docker-compose.env` to your needs.
- See `setup-docker_hub`{.interpreted-text role="ref"} for details on
+ See [Docker setup](setup#docker_hub) details on
which edits are advised.
6. [Update paperless.](/administration#updating)
!!! warning
MySQL is case insensitive by default, treating values like "Name" and
- "NAME" as identical. See `advanced-mysql-caveats`{.interpreted-text
- role="ref"} for details.
+ "NAME" as identical. See [MySQL caveats](advanced##mysql-caveats) for details.
+
+!!! warning
+
+ MySQL also enforces limits on maximum lengths, but does so differently than
+ PostgreSQL. It may not be possible to migrate to MySQL due to this.
1. Stop paperless, if it is running.
file to `docker-compose.yml`. Remember to adjust the consumption
directory, if necessary.
b) Without docker, configure the database in your `paperless.conf`
- file. See `configuration`{.interpreted-text role="ref"} for
+ file. See [configuration](configuration) for
details.
3. Open a shell and initialize the database:
more advanced language processing, which can take more memory and
processing time.
-For details, refer to `configuration`{.interpreted-text role="ref"}.
+For details, refer to [configuration](configuration).
!!! note
```
The `PAPERLESS_URL` configuration variable is also required when using a
-reverse proxy. Please refer to the
-`hosting-and-security`{.interpreted-text role="ref"} docs.
+reverse proxy. Please refer to the [hosting and security](configuration#hosting-and-security) docs.
Also read
[this](https://channels.readthedocs.io/en/stable/deploying.html#nginx-supervisor-ubuntu),