Added First-Time Step-by-Step procedure and CopyPaste lists of depeendencies to the docs

This commit is contained in:
Sebastian König 2021-02-26 09:49:36 +01:00
parent 170ddbc76f
commit fd2cbc13ff
2 changed files with 74 additions and 12 deletions

View File

@ -3,6 +3,9 @@
Paperless development Paperless development
##################### #####################
General information
===================
This section describes the steps you need to take to start development on paperless-ng. This section describes the steps you need to take to start development on paperless-ng.
1. Check out the source from github. The repository is organized in the following way: 1. Check out the source from github. The repository is organized in the following way:
@ -21,13 +24,60 @@ This section describes the steps you need to take to start development on paperl
* ``scripts/`` - Various scripts that help with different parts of development. * ``scripts/`` - Various scripts that help with different parts of development.
* ``docker/`` - Files required to build the docker image. * ``docker/`` - Files required to build the docker image.
2. Install some dependencies. Initial setup and first start
=============================
* Python 3.6. After you forked and cloned the code from github you need to perform a first-time setup.
* All dependencies listed in the :ref:`Bare metal route <setup-bare_metal>` To do the setup you need to perform the steps from the following chapters in a certain order:
* redis. You can either install redis or use the included scripts/start-services.sh
to use docker to fire up a redis instance (and some other services such as tika, 1. Install prerequisites + pipenv as mentioned in :ref:`Bare metal route <setup-bare_metal>`
gotenberg and a postgresql server). 2. Copy ``paperless.conf.example`` to ``paperless.conf`` and enable debug mode.
3. Install the Angular CLI interface:
.. code:: shell-session
$ npm install -g @angular/cli
4. Create ``consume`` and ``media`` folders in the cloned root folder.
.. code:: shell-session
mkdir -p consume media
5. You can now either ... :
* install redis or
* use the included scripts/start-services.sh to use docker to fire up a redis instance (and some other services such as tika, gotenberg and a postgresql server) or
* spin up a bare redis container
.. code:: shell-session
docker run -d -p 6379:6379 -restart unless-stopped redis:latest
6. Install the python dependencies by performing in the src/ directory.
.. code:: shell-session
pipenv install --dev
7. Generate the static UI so you can perform a login to get session that is required for frontend development (this needs to be done one time only).
.. code:: shell-session
pipenv shell
cd /src-ui && ng build --prod
8. Apply migrations and create a superuser for your dev instance:
.. code:: shell-session
python3 manage.py migrate
python3 manage.py createsuperuser
9. Now spin up the dev backend. Depending on which part of paperless you're developing for, you need to have some or all of them running.
.. code:: shell-session
python3 manage.py runserver & python3 manage.py document_consumer & python3 manage.py qcluster
10. Login with the superuser credentials provided in step 8 at ``http://localhost:8000`` to create a session that enables you to use the backend.
Backend development environment is now ready, to start Frontend development go to ``/src-ui`` and run ``ng serve``. From there you can use ``http://localhost:4200`` for a preview.
Back end development Back end development
==================== ====================
@ -35,21 +85,21 @@ Back end development
The backend is a django application. I use PyCharm for development, but you can use whatever The backend is a django application. I use PyCharm for development, but you can use whatever
you want. you want.
Install the python dependencies by performing ``pipenv install --dev`` in the src/ directory.
This will also create a virtual environment, which you can enter with ``pipenv shell`` or This will also create a virtual environment, which you can enter with ``pipenv shell`` or
execute one-shot commands in with ``pipenv run``. execute one-shot commands in with ``pipenv run``.
Copy ``paperless.conf.example`` to ``paperless.conf`` and enable debug mode.
Configure the IDE to use the src/ folder as the base source folder. Configure the following Configure the IDE to use the src/ folder as the base source folder. Configure the following
launch configurations in your IDE: launch configurations in your IDE:
* python3 manage.py runserver * python3 manage.py runserver
* python3 manage.py qcluster * python3 manage.py qcluster
* python3 manage.py consumer * python3 manage.py document_consumer
Depending on which part of paperless you're developing for, you need to have some or all of To start them all:
them running.
.. code:: shell-session
python3 manage.py runserver & python3 manage.py document_consumer & python3 manage.py qcluster
Testing and code style: Testing and code style:

View File

@ -284,6 +284,12 @@ writing. Windows is not and will never be supported.
* ``libmagic-dev`` for mime type detection * ``libmagic-dev`` for mime type detection
* ``mime-support`` for mime type detection * ``mime-support`` for mime type detection
Use this list for your preferred package management:
.. code::
python3 python3-pip python3-dev imagemagick fonts-liberation optipng gnupg libpq-dev libmagic-dev mime-support
These dependencies are required for OCRmyPDF, which is used for text recognition. These dependencies are required for OCRmyPDF, which is used for text recognition.
* ``unpaper`` * ``unpaper``
@ -297,6 +303,12 @@ writing. Windows is not and will never be supported.
* ``tesseract-ocr`` >= 4.0.0 for OCR * ``tesseract-ocr`` >= 4.0.0 for OCR
* ``tesseract-ocr`` language packs (``tesseract-ocr-eng``, ``tesseract-ocr-deu``, etc) * ``tesseract-ocr`` language packs (``tesseract-ocr-eng``, ``tesseract-ocr-deu``, etc)
Use this list for your preferred package management:
.. code::
unpaper ghostscript icc-profiles-free qpdf liblept5 libxml2 pngquant zlib1g tesseract-ocr
On Raspberry Pi, these libraries are required as well: On Raspberry Pi, these libraries are required as well:
* ``libatlas-base-dev`` * ``libatlas-base-dev``