User Tools

This is an old revision of the document!


Paperless NGX

NOTE: this is only a STUB to be completed in the future.

Paperless NGX

Installation

Paperless-NGX can be installed on bare-metal, but i find the container approach recomended.

So first of all, as usual, create the dedicated user:

useradd -d /data/daemons/paperless -m paperless
mkdir /data/paperless
chown paperless:paperless /data/paperless

and, as user paperless, create the /data/daemons/paperless/docker-compose.yml file:

docker-compose.yml
services:
  broker:
    image: docker.io/library/redis:8
    restart: unless-stopped
    volumes:
      - /data/paperless/redisdata:/data
    network:
      - paperless-net
  db:
    image: docker.io/library/postgres:18
    restart: unless-stopped
    volumes:
      - /data/paperless/pgdata:/var/lib/postgresql
    environment:
      POSTGRES_DB: paperless
      POSTGRES_USER: paperless
      POSTGRES_PASSWORD: paperless
    network:
      - paperless-net
  webserver:
    image: ghcr.io/paperless-ngx/paperless-ngx:latest
    restart: unless-stopped
    depends_on:
      - db
      - broker
    ports:
      - "2276:8000"
    volumes:
      - /data/paperless/data:/usr/src/paperless/data
      - /data/paperless/media:/usr/src/paperless/media
      - /data/paperless/export:/usr/src/paperless/export
      - /data/paperless/consume:/usr/src/paperless/consume
    environment:
      PAPERLESS_URL: https://docs.mydomain.com
      PAPERLESS_SECRET_KEY: very_long_random_key_sequence
      PAPERLESS_TIME_ZONE: Europe/Bruxelles
      PAPERLESS_OCR_LANGUAGE: eng
    environment:
      PAPERLESS_REDIS: redis://broker:6379
      PAPERLESS_DBHOST: db
    network:
      - paperless-net

networks:
  paperless-net: {}

Adapt the paths and the port to your needs (2276).

Now pull it:

su - stirlingpdf
podman compose pull

Reverse Proxy

The following NGINX configuration file is the base paperless-ngx. Consider that it must be hosted on a subdomain.

paperless.conf
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
        server_name docs.mydomain.com;
        listen 443 ssl;
        listen 8443 ssl;
        http2 on;

        access_log /var/log/nginx/docs.mydomain.com_access_log main;
        error_log /var/log/nginx/docs.mydomain.com_error_log info;

        proxy_buffering off;

    location / {
                proxy_pass http://127.0.0.1:2276/;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";

                proxy_redirect off;
                proxy_set_header Host $host:$server_port;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Host $server_name;
                proxy_set_header X-Forwarded-Proto $scheme;
                add_header Referrer-Policy "strict-origin-when-cross-origin";
    }

    include com.mydomain/certbot.conf;
}

See The Reverse Proxy concept

Autostart

To start it, and set it up on boot, as usual follow my indications Using Containers on Gentoo, so link the user-containers init script:

ln -s /etc/init.d/user-containers /etc/init.d/user-containers.paperless

and create the following config file:

/etc/conf.d/user-containers.paperless
USER=paperless
DESCRIPTION="The document manager"

Add the service to the default runlevel and start it now:

rc-update add user-containers.paperless default
rc-service user-containers.paperless start