mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Added First-Time Step-by-Step procedure and CopyPaste lists of depeendencies to the docs
This commit is contained in:
		@@ -3,6 +3,9 @@
 | 
			
		||||
Paperless development
 | 
			
		||||
#####################
 | 
			
		||||
 | 
			
		||||
General information
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
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:
 | 
			
		||||
@@ -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.
 | 
			
		||||
    *   ``docker/`` - Files required to build the docker image.
 | 
			
		||||
 | 
			
		||||
2.  Install some dependencies.
 | 
			
		||||
Initial setup and first start 
 | 
			
		||||
=============================
 | 
			
		||||
 | 
			
		||||
    *   Python 3.6.
 | 
			
		||||
    *   All dependencies listed in the :ref:`Bare metal route <setup-bare_metal>`
 | 
			
		||||
    *   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,
 | 
			
		||||
        gotenberg and a postgresql server).
 | 
			
		||||
After you forked and cloned the code from github you need to perform a first-time setup. 
 | 
			
		||||
To do the setup you need to perform the steps from the following chapters in a certain order:
 | 
			
		||||
 | 
			
		||||
1. Install prerequisites + pipenv as mentioned in :ref:`Bare metal route <setup-bare_metal>`
 | 
			
		||||
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
 | 
			
		||||
====================
 | 
			
		||||
@@ -35,21 +85,21 @@ Back end development
 | 
			
		||||
The backend is a django application. I use PyCharm for development, but you can use whatever
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
launch configurations in your IDE:
 | 
			
		||||
 | 
			
		||||
*   python3 manage.py runserver
 | 
			
		||||
*   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
 | 
			
		||||
them running.
 | 
			
		||||
To start them all:
 | 
			
		||||
 | 
			
		||||
.. code:: shell-session
 | 
			
		||||
 | 
			
		||||
    python3 manage.py runserver & python3 manage.py document_consumer & python3 manage.py qcluster
 | 
			
		||||
 | 
			
		||||
Testing and code style:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -284,6 +284,12 @@ writing. Windows is not and will never be supported.
 | 
			
		||||
    *   ``libmagic-dev`` 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.
 | 
			
		||||
 | 
			
		||||
    *   ``unpaper``
 | 
			
		||||
@@ -297,6 +303,12 @@ writing. Windows is not and will never be supported.
 | 
			
		||||
    *   ``tesseract-ocr`` >= 4.0.0 for OCR
 | 
			
		||||
    *   ``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:
 | 
			
		||||
 | 
			
		||||
    *   ``libatlas-base-dev``
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user